0

下午好所有指定的參數太多,錯誤:從ASP.NET插入值時,SQL Server的

我有一個包含20個文本框的部件號和其他20量嚮導控制。我想要的部件號和數量加載下表爲:

USE [Diel_inventory] 
GO 
/****** Object: Table [dbo].[QUOTEDETAILPARTS] Script Date: 05/09/2010 16:26:54 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[QUOTEDETAILPARTS](
[QuoteDetailPartID] [int] IDENTITY(1,1) NOT NULL, 
[QuoteDetailID] [int] NOT NULL, 
[PartNumber] [float] NULL, 
[Quantity] [int] NULL, 
CONSTRAINT [pkQuoteDetailPartID] PRIMARY KEY CLUSTERED 
(
[QuoteDetailPartID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 
ALTER TABLE [dbo].[QUOTEDETAILPARTS] WITH CHECK ADD CONSTRAINT [fkQuoteDetailID] FOREIGN KEY([QuoteDetailID]) 
REFERENCES [dbo].[QUOTEDETAIL] ([ID]) 
ON UPDATE CASCADE 
ON DELETE CASCADE 
GO 

下面是從我的存儲過程的代碼段用於此插入:

set @ID=scope_identity() 

Insert into dbo.QuoteDetailParts 
(QuoteDetailPartID, QuoteDetailID, PartNumber, Quantity) 
values (@ID, @QuoteDetailPartID, @PartNumber, @Quantity) 

當我運行ASPX頁面上,我收到一個錯誤,有爲我的存儲過程指定的參數太多。我明白爲什麼我得到錯誤,給出了上面的表格佈局。但是,在構建插入語法時,我需要幫助才能在所有20個「零件編號」和「數量」字段對中查找值。

感謝, 希德

回答

2

QuoteDetailPartID是標識字段 - 你不能插入值的標識字段(除非你明確地啓用 - 只有這樣做,如果你真的真的必須)。

你應該改變你的存儲過程使用方法:

INSERT INTO dbo.QuoteDetailParts(QuoteDetailID, PartNumber, Quantity) 
VALUES(@QuoteDetailID, @PartNumber, @Quantity) 

然後,您可以通過檢查SCOPE_IDENTITY()函數返回新插入的QuoteDetailPartID

SET @QuoteDetailPartID = SCOPE_IDENTITY() 

我不會讓你存儲進程「尋找」二十個字段 - 在你的嚮導邏輯,C#或VB.NET代碼中執行該操作,然後調用存儲過程以根據需要插入單個QuoteDetailPart(可能只有3個之後要插入的細節部分全部)