---
title: "Det har kört ihop sig igen..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/12069-det-har-kört-ihop-sig-igen"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Bire"
published: "2001-10-13T09:11:00.000Z"
updated: "2001-10-13T10:37:00.000Z"
replies: 7
views: 261
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/12069-det-har-kört-ihop-sig-igen"
---

# Det har kört ihop sig igen...

## #1 — Bire, 2001-10-13T09:11Z

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\]

Permalänk: https://www.webforum.nu/p/12069

## #2 — juventus1, 2001-10-13T09:21Z

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...

Permalänk: https://www.webforum.nu/p/291907

## #3 — jorgen, 2001-10-13T09:39Z

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 :)

Permalänk: https://www.webforum.nu/p/291908

## #4 — Bire, 2001-10-13T09:55Z

Vissa fält ska vara tomma, ibland.

Permalänk: https://www.webforum.nu/p/291909

## #5 — @nders, 2001-10-13T10:24Z

Då måste du ange null som värde eller utelämna dem i din INSERT.

Mvh,

Permalänk: https://www.webforum.nu/p/291910

## #6 — Bire, 2001-10-13T10:32Z

Även om jag har värden överallt så blir det samma felmeddelande.

Permalänk: https://www.webforum.nu/p/291911

## #7 — LarsG, 2001-10-13T10:33Z

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.

Permalänk: https://www.webforum.nu/p/291912

## #8 — Bire, 2001-10-13T10:37Z

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! ;)

Permalänk: https://www.webforum.nu/p/291913

---

Tråden på webben: https://www.webforum.nu/amne/asp/12069-det-har-kört-ihop-sig-igen
