Avatar billede martin29 Nybegynder
13. marts 2005 - 10:50 Der er 36 kommentarer og
2 løsninger

SQL Fejl ved submit af redigerings side.

Hejsa!

Jeg får følgende fejl når jeg trykker submit for at redigere indholdet i min Access database.:

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

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

/kartotek/secher.asp, line 36


linie 36 ser sådan her ud :Conn.Execute(strSQL)

Koden omkring linie 36 ser sådan her ud:

        If strID > "" Then
            Set Conn = Server.CreateObject("ADODB.Connection")
            Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("kundedatabase.mdb")
           
            If strID = "(Ny)" Then
                strSQL = "INSERT INTO kundedatabase (Tekst) VALUES ('" & strTekst & "');"
            Else
                strSQL = "UPDATE DISTINCTROW kundedatabase SET Qxl = '"&Request.form("Qxl")&"',Email = '"&Request.form("Email")&"',Navn = '"&Request.form("Navn")&"',Adresse = '"&Request.form("Adresse")&"',postnr = '"&Request.form("Postnr")&"',[by] = '"&Request.form("By")&"',Land = '"&Request.form("Land")&"',Tlf = '"&Request.form("Tlf")&"',Antalvarer = '"&Request.form("Antalvarer")&"',Varer= '"&Request.form("Varer")&"',Formular = "&Request.form("Formular")&",Betaling = '"&Request.form("Betaling")&"',Beløb = "&Request.form("Beløb")&",Sendt = "&Request.form("Sendt")&",Tt = '"&Request.form("Tt")&"',Besked = '"&Request.form("Besked")&"' WHERE id = "& Request.Form("id") &";"
            End If
           
            Conn.Execute(strSQL)
            Conn.Close
            Set Conn = Nothing
        End If

Håber der er nogen der kan hjælpe. :-)

---
Mvh
Martin
Avatar billede kalp Novice
13. marts 2005 - 10:54 #1
mo ikke det er fordi den data du prøver at sætte ind ikke passer emd de datatyper der er i databasen?

fx sætte tekst ind i det tal felt.
Avatar billede martin29 Nybegynder
13. marts 2005 - 11:03 #2
Min database felter har tekst felter og så er der et par Yes/No checkboxe og et memo felt.
Avatar billede michael_stim Ekspert
13. marts 2005 - 11:05 #3
"&Request.form("Beløb")&" <-- Er dette et tekstfelt?
I så fald skal der ' om:
'"&Request.form("Beløb")&"'
Avatar billede michael_stim Ekspert
13. marts 2005 - 11:09 #4
Og så er det altid en god ide at udskrive sin SQL-string för man körer den.

'Conn.Execute(strSQL)
response.write(strSQL)
På den måde for man bedre overblik.
Avatar billede martin29 Nybegynder
13. marts 2005 - 11:19 #5
OK nu skal du se....

Gør jeg sådan her:
'Conn.Execute(strSQL)
response.write(strSQL)

Kommer jeg fint videre uden fejl ved at klikke submit.

Men retter jeg tilbage får jeg følgende fejl nu:

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

/kartotek/secher.asp, line 36
Avatar billede michael_stim Ekspert
13. marts 2005 - 11:21 #6
OK, pröv at klistre din udskrevne SQL-string her ind.
Avatar billede martin29 Nybegynder
13. marts 2005 - 11:23 #7
Du mener hvad den skriver fra response.write?

Får ingen meddelelse. den går videre til den side den skal.
Avatar billede michael_stim Ekspert
13. marts 2005 - 11:28 #8
Udkommenter response.redirect(side) også ;o)
Ellers hjälper det jo ikke at du udskriver sql-stringen.
Avatar billede moejensen Nybegynder
13. marts 2005 - 11:30 #9
eller skriv Response.end efter, så stopper scriptet
Avatar billede martin29 Nybegynder
13. marts 2005 - 11:36 #10
ER ikke helt med på hvad jeg skal?

      If strID > "" Then
            Set Conn = Server.CreateObject("ADODB.Connection")
            Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("kundedatabase.mdb")
           
            If strID = "(Ny)" Then
                strSQL = "INSERT INTO kundedatabase (Tekst) VALUES ('" & strTekst & "');"
            Else
                strSQL = "UPDATE DISTINCT ROW kundedatabase SET Qxl = '"&Request.form("Qxl")&"',Email = '"&Request.form("Email")&"',Navn = '"&Request.form("Navn")&"',Adresse = '"&Request.form("Adresse")&"',postnr = '"&Request.form("Postnr")&"',[by] = '"&Request.form("By")&"',Land = '"&Request.form("Land")&"',Tlf = '"&Request.form("Tlf")&"',Antalvarer = '"&Request.form("Antalvarer")&"',Varer= '"&Request.form("Varer")&"',Formular = "&Request.form("Formular")&",Betaling = '"&Request.form("Betaling")&"',Beløb = '"&Request.form("Beløb")&"',Sendt = "&Request.form("Sendt")&",Tt = '"&Request.form("Tt")&"',Besked = '"&Request.form("Besked")&"' WHERE id = "& Request.Form("id") &";"
            End If
           
            Conn.Execute(strSQL)
            Conn.Close
            Set Conn = Nothing
        End If
       
        Response.Redirect "secher.asp"
