webForumDet fria alternativet

@@identity i SQL Server 2005?

6 svar · 406 visningar · startad av CatZ

CatZMedlem sedan jan. 20022 341 inlägg
#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?

@ndersMedlem sedan juni 200026 914 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.
CatZMedlem sedan jan. 20022 341 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

doggelitoMedlem sedan juni 20003 100 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)

:)

CatZMedlem sedan jan. 20022 341 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

doggelitoMedlem sedan juni 20003 100 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)
CatZMedlem sedan jan. 20022 341 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

131 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
127 ms — hämta tråd, inlägg och bilagor (db)