Hej!
Det verkar som om du inte får tag på alla värden du behöver från den tidigare sidan. Kolla därför att du har rätt namn i dina Request.Form...
------------------
mvh André
7 svar · 245 visningar · startad av Bire
Har lite trubbel med följande kod:
<%Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open Session("rapporter")
SQLStmt = "INSERT INTO Rapport"
SQLStmt = SQLStmt & "(INTERNKONTROLL, FORBATTRINGSFORSLAG, KUNDREKLAMATION, OVRIGT, SKRIVENAV, SKRIVENDEN, BESKRIVNING, FORSLAG, HANDLINGSPLAN, ANSVARIG, PLANERADSLUTTID, VERKLIGSLUTTID, BERAKNADKOSTNAD, VERKLIGKOSTNAD, OPPFOLJNINGSIGNATUR, UTVARDERING, KLARTDATUM, KLARTSIGNATUR)"
SQLStmt = SQLStmt & "VALUES(" & Request.Form("INTERNKONTROLL") & "," & Request.Form("FORBATTRINGSFORSLAG") & "," & Request.Form("KUNDREKLAMATION") & "," & Request.Form("OVRIGT") & "," & Request.Form("SKRIVENAV") & "," & Request.Form("SKRIVENDEN") & "," & Request.Form("BESKRIVNING") & "," & Request.Form("FORSLAG") & "," &
Request.Form("HANDLINGSPLAN") & "," & Request.Form("ANSVARIG") & "," & Request.Form("PLANERADSLUTTID") & "," &
Request.Form("VERKLIGSLUTTID") & "," & Request.Form("BERAKNADKOSTNAD") & "," & Request.Form("VERKLIGKOSTNAD") & "," & Request.Form("OPPFOLJNINGSIGNATUR") & "," & Request.Form("UTVARDERING") & "," & Request.Form("KLARTDATUM") & "," & Request.Form("KLARTSIGNATUR") & ")"
response.write SQLStmt
Connection.Execute(SQLStmt)
Connection.Close
%>
Detta ger följande:
(Utskriven SQLStmt)INSERT INTO Rapport(INTERNKONTROLL, FORBATTRINGSFORSLAG, KUNDREKLAMATION, OVRIGT, SKRIVENAV, SKRIVENDEN, BESKRIVNING, FORSLAG, HANDLINGSPLAN, ANSVARIG, PLANERADSLUTTID, VERKLIGSLUTTID, BERAKNADKOSTNAD, VERKLIGKOSTNAD, OPPFOLJNINGSIGNATUR, UTVARDERING, KLARTDATUM, KLARTSIGNATUR)VALUES(INTERNKONTROLL,FORBATTRINGSFORSLAG,,,TK,2001-10-13,,,,TK,2001-,2001-,,,,JA,2001-,TK)
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntax error in INSERT INTO statement.
/BPS/add.asp, line 12
Line 12 är: Connection.Execute(SQLStmt)
Jag fattar inte riktigt vad som är fel i INSERT INTO... Men jag fattar iofs aldrig vad som är fel heller ;)
[Redigerat av Bire den 13 okt 2001]
Hej!
Det verkar som om du inte får tag på alla värden du behöver från den tidigare sidan. Kolla därför att du har rätt namn i dina Request.Form...
------------------
mvh André
Hej!
Som sagts ovan blir vissa fält tomma. (ange dem som null om du vill ha de tomma)
Två frågor:
Är alla fält av typen tal?
Är det access så krävs # # runt datumet eller i sql och mysql '" "' .
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?
[Redigerat av jorgen den 13 okt 2001]
Vissa fält ska vara tomma, ibland.
Då måste du ange null som värde eller utelämna dem i din INSERT.
Mvh,
------------------
All your base are belong to me.
Även om jag har värden överallt så blir det samma felmeddelande.
Om du vill att vissa kolumner skall vara odefinierade så får du göra
sql = "insert into t (a,b,c) values('a',null,'c')"
det går inte att utelämna värdet om kolumnnamnet finns med i kolumnlistan.
Det går också att utelämna kolumner, och då får dessa ett defaultvärde (som är null om man inte själv har definierat något annat.)
sql = "insert into t (a,c) values('a','c')"
I sql så anges alla textvärden inom ' och datumvärden inom # (gäller endast Access dock) och numeriska värden har inga avgränsare.
(slut på lektion)
Så i din kod skulle du få skriva
'för alla textfält
if "" & Request.Form("INTERNKONTROLL") = "" then
internkontroll = "null"
else
internkontroll = "'" & replace(Request.Form("INTERNKONTROLL"),"'","''") & "'"
end if
'för datumfält
if Request.Form("SKRIVENDEN") = "" then
skrivenden = "null"
else
skrivenden = "#" & Request.Form("SKRIVENDEN") & "#"
end if
'för numeriska fält
if Request.Form("BERAKNADKOSTNAD") = "" then
beraknadkostnad = "null"
else
beraknadkostnad = Request.Form("BERAKNADKOSTNAD")
end if
'osv
SQLStmt = "INSERT INTO Rapport"
SQLStmt = SQLStmt & "(INTERNKONTROLL, FORBATTRINGSFORSLAG, KUNDREKLAMATION, OVRIGT, SKRIVENAV, SKRIVENDEN, BESKRIVNING, FORSLAG, HANDLINGSPLAN, ANSVARIG, PLANERADSLUTTID, VERKLIGSLUTTID, BERAKNADKOSTNAD, VERKLIGKOSTNAD, OPPFOLJNINGSIGNATUR, UTVARDERING, KLARTDATUM, KLARTSIGNATUR)"
SQLStmt = SQLStmt & "VALUES(" & INTERNKONTROLL & "," & FORBATTRINGSFORSLAG & ","
'och så vidare för alla värden
SQLStmt = SQLStmt & ")"
Anledningen till att man gör replace är för att hantera om fältet innehåller en '. I sql så får man dubbla alla apostrofer i strängar för att det skall fungera.
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 13 okt 2001]
LarsG: Hmm.. Nu sätter du mig i den till synes mycket otrevliga situationen att jag måste tänka om helt :OO Haha..
Jag kollar lite på detta & återkommer nån dag närmare jul! ;)