09. juni 2006 - 14:47Der er
15 kommentarer og 2 løsninger
@@IDENTITY problem
Hej.
Jeg sidder med et ordrescript der skal skrive en ordre ind i min database. Problemet er @@IDENTITY som jeg trækker i min InsertOrder, som jeg ikke kan få smidt ind i InsertItem metodens "ordernum". Som jeg gør det nu skulle oNum gerne være lig med @@IDENTITY og så skrives ind i ”ordernum” kolonnen, men jeg får fejlen:
"INSERT INTO-sætningen indeholder det ukendte feltnavn "ordernum". Kontroller, at du har skrevet navnet korrekt, og forsøg derefter at udføre handlingen igen."
Min kode:
Public Shared Function WriteOrder( _ ByVal o As Order) As Boolean Dim cs As String
cs = WebConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString con = New OleDbConnection(cs)
oNum = InsertOrder(o) For Each item As CartItem _ In o.Cart.GetItems() InsertItem(item, oNum) Next tran.Commit() con.Close() Return True Catch ex As Exception Return False End Try End Function
Private Shared Function InsertOrder( _ ByVal o As Order) As Integer Dim command As New OleDbCommand() command.Connection = con command.Transaction = tran command.CommandText = "INSERT INTO Orders " _ + "(orderdate, custemail, " _ + "subtotal, salestax, " _ + "shipping) " _ + "VALUES (@OrderDate, @Custemail, " _ + "@subtotal, @salestax, " _ + "@shipping)" command.Parameters.AddWithValue( _ "@OrderDate", DateTime.Now) command.Parameters.AddWithValue( _ "@Custemail", o.Cust.Email) command.Parameters.AddWithValue( _ "@subtotal", o.SubTotal) command.Parameters.AddWithValue( _ "@salestax", o.SalesTax) command.Parameters.AddWithValue( _ "@shipping", o.Shipping) command.ExecuteNonQuery() command.CommandText = "SELECT @@IDENTITY" Return Convert.ToInt32(command.ExecuteScalar()) End Function
Private Shared Sub InsertItem( _ ByVal item As CartItem, _ ByVal oNum As Integer)
Using connection As New OleDbConnection(WebConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
System.Data.OleDb.OleDbException: INSERT INTO-sætningen indeholder det ukendte feltnavn "ordernum". Kontroller, at du har skrevet navnet korrekt, og forsøg derefter at udføre handlingen igen. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.OleDb.OleDbCommand.ExecuteReader() at OrderDB.InsertItem(CartItem item, Int32 oNum)
-mundi- ja, ordernum er fremmednøgle i min OrderItems-tabel og primær i min Orders-tabel. I min Orders-tabel er den "autonummerering", og i OrderItems er den af datatypen "tal".
arne_v - jo, fejlen bliver smidt som en exception når den afvikler InsertItem. Kan jeg placere nogle breakpoints bestemte steder for at hjælpe på det?
Og hvis jeg laver en response.write(oNum) i starten af min InsertItem metode, udskriver den ganske rigtigt et højeste ordernum fra min "Orders"-tabel, så den del virker - Men underligt nok ser det ud som om den ikke tror der findes en "ordernum" kolonne i OrderItems, som -mundi- er inde på ...
Det virker, bortset fra at hver ordre indskrives to gange i både OrderItems og Orders. De har fortløbende "ordernum", eksempelvis 1 i første post og 2 i næste.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.