webForumDet fria alternativet

Hjälp med INSERT!

27 svar · 679 visningar · startad av Mika3l

Mika3lMedlem sedan nov. 20018 492 inlägg
#1

Ska lägga till info i en databas men jag får felmeddelandet Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i INSERT INTO-uttryck..

Kod:

SQL = "INSERT INTO medlemar (anvnamn,losen,fnamn,enamn,regdatum,typ,status,antalinlagg.email,icq,msn,fodd,ort,yrke-titel,perstext,intressen,favoritsport,signatur) VALUES('" & Trim(Request.Form("anvnamn")) & "','" & Trim(Request.Form("losen1")) & "','" & Trim(Request.Form("fnamn")) & "','" & Trim(Request.Form("enamn")) & "'," & now() & ",Medlem,False,0,'" & Trim(Request.Form("email")) & "','" & Trim(Request.Form("icq")) & "','" & Trim(Request.Form("msn")) & "'," & fodd & ",'" & Trim(Request.Form("ort")) & "','" & Trim(Request.Form("yrke-titel")) & "','" & Trim(Request.Form("perstext")) & "','" & Trim(Request.Form("intressen")) & "','" & Trim(Request.Form("favoritsport")) & "','" & Trim(Request.Form("signatur")) & "')"

Inte ett fel vad jag kan se. :l

Efter att ha skrivit ut SQL med Response.Write så fick jag resultatet INSERT INTO medlemar (anvnamn,losen,fnamn,enamn,regdatum,typ,status,antalinlagg.email,icq,msn,fodd,ort,yrke-titel,perstext,intressen,favoritsport,signatur) VALUES('Mika3l','test','Mikael','Karlsson',2002-06-02 01:06:31,Medlem,False,0,'Mikael_2001@hotmail.com','','Mikael_2001@hotmail.com',1988-02-26,'Vålberg, värmlands metropol #1.','Studerar.','Hmmm...','Sport, data, musik mm.','Ishockey, fotboll, Formel1, rally m.fl.','Armarna utåt sträck!')

Någon som kan hjälpa?

/Mika3l

LAMPMedlem sedan mars 2002777 inlägg
#2

Där är ett värde som är tomt, vad har du för fälttyp på född-fältet?

LAMPMedlem sedan mars 2002777 inlägg
#3

antalinlagg.email

ingen punkt där inte, byt mot komma :)

@ndersMedlem sedan juni 200032 969 inlägg
#4

Du får inte ha bindestreck i fältnamn. Byt yrke-titel mot något annat.

Mvh,

Mika3lMedlem sedan nov. 20018 492 inlägg
#5

Nu har jag fått koden till att bli så här:

SQL = "INSERT INTO medlemar (anvnamn,losen,fnamn,enamn,regdatum,typ,status,antalinlagg,email,icq,msn,fodd,ort,yrketitel,perstext,intressen,favoritsport,signatur) VALUES('" & Trim(Request.Form("anvnamn")) & "','" & Trim(Request.Form("losen1")) & "','" & Trim(Request.Form("fnamn")) & "','" & Trim(Request.Form("enamn")) & "'," & date() & ",'Medlem','False','0','" & Trim(Request.Form("email")) & "','" & Trim(Request.Form("icq")) & "','" & Trim(Request.Form("msn")) & "'," & fodd & ",'" & Trim(Request.Form("ort")) & "','" & Trim(Request.Form("yrketitel")) & "','" & Trim(Request.Form("perstext")) & "','" & Trim(Request.Form("intressen")) & "','" & Trim(Request.Form("favoritsport")) & "','" & Trim(Request.Form("signatur")) & "')"

Men nu får jag Typlandningsfel i vilkorsuttryck. :l
Hittar inget fel....

cyprysMedlem sedan dec. 20003 563 inlägg
#6

Inte enkelfnuttar runt " & date() & " då?
' " & date() & " '

Mika3lMedlem sedan nov. 20018 492 inlägg
#7

Fungerade inte det heller. :l

cyprysMedlem sedan dec. 20003 563 inlägg
#8

Ok. om vi säger så här.
Kolla alla kolumner.
Typ: Text, PM, Datum ska ha ' ' runt sig.
Typ: Tal ska inte ha några. Kolla om allt stämmer. Antagligen inte

LAMPMedlem sedan mars 2002777 inlägg
#9

Typ: Text, PM, Datum ska ha ' ' runt sig.

Nej, i access ska datum inte ha ' ' runt sig, i access ska datum ha # # runt sig om fältet är av datumtyp. Det går även att skriva in now() direkt om jag inte minns fel.

LAMPMedlem sedan mars 2002777 inlägg
#10

Ursprungligen av Mika3l Fungerade inte det heller. :l

Hur ser din sql-fråga ut nu då?

cyprysMedlem sedan dec. 20003 563 inlägg
#11

Nej, i access ska datum inte ha ' ' runt sig, i access ska datum ha # # runt sig om fältet är av datumtyp. Det går även att skriva in now() direkt om jag inte minns fel.

Det funkar alldeles utmärkt att köra med ' '.

LAMPMedlem sedan mars 2002777 inlägg
#12

Ursprungligen av cyprys

Nej, i access ska datum inte ha ' ' runt sig, i access ska datum ha # # runt sig om fältet är av datumtyp. Det går även att skriva in now() direkt om jag inte minns fel.

Det funkar alldeles utmärkt att köra med ' '.

Jag är långt ifrån en höjdare på access, men nyfiken som jag är så provade jag med ett litet test genom att göra en tabell med ett fält av typen datum/tid. och provade skicka in ett värde med '" & dteDate & "', vilket resulterade i:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

Sedan bytade jag till #" & dteDate & "# och inserten gick bra.

Utifrån detta test vidhåller jag fortfarande att access vill ha brädgårdar runt datum om fältet är av datumtid och om man inte lägger in funktionen now(), date() eller liknande direkt.

cyprysMedlem sedan dec. 20003 563 inlägg
#13

ah
Använder iofs aldrig annat än date, now och cdate(x) men det funkar hur som helst för mig.

@ndersMedlem sedan juni 200032 969 inlägg
#14

Ett litet tillägg:

Brädgårdar runt datumvärden är mycket access-specifikt. I stort sett alla andra dbms vill ha apostrofer runt datumvärden.

cyprus, använder du access med datum/tid som datatyp på fälten? Det låter mycket märkligt att du skulle komma igenom med apostrofer...

Mvh,

cyprysMedlem sedan dec. 20003 563 inlägg
#15

Nu måste jag såklart dubbelkolla och det stämde det jag sa.
'"&now()&"', '"&date()&"' och '"&cdate(bla)&"'
funkar alla på en datum/tid-kolumn.
Använder alla tre på olika ställen.

@ndersMedlem sedan juni 200032 969 inlägg
#16

Det spelar ingen roll om du använder date(), now() eller cdate(nånting), eftersom de datumen är korrekta allihop. Det intressanta är att det är en datum/tid-kolumn, och det är det som avgör vad du ska ha runt värdet.

Efter att ha gjort en liten kontroll verkar det faktiskt som att Microsoft fixat till så man faktiskt får använda apostrofer runt datumvärden i nya Access. Jag skulle dock tro att du måste använda brädgårdar i Access 2000 och tidigare versioner. Vilken version använder du, cyprys?

Mvh,

cyprysMedlem sedan dec. 20003 563 inlägg
#17

Ah.
2002 så där har vi nog anledningen.

LAMPMedlem sedan mars 2002777 inlägg
#18

Och jag har 2000 :)

@nders med now() menade jag:

strSQL ="INSERT INTO table (dteDate) VALUES(Now())"

och inte

strSQL ="INSERT INTO table (dteDate) VALUES(#" & Now() & "#)"
@ndersMedlem sedan juni 200032 969 inlägg
#19

Jag förstod vad du menade, LAMP. Det var cyprys inlägg jag svarade på. :)

Mvh,

Mika3lMedlem sedan nov. 20018 492 inlägg
#20

Så här ser SQLsatsen ut nu.

SQL = "INSERT INTO medlemar (anvnamn,losen,fnamn,enamn,regdatum,typ,status,antalinlagg,email,icq,msn,fodd,ort,yrketitel,perstext,intressen,favoritsport,signatur) VALUES('" & Trim(Request.Form("anvnamn")) & "','" & Trim(Request.Form("losen1")) & "','" & Trim(Request.Form("fnamn")) & "','" & Trim(Request.Form("enamn")) & "','" & date() & "','"Medlem"','"False"',"0",'" & Trim(Request.Form("email")) & "','" & Trim(Request.Form("icq")) & "','" & Trim(Request.Form("msn")) & "'," & fodd & ",'" & Trim(Request.Form("ort")) & "','" & Trim(Request.Form("yrketitel")) & "','" & Trim(Request.Form("perstext")) & "','" & Trim(Request.Form("intressen")) & "','" & Trim(Request.Form("favoritsport")) & "','" & Trim(Request.Form("signatur")) & "')"

Dock får jag felmeddelanden när jag går in på sidan...
Slut på programsats förväntas

Säkert något fel vid False, 0 osv...

Databasen ser ut så här.

regdatum och fodd: Date/Time
status: Yes/No
antalinlagg: Number
"Resten" är text.

136 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
134 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)