0

私はVBA/FK/SQLサーバーをオールインワンで使用している初心者です。私はExcelで簡単な発注書のユーザーインターフェイスを作成しています。

2つのテーブルを作成しました。

CREATE TABLE [dbo].[PurchaseOrder](
[PKPurchaseOrderID] [bigint] IDENTITY(1,1) NOT NULL,
[PurchaseOrderNumber] [bigint] NULL,
[PurchaseOrderDate] [date] NULL,
[PurchaseOrderTime] [int] NULL,
[PurchaseOrderSupplierID] [nvarchar](50) NULL,
[ShipToA1] [nvarchar](50) NULL,
[ShipToA2] [nvarchar](50) NULL,
[ShipToA3] [nvarchar](50) NULL,
[ShipToA4] [nvarchar](50) NULL,
 CONSTRAINT [PK_PurchaseOrder] PRIMARY KEY CLUSTERED 
(
    [PKPurchaseOrderID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,     
ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE [dbo].[PurchaseOrderLines](
[PKPurchaseOrderLineID] [bigint] IDENTITY(1,1) NOT NULL,
[FKPurchaseOrderID] [bigint] NULL,
[Quantity] [smallint] NULL,
[Item] [nchar](25) NULL,
[Description] [nvarchar](50) NULL,
[siteID] [nchar](10) NULL,
[UnitPrice] [money] NULL,
[LineTotal] [money] NULL,

 CONSTRAINT [PK_PurchaseOrderLines] PRIMARY KEY CLUSTERED 

(

    [PKPurchaseOrderLineID] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]



ALTER TABLE [dbo].[PurchaseOrderLines]  WITH CHECK ADD  CONSTRAINT 
[FK_PurchaseOrderLines_PurchaseOrder] FOREIGN KEY([FKPurchaseOrderID])

REFERENCES [dbo].[PurchaseOrder] ([PKPurchaseOrderID])


ALTER TABLE [dbo].[PurchaseOrderLines] CHECK CONSTRAINT 
[FK_PurchaseOrderLines_PurchaseOrder]

GO

ユーザーがボタンをクリックしたときにバックグラウンドでそれを実現したいのですが、両方のテーブルが更新されます。

PurchaseOrderテーブルで作成された新しい行をPurchaseorderLineテーブルのFKにリンクする方法がわかりません。

シングルユーザーインターフェイスで何をする予定ですか:

  1. 新規注文を挿入
  2. 新しい注文明細テーブルのFKとしてMax(PKPurchaseOrderID)を使用します。

複数のユーザーが同時に注文を処理/送信している場合、現在挿入されている注文ID(PKPurchaseOrderID)を確認するにはどうすればよいですか。プランを使用すると、注文明細が別の注文に割り当てられる可能性があります。例えば

お知らせ下さい。

SQLServer2008とExcel2007/2010を使用しています

どうもありがとう

4

1 に答える 1

1

新しい行を挿入してIDを返すストアドプロシージャを作成しますSCOPE_IDENTITY()

これは、SQLServerのさまざまな「ID」メソッドに関する適切な記事です。

http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/

于 2012-05-28T11:42:32.953 に答える