Avatar billede kovalt Nybegynder
12. juli 2002 - 12:17 Der er 20 kommentarer og
1 løsning

ASP og SQL

Hej alle sammen

Jeg sidder og er ved at lave en formular der skal bruges til at opdatere en database. Jeg får imidlertid denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

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

Min kode ser således ud:

If Request.Form("tips13kuponnr") <> "" Then
       
        kuponnr = Request.Form("tips13kuponnr")
    systemnavn = Request.Form("tips13systemnavn")
    indsats = Request.Form("tips13indsats")
    h1 = Request.Form("h1")
    u1 = Request.Form("u1")   
    tips13k11 = Request.Form("tips13k11")
    tips13k1X = Request.Form("tips13k1X")
    tips13k12 = Request.Form("tips13k12")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" + Server.MapPath("XXXXX"))
               
strOpretTips13SQL = "UPDATE tips13 SET
kuponnr='"& kuponnr &"', system='"& systemnavn &"', indsats='"& indsats &"', kamp11='"& tips13k11 &"', kamp1x='"& tips13k1X &"', kamp12='"& tips13k12 &"' WHERE ugenr = '"& Session("ugenr") &"'"

Conn.execute(strOpretTips13SQL)

Conn.Close
Set Conn = Nothing
       
else
       
%>

Her kommer formularen

<% end if %>

Det skal endvidere siges at de eneste to felter i DB som er tal er sessionvariablen "ugenr" og "kuponnr" - resten er tekst felter.

Hvad er der galt??
Avatar billede keysersoze Ekspert
12. juli 2002 - 12:20 #1
strOpretTips13SQL = "UPDATE tips13 SET
kuponnr="& kuponnr &", system='"& systemnavn &"', indsats='"& indsats &"', kamp11='"& tips13k11 &"', kamp1x='"& tips13k1X &"', kamp12='"& tips13k12 &"' WHERE ugenr = "& Session("ugenr") &""
Avatar billede kovalt Nybegynder
12. juli 2002 - 12:24 #2
Den kommer stadig med samme fejl..... 

Hvad er det der er afgørende for om der skal skrives '"XX"' eller "XX"??
Avatar billede keysersoze Ekspert
12. juli 2002 - 12:36 #3
et talfelt skal ikke have '' det skal et tekstfelt

er du sikker på at session("ugenr") ikke er tom? prøv evt at udskrive din sql så kan det være vi kan se hvor det går galt

(erstat Conn.execute(strOpretTips13SQL) med response.write strOpretTips13SQL)
Avatar billede kovalt Nybegynder
12. juli 2002 - 12:42 #4
Her er svaret.....

UPDATE tips13 SET kuponnr='& kuponnr &', system='R-2-7-144',
indsats='& indsats &', kamp11='1', kamp1x='X', kamp12='2'
WHERE ugenr = '0204'

Det ser ud som om det er indsats den er gal med.... synes bare ikke lige jeg kan se hvad der er galt
Avatar billede kovalt Nybegynder
12. juli 2002 - 12:43 #5
og kuponnr
Avatar billede kovalt Nybegynder
12. juli 2002 - 12:44 #6
Nu hvor det er tal-værdier er det så afgørende at variablerne hedder intKuponnr og intIndsats
Avatar billede keysersoze Ekspert
12. juli 2002 - 12:45 #7
prøv at kom med din sql-sætning som den ser ud nu
Avatar billede keysersoze Ekspert
12. juli 2002 - 12:46 #8
nej - det er ikke afgørende
Avatar billede kovalt Nybegynder
12. juli 2002 - 12:50 #9
Nu er udstrækket OK.

UPDATE tips13 SET kuponnr='1', system='R-2-7-144', indsats='144', kamp11='1', kamp1x='X', kamp12='2' WHERE ugenr = '0204'.

Men fejlen kommer stadig

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

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
Avatar billede kovalt Nybegynder
12. juli 2002 - 12:51 #10
Kan de ha noget at gøre med at ugenr i databasen bliver lageret som 204 fordi det første nul smides væk og at den derfor ikke kan finde posten når den søger efter 0204 - eller er det ligegyldigt?
Avatar billede kovalt Nybegynder
12. juli 2002 - 12:53 #11
strOpretTips13SQL = "UPDATE tips13 SET kuponnr='"& kuponnr &"',
system='"& systemnavn &"', indsats='"& indsats &"',
kamp11='"& tips13k11 &"', kamp1x='"& tips13k1X &"',
kamp12='"& tips13k12 &"'
WHERE ugenr = '"& Session("ugenr") &"'"
Avatar billede keysersoze Ekspert
12. juli 2002 - 12:53 #12
hvis ugenr og kuponnr er tal-felter i databasen skal '' fjernes omkring de to værdier i din sql - altså så den kommer til at hedde

UPDATE tips13 SET kuponnr=1, system='R-2-7-144', indsats='144', kamp11='1', kamp1x='X', kamp12='2' WHERE ugenr = 0204.
Avatar billede terry Ekspert
12. juli 2002 - 12:53 #13
At a guess it is
WHERE ugenr = '0204'
which is giving problems!

What data type does ugenr have?
Avatar billede kovalt Nybegynder
12. juli 2002 - 12:55 #14
Sådan her ser den ud:

strOpretTips13SQL = "UPDATE tips13 SET kuponnr='& kuponnr &',
system='"& systemnavn &"', indsats='& indsats &',
kamp11='"& tips13k11 &"', kamp1x='"& tips13k1X &"',
kamp12='"& tips13k12 &"'
WHERE ugenr = '"& Session("ugenr") &"'"
Avatar billede keysersoze Ekspert
12. juli 2002 - 12:56 #15
så ville fejlen være en anden...

så må du arbejde dig frem og se hvor fejlen ligger... udfør din sql i stedet for at udskrive den nu og prøv så med;

strOpretTips13SQL = "UPDATE tips13 SET system='"& systemnavn &"', indsats='"& indsats &"',
kamp11='"& tips13k11 &"', kamp1x='"& tips13k1X &"',
kamp12='"& tips13k12 &"'
WHERE ugenr = "& Session("ugenr") &""
Avatar billede kovalt Nybegynder
12. juli 2002 - 12:56 #16
tal / numbers
Avatar billede terry Ekspert
12. juli 2002 - 12:58 #17
As I thought! And a number field can NOT contain 0204!

It can contain 204.
Avatar billede kovalt Nybegynder
12. juli 2002 - 13:00 #18
Nu virker det.... posten kan godt findes ud fra 0204. ' skulle bare fjernes omkring kuponnr, indsats og sessionvariablen - Takker Keysersoze
Avatar billede terry Ekspert
12. juli 2002 - 13:01 #19
I dont know exactly what 0204 is but at a guess it is 02 (2002) and 04 (week 4). If thats the case you need to remove the 0 from your Ugenr
Try WHERE ugenr = "& Cint(Session("ugenr")) &""
Avatar billede keysersoze Ekspert
12. juli 2002 - 13:03 #20
men lige en ting - umiddelbart vil det formentlig være lidt smartere KUN at køre med tekstfelter (pånær hvis der er et id felt med autonummering) for på den måde undgår du netop disse ting.
Avatar billede keysersoze Ekspert
12. juli 2002 - 13:04 #21
men hvis det kom til at virke som ønsket så er her et svar
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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