webForumDet fria alternativet
Logga in / Bli medlem

@@identity i SQL Server 2005?

Databaser & SQL

6 svar · 406 visningar · startad av CatZ

Medlem sedan jan. 20022 440 inlägg
Trådstart#1

Har följande kod:

strSQL = " INSERT INTO tblCustomers(custFirst, custLast, custCompany, custEmail, " _
& " custAdr1, custAdr2, custZip, custCity, custState, countryID) " _
& " VALUES( " _
& " '" & strFirstName 	& "', " _
& " '" & strLastName  	& "', " _
& " '" & strCompany	 	& "', " _
& " '" & strEmail 	 	& "', " _
& " '" & strAdress1 	& "', " _
& " '" & strAdress2 	& "', " _
& "  " & intZip 		& ", " _
& " '" & strSuburb 		& "', " _
& " '" & strState 		& "', " _
& "  " & intCountryID 	& ") "

objConn.Execute strSQL,,128
Set objRS = objConn.Execute("SELECT @@IDENTITY")
intCustomerID = objRS(0)

strSQL = " INSERT INTO tblOrders " _
   & "(orderDate, custID) " _
	& "VALUES ( " _
	& " #" & now() 			& "#, " _
	& "  " & intCustomerID  	& ") " _
	& " SELECT @@IDENTITY"
	
objConn.Execute strSQL,,128
intOrderID = objRS(0)

strSQL = " INSERT INTO tblOrderDetails " _
   & " (orderID, licenseID) " _
	& " VALUES (" & intOrderID	& ", " & intLicenseID 	& ") "
	
objConn.Execute strSQL,,128

Ger följande fel...

Microsoft OLE DB Provider for SQL Server error '80040e14'

The name "#29" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.

/purchase.asp, line 236

Rad 236 är den sista objConn.Execute strSQL,,128 Jag fattar ingenting. Någon som har en aning?

Medlem sedan juni 200032 967 inlägg
#2
  1. Du skall inte använda brädgårdar runt datum. Apostrofer gäller.
  2. Visa alltid de färdiga SQL-frågorna. Vi kan inte gissa vad alla dina variabler innehåller.
Medlem sedan jan. 20022 440 inlägg
#3

Såhär ser den frågan ut när jag skriver ut den.

Såhär ser det ut då

INSERT INTO tblCustomers(custFirst, custLast, custCompany, custEmail, custAdr1, custAdr2, custZip, custCity, custState, countryID) VALUES( 'Egon', 'Henriksson', 'Ljungsåsa HMB', 'mejlgard-forum@yahoo.se', 'Köpmannagatan 25 A', '', 36030, 'Lammhult', 'Småland', 1)

INSERT INTO tblOrders(orderDate, custID) VALUES (29/05/2006 1:44:28 PM, 24)

Microsoft OLE DB Provider for SQL Server error '80040e14'

Incorrect syntax near '1'.

/purchase.asp, line 237

Jag fattar inte varför det inte görs någon insert i tblOrders. Det ser ju helt korrekt ut!! Raden som påstås vara fel är ju den raden som exekverar insert into tblOrders

Medlem sedan juni 20003 076 inlägg
#4

Som @nders skriver så ska du ha apostrofer runt datum så att det blir:

INSERT INTO tblOrders(orderDate, custID) VALUES ('29/05/2006 1:44:28 PM', 24)

:)

Medlem sedan jan. 20022 440 inlägg
#5

Då blir det genast felmeddelandet

Microsoft OLE DB Provider for SQL Server error '80040e07'

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

/purchase.asp, line 235

Medlem sedan juni 20003 076 inlägg
#6

Hmm, jag vet faktiskt inte riktigt vad det betyder!
Dock, om du bara ska inserta aktuellt datum så är det onödigt att hämta datumet via vb-script, låt sqlservern sköta det istället:

INSERT INTO tblOrders(orderDate, custID) VALUES (getDate(), 24)
Medlem sedan jan. 20022 440 inlägg
#7

getDate() Fungerar otroligt mycket bättre, jag var helt korkad när jag ville sätta in now() direkt i databasen. Testade att ange now() i en variabel innan själva insättningen och då fungerar det kanon.

Har precis gått över till SQL server 2005 och ska så småningom använda mig av stored procedures men jag tänkte lära mig skillnaderna först :)

Tack för hjälpen dogge! :bire

274 ms totalt · 4 externa anrop · v20260731065814-full.7d626504
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
147 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)