Avatar billede michael_stim Ekspert
13. marts 2005 - 11:37 #11
response.write(strSQL)
'Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
End If
     
'Response.Redirect "secher.asp"
Avatar billede martin29 Nybegynder
13. marts 2005 - 11:39 #12
er det det her i kan bruge.
Fejlen fra explorer:

UPDATE DISTINCT ROW kundedatabase SET Qxl = 'jm',Email = 'jm@jm.dk',Navn = 'jmsecher',Adresse = 'none',postnr = '1234',[by] = 'by',Land = 'land',Tlf = '4367754',Antalvarer = '1',Varer= '',Formular = true,Betaling = 'true',Beløb = '1000',Sendt = true,Tt = '320',Besked = 'test test' WHERE id = 1;
Avatar billede martin29 Nybegynder
13. marts 2005 - 11:43 #13
Har det noget og gøre med '

Formular = true,Betaling = 'true',
Avatar billede michael_stim Ekspert
13. marts 2005 - 11:43 #14
DISTINCTROW ud i et, og så kan du se hvilke attributter der skal have ' om.
Jeg ved ikke hvilke datatyper de forskellige felter er.
Avatar billede martin29 Nybegynder
13. marts 2005 - 11:45 #15
Formular = true,Betaling = 'true', er begge checkboxe
Avatar billede michael_stim Ekspert
13. marts 2005 - 11:47 #16
Men de skal ihvert fald väre ens, hvis det er de samme datatyper i databasetabellen. Pröv med ' på allesammen.
Avatar billede martin29 Nybegynder
13. marts 2005 - 11:49 #17
ok kigger lige..
Avatar billede martin29 Nybegynder
13. marts 2005 - 11:54 #18
Får følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

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

/kartotek/secher.asp, line 37

Ved brug af:
Formular = '"&Request.form("Formular")&"'

Hvordan skal koden så se ud?
Avatar billede michael_stim Ekspert
13. marts 2005 - 11:59 #19
Hvad er datatypen i din databasetabel? Pröv uden '.
Avatar billede martin29 Nybegynder
13. marts 2005 - 12:04 #20
He he he FEDT nu virker det i alle felter undtagen mine 3 checkboxe...

retter jeg checkbox markering får jeg:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

/kartotek/secher.asp, line 37
Avatar billede martin29 Nybegynder
13. marts 2005 - 12:05 #21
laver lige en response.write(strSQL)
Avatar billede martin29 Nybegynder
13. marts 2005 - 12:06 #22
UPDATE DISTINCTROW kundedatabase SET Qxl = 'jm',Email = 'jm@jm.dk',Navn = 'jmsecher',Adresse = 'none',postnr = '1234',[by] = 'by',Land = 'land',Tlf = '4367754',Antalvarer = '1',Varer= 'Digitalt Kamera 5.0 Mpix',Formular = true,Betaling = true,Beløb = '1000',Sendt = ,Tt = '320',Besked = 'test test test' WHERE id = 1;
Avatar billede martin29 Nybegynder
13. marts 2005 - 12:07 #23
det er efter jeg har fjernet markering for sendt. får jeg følgende svar:
Sendt = ,
Avatar billede moejensen Nybegynder
13. marts 2005 - 12:07 #24
prøv lige at sætte den her inde inden du eksekvere sql:

If Request.form("Betaling") = true Then
  strTest = "on"
Else
  strTest = "off"
End If

og så set strTest ind i stedet for Request.form("Betaling")
Avatar billede martin29 Nybegynder
13. marts 2005 - 12:17 #25
Betaling = "&strTest&", ?

UPDATE DISTINCTROW kundedatabase SET Qxl = 'jm',Email = 'jm@jm.dk',Navn = 'jmsecher',Adresse = 'none',postnr = '1234',[by] = 'by',Land = 'land',Tlf = '4367754',Antalvarer = '1',Varer= 'Digitalt Kamera 5.0 Mpix',Formular = true,Betaling = off,Beløb = '1000',Sendt = true,Tt = '320',Besked = 'test test test' WHERE id = 1;
Avatar billede moejensen Nybegynder
13. marts 2005 - 12:23 #26
yep
Avatar billede martin29 Nybegynder
13. marts 2005 - 12:33 #27
har haft fjernet flueben og nu vil jeg have dem på igen men får:

UPDATE DISTINCTROW kundedatabase SET Qxl = 'jm',Email = 'jm@jm.dk',Navn = 'jmsecher',Adresse = 'none',postnr = '1234',[by] = 'by',Land = 'land',Tlf = '4367754',Antalvarer = '1',Varer= 'Digitalt Kamera 5.0 Mpix',Formular = off,Betaling = off,Beløb = '1000',Sendt = off,Tt = '320',Besked = 'test test test' WHERE id = 1;
Avatar billede moejensen Nybegynder
13. marts 2005 - 12:56 #28
det virker for mig nu med den som den ser ud nu
Avatar billede martin29 Nybegynder
13. marts 2005 - 13:07 #29
kan ikke få det til at virke..

        If Request.form("Formular") = true Then
          strForm = "on"
        Else
          strForm = "off"
        End If

        If Request.form("Betaling") = true Then
          strBet = "on"
        Else
          strBet = "off"
        End If
       
        If Request.form("Sendt") = true Then
          strSend = "on"
        Else
          strSend = "off"
        End If       

        If strID > "" Then
            Set Conn = Server.CreateObject("ADODB.Connection")
            Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("kundedatabase.mdb")
           
            If strID = "(Ny)" Then
                strSQL = "INSERT INTO kundedatabase (Tekst) VALUES ('" & strTekst & "');"
            Else
                strSQL = "UPDATE DISTINCTROW kundedatabase SET Qxl = '"&Request.form("Qxl")&"',Email = '"&Request.form("Email")&"',Navn = '"&Request.form("Navn")&"',Adresse = '"&Request.form("Adresse")&"',postnr = '"&Request.form("Postnr")&"',[by] = '"&Request.form("By")&"',Land = '"&Request.form("Land")&"',Tlf = '"&Request.form("Tlf")&"',Antalvarer = '"&Request.form("Antalvarer")&"',Varer= '"&Request.form("Varer")&"',Formular = "&strForm&",Betaling = "&strBet&",Beløb = '"&Request.form("Beløb")&"',Sendt = "&strBet&",Tt = '"&Request.form("Tt")&"',Besked = '"&Request.form("Besked")&"' WHERE id = "& Request.Form("id") &";"
            End If
           
           
            response.write(strSQL)
            'Conn.Execute(strSQL)
            Conn.Close
            Set Conn = Nothing
            End If
     
            'Response.Redirect "secher.asp"
Avatar billede martin29 Nybegynder
13. marts 2005 - 13:09 #30
ups har rettet ,Sendt = "&strBet&",
til ,Sendt = "&strsend&",
Avatar billede moejensen Nybegynder
13. marts 2005 - 13:10 #31
så det virker nu?
Avatar billede martin29 Nybegynder
13. marts 2005 - 13:12 #32
får stadig denne kode efter jeg har udfyldt de 3 checkboxe.

UPDATE DISTINCTROW kundedatabase SET Qxl = 'jm',Email = 'jm@jm.dk',Navn = 'jmsecher',Adresse = 'none',postnr = '1234',[by] = 'by',Land = 'land',Tlf = '4367754',Antalvarer = '1',Varer= 'Digitalt Kamera 5.0 Mpix',Formular = off,Betaling = off,Beløb = '1000',Sendt = off,Tt = '320',Besked = 'test test test' WHERE id = 1;
Avatar billede moejensen Nybegynder
13. marts 2005 - 13:15 #33
nååå, du mener der står off?
Avatar billede moejensen Nybegynder
13. marts 2005 - 13:19 #34
prøv med:

If Request.form("Formular") = "true" Then
          strForm = "on"
        Else
          strForm = "off"
        End If
Avatar billede martin29 Nybegynder
13. marts 2005 - 13:27 #35
YESSSSSSS. :-) DET VIRKER.......
FEDT..
Avatar billede moejensen Nybegynder
13. marts 2005 - 13:31 #36
Endelig, så fandt jeg løsningen alligevel.
Avatar billede martin29 Nybegynder
13. marts 2005 - 13:34 #37
He he he det er bare alletiders.
SÅ hvis michael_stim vil have en del af points må du vær med nu.
Du har været med til at få det til at virke..
Avatar billede michael_stim Ekspert
13. marts 2005 - 13:46 #38
Oki doki ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester