2009-08-09 8 views
1

In meiner Visual Basic-ASP.NET-Webseite Codebehind Visual Studio   zurückgeben, rufe ich eine Add-Routine in einem SQL-Tableadapter wie folgt auf.ASP.NET TableAdapter-Einfügung, die nicht den richtigen Identitätswert

NewLabID = LabItem.AddLaborItem(ThisWONum, TechID, DateTime.Now, DateTime.Now, "Working", ""); 

Der Datensatz hinzugefügt wird, aber keine ‚NewLabID‘ Rückkehr 1 jedes Mal, nicht die tatsächliche neue Labid (Labid als int/Identität definiert ist). Der automatisch generierte Code einfügen Befehl

INSERT INTO [LaborDetail] ([WONum], [TechID], [StartDate], [StopDate], [OtherType], [OtherDesc]) 
VALUES (@WONum, @TechID, @StartDate, @StopDate, @OtherType, @OtherDesc); 
SELECT LabID FROM LaborDetail WHERE (LabID = SCOPE_IDENTITY()) 

und der automatisch generierten Code, der nennt dies:

returnValue = command.ExecuteNonQuery(); 

mit dem Debugger durch diesen etwas treten, return ist immer 1. Soll nicht der obige Befehl gibt die neue Identitätsfeldwert?

Antwort

3

ExecuteNonQuery gibt die Anzahl der betroffenen Zeilen zurück. Sie werden stattdessen ExecuteScalar() verwenden.

+0

Danke - aber wie bekomme ich asp.net, um ExecuteScalar anstelle von ExecuteNonQuery zu generieren? Der automatisch generierte Befehl ist eindeutig darauf ausgelegt, die neue ID zurückzugeben. – dsteele

+1

OK, ich habe es - ich musste die ExecuteMode-Eigenschaft der Abfrage im Tabellenadapter ändern. – dsteele

+0

Sie haben mich dazu geschlagen. Schön, dass es für dich geklappt hat. – Tchami

Verwandte Themen