Avatar billede fastpoint Nybegynder
29. marts 2005 - 12:16 Der er 28 kommentarer og
1 løsning

Data type mismatch in criteria expression

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

er fejlen og jeg får den rimelig tit når jeg enten anvender min update sql sætning eller insert into.

Jeg ved godt det betyder noget med at den data jeg prøver at sætte ind ikke passer. men det forstår jeg ikke for nogen gang behøver jeg bare forsøge mig et par gange så virker det.

Hvad er problemet? De fleste felter er textfelter
Avatar billede moejensen Nybegynder
29. marts 2005 - 12:24 #1
problemet er som du selv skriver "data jeg prøver at sætte ind ikke passer".

Prøv at indsætte din sql, samt din db opbygning. problemet er som regel at der skal ' uden om data der skal ind i tekstfelter.
Avatar billede fennec Nybegynder
29. marts 2005 - 12:25 #2
alle tekst værdier skal have ' omkring, datoer ' eller # (afhængig af databasen), og tal skal ikke have noget omkring.
Avatar billede fennec Nybegynder
29. marts 2005 - 12:28 #3
Der skal også ' omkring tal som sættes i en tekst kolonne. Et par eks:

sql = "insert into enTable(tekstKol, talKol, datoKol) values('noget tekst',123,#29-03-2005#)"
sql = "insert into enTable(tekstKol, talKol, datoKol) values('1234',123,#29-03-2005#)"
sql = "update enTable set tekstKol='noget tekst' where id=12"
sql = "update enTable set tekstKol='noget tekst' where name='fennec'"
Avatar billede fastpoint Nybegynder
29. marts 2005 - 12:31 #4
Bliv nu ikke skræmt væk over den er lidt stor:)

Conn.Execute "INSERT INTO kunde (firmanavn,cvrnummer,adresse,postnr,tlf,mobil,fax,email,hjemmeside,beskrivelse,kontaktperson,ean,branche,omrode,byen,storrelse,datoet,datoto,placering,status,kommentare,pris) VALUES ('" & Request("firmanavn") & "','" & Request("cvrnummer") & "','" & Request("adresse") & "','" & Request("postnr") & "','" & Request("tlf")  & "','" & Request("mobil")  & "','" & Request("fax")  & "','" & Request("email")  & "','" & Request("hjemmeside")  & "','" & Request("beskrivelse")  & "','" & Request("kontaktperson")  & "','" & Request("ean")  & "','" & Request("branche")  & "','" & Request("omrode")  & "','" & Request("byen")  & "','" & Request("storrelse")  & "','" & Date()  & "','" & DateAdd("M", Request("periode"), Date)  & "','" & Request("placering") & "','" & Request("status") & "','" & Request("kommentare") & "','" & Request("pris") & "')"


Det eneste som ikke er af typen text i databasen er

beskrivelse - Den er af typen Memo
placering - Den er number (tænker allerede DOH! der er "" rundt om den)
kommentare - er af typen Memo
storrelse - er af typen number (DOH)

datoet
datoto
betalingsdato

er alle date/time ... skal man gøre noget specielt med dem?

pris er number
rykker er number
Avatar billede fastpoint Nybegynder
29. marts 2005 - 12:33 #5
kan en af jer lave sql sætningen? så dato og nummer formatterne passer? det ikke fordi jeg ikke gider men så ved jeg det virker og så kan jeg selv rette mine andre scripts
Avatar billede moejensen Nybegynder
29. marts 2005 - 12:35 #6
prøv at fjern ' rundt om

placering, storrelse, pris, rykker
Avatar billede fastpoint Nybegynder
29. marts 2005 - 12:36 #7
hvad med dato felterne ? de ser sådan her DateAdd("M", Request("periode"), Date)  skal de ændres?
Avatar billede moejensen Nybegynder
29. marts 2005 - 12:36 #8
det ser ud til at der er ' uden om dine datofelter
Avatar billede moejensen Nybegynder
29. marts 2005 - 12:38 #9
hvis det ikke virker, så prøv med: ," & Date()  & "," & DateAdd("M", Request("periode"), Date)  & ",
Avatar billede fastpoint Nybegynder
29. marts 2005 - 12:38 #10
okay hvad med cvr nummer, postnr, tlf, mobil nummer det er også tal man skriver der
Dog ser cvrnummer sådan her ud 000-000-000
Avatar billede fennec Nybegynder
29. marts 2005 - 12:39 #11
Datofelterne skal måske have # omkring i stedet. Access vil dog godt tage ' i visse tilfælde. Desuden skal datoformatet være mm-dd-yyyy (måned først).
Avatar billede moejensen Nybegynder
29. marts 2005 - 12:42 #12
hvis det er tal, så sakal de rikke ' omkring
Avatar billede fennec Nybegynder
29. marts 2005 - 12:43 #13
cvr nummer skal være tekst (også i databasen)
mobil/tlf kan tal eller tekst (jeg bruger altid tekst da man så kan bruge mellemrum samt +45 )
postnr skal være tal, medmindre du skal bruge udenlanske postnumre også, så skal den være tekst.
Avatar billede fastpoint Nybegynder
29. marts 2005 - 12:47 #14
prøver lige rettelserne.
Kan man under alleomstændigheder ikke får den til at skrive hvad den forventer i de pågælgende felt istedet for den der grimme fejl? Det er lidt uprofessionelt
Avatar billede moejensen Nybegynder
29. marts 2005 - 12:51 #15
desværre ikke.
Avatar billede fennec Nybegynder
29. marts 2005 - 12:54 #16
Du kan ikke få den til at sige hvilke felter der er forkerte....
Husk at det ikke er hvad der indtastes, der afgører om der skal ' # eller intet omkring. Det bestemmes KUN af den datatype du har valgt til feltet i databasen.

Det er desuden god programering at tjekke alle data inden man indsætter, også give bruger besked hvis der mangler info eller formater er forkert, men det skal du selv gøre...
Avatar billede fastpoint Nybegynder
29. marts 2005 - 13:11 #17
jeg tror det er dato'erne der brokker sig. Har haft en del problemer med dem i andre spørgsmål. Hvordan skal de sættes ind korrekt? felterne er af typen date/time
lige nu sættes det ind som tekst for har "" rundt om.
Avatar billede fennec Nybegynder
29. marts 2005 - 13:19 #18
Jeg bruger altid # omkring datoer når det er Access. Samtidig skal formatet være mm-dd-yyyy som jeg også har skrevet tidligere. Du kan måske bruge denne funktion til at omformatere dine datoer:

Function ConvertToSqlDate(dato)
    dim SQLYear,SQLMonth,SQLDay
    SQLYear = Year(dato)
    SQLMonth = Month(dato)
    SQLDay = Day(dato)
    if SQLDay<10 then
        SQLDay = 0&SQLDay
    end if
    if SQLMonth<10 then
        SQLMonth = 0&SQLMonth
    end if
    ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear
End Function

sql = "insert into tabel(enDato) values(#"& ConvertToSqlDate(request.form("dato")) &"#)"
Avatar billede fastpoint Nybegynder
29. marts 2005 - 13:24 #19
det vil ikke skade? for er bange for den begynder at kludre mellem dansk/engelsk dato har haft lidt problemer med dato formattet så er blevet lidt træt af det

prøver lige med ## rundt om
Avatar billede fennec Nybegynder
29. marts 2005 - 13:27 #20
Funktionen kræver at brugeren indtaster i det format (LCID) som ASP bruger. Så hvis indtastningen skal være dd-mm-yyyy (DK format), skal du have sat den rigtige LCID som er 1030. Kan godt være standart værdi på serveren, men ellers kan du override det med:

session.LCID = 1030

Det skal bare være et sted i toppen af din side.
Avatar billede fastpoint Nybegynder
29. marts 2005 - 13:31 #21
virker stadig ikke. Jeg har valgt mit UPDATE script istedet for den brokker sig mere en opret scriptet. Den er faktisk ikke så slem.

    SQLstringK="UPDATE kunde SET firmanavn='"&Request.QueryString("firmanavn")&"', cvrnummer='"&Request.QueryString("cvrnummer")&"', adresse='"&Request.QueryString("adresse")&"', postnr='"&Request.QueryString("postnr")&"', byen='"&Request.QueryString("byen")&"', tlf='"&Request.QueryString("tlf")&"', mobil='"&Request.QueryString("mobil")&"', fax='"&Request.QueryString("fax")&"', email='"&Request.QueryString("email")&"', hjemmeside='"&Request.QueryString("hjemmeside")&"', beskrivelse='"&Request.QueryString("beskrivelse")&"', kontaktperson='"&Request.QueryString("kontaktperson")&"', ean='"&Request.QueryString("ean")&"', branche='"&Request.QueryString("branche")&"', omrode='"&Request.QueryString("omrode")&"', storrelse="&Request.QueryString("storrelse")&", placering="&Request.QueryString("placering")&", datoet=#"&Request.QueryString("datoet")&"#, datoto=#"&Request.QueryString("datoto")&"#, status='"&Request.QueryString("status")&"', kommentare='"&Request.QueryString("kommentare")&"', pris="&Request.QueryString("pris")&", betalingsdato=#"&Request.QueryString("betalingsdato")&"#,rykker="&Request.QueryString("rykker")&",pakkenavn='"&Request.QueryString("pakke")&"' WHERE id="&id


hvad skal jeg prøve at ændre på så den kan forstå det?
Avatar billede fennec Nybegynder
29. marts 2005 - 13:39 #22
prøv lige at skrive din SQL-streng ud til skærmen og fortæl os hvad den siger:

SQLstringK="UPDATE kunde ..."
response.write "SQL: "& SQLstringK

Der skal måske en response.end efter udskriften afhængig af hvilken debug mode serveren er sat til.
Avatar billede fastpoint Nybegynder
29. marts 2005 - 13:43 #23
undskylder min dumhed, men ved ikke lige hvordan det skal gøres.

<%Dim ID,opslag

id=Request.QueryString("ID")

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("../database.mdb")

if request.querystring("knap")<>"Ret" then

    SQLstringK="SELECT * FROM kunde WHERE id="&id
    SET opslag=Connection.Execute(SQLstringK)
else
   
    SQLstringK="UPDATE kunde SET firmanavn='"&Request.QueryString("firmanavn")&"', cvrnummer='"&Request.QueryString("cvrnummer")&"', adresse='"&Request.QueryString("adresse")&"', postnr='"&Request.QueryString("postnr")&"', byen='"&Request.QueryString("byen")&"', tlf='"&Request.QueryString("tlf")&"', mobil='"&Request.QueryString("mobil")&"', fax='"&Request.QueryString("fax")&"', email='"&Request.QueryString("email")&"', hjemmeside='"&Request.QueryString("hjemmeside")&"', beskrivelse='"&Request.QueryString("beskrivelse")&"', kontaktperson='"&Request.QueryString("kontaktperson")&"', ean='"&Request.QueryString("ean")&"', branche='"&Request.QueryString("branche")&"', omrode='"&Request.QueryString("omrode")&"', storrelse="&Request.QueryString("storrelse")&", placering="&Request.QueryString("placering")&", datoet=#"&Request.QueryString("datoet")&"#, datoto=#"&Request.QueryString("datoto")&"#, status='"&Request.QueryString("status")&"', kommentare='"&Request.QueryString("kommentare")&"', pris="&Request.QueryString("pris")&", betalingsdato=#"&Request.QueryString("betalingsdato")&"#,rykker="&Request.QueryString("rykker")&",pakkenavn='"&Request.QueryString("pakke")&"' WHERE id="&id
    Connection.Execute(SQLstringK)
    response.buffer=true
    response.clear
    response.redirect "rettet.asp"
    response.end

end if
    %>

sådan ser hele koden ud hvor skal det sættes ind?
Avatar billede fennec Nybegynder
29. marts 2005 - 13:47 #24
...
SQLstringK="UPDATE kunde SET firmanavn='"&Request.QueryString("firmanavn")&"', cvrnummer='"&Request.QueryString("cvrnummer")&"', adresse='"&Request.QueryString("adresse")&"', postnr='"&Request.QueryString("postnr")&"', byen='"&Request.QueryString("byen")&"', tlf='"&Request.QueryString("tlf")&"', mobil='"&Request.QueryString("mobil")&"', fax='"&Request.QueryString("fax")&"', email='"&Request.QueryString("email")&"', hjemmeside='"&Request.QueryString("hjemmeside")&"', beskrivelse='"&Request.QueryString("beskrivelse")&"', kontaktperson='"&Request.QueryString("kontaktperson")&"', ean='"&Request.QueryString("ean")&"', branche='"&Request.QueryString("branche")&"', omrode='"&Request.QueryString("omrode")&"', storrelse="&Request.QueryString("storrelse")&", placering="&Request.QueryString("placering")&", datoet=#"&Request.QueryString("datoet")&"#, datoto=#"&Request.QueryString("datoto")&"#, status='"&Request.QueryString("status")&"', kommentare='"&Request.QueryString("kommentare")&"', pris="&Request.QueryString("pris")&", betalingsdato=#"&Request.QueryString("betalingsdato")&"#,rykker="&Request.QueryString("rykker")&",pakkenavn='"&Request.QueryString("pakke")&"' WHERE id="&id

response.write "SQL: "& SQLstringK
response.end
Connection.Execute(SQLstringK)
Avatar billede fastpoint Nybegynder
29. marts 2005 - 13:52 #25
SQL: UPDATE kunde SET firmanavn='asdasda', cvrnummer='jnjn', adresse='jknjk', postnr='njk', byen='njk', tlf='nkj', mobil='n', fax='kjn', email='jk', hjemmeside='njk', beskrivelse='n', kontaktperson='jkn', ean='asd', branche='aka', omrode='Bagsværd', storrelse=5, placering=5, datoet=#29-03-2005#, datoto=#29-06-2005#, status='Mangler', kommentare='afdasd', pris=, betalingsdato=#10-10-2000#,rykker=0,pakkenavn='Standard Registrering' WHERE id=56
Avatar billede fastpoint Nybegynder
29. marts 2005 - 13:56 #26
pris=,

den så jeg var tom. nu har jeg fået den til at hente sin værdi og det ser ud til at virke.

Det kan da ikke have været det alene eller?
Avatar billede fennec Nybegynder
29. marts 2005 - 14:00 #27
Det kan godt bare have været den.
Det hjælper gerne at udskrive SQL'en, da det er nemmere at se fejlen :o)
Avatar billede fennec Nybegynder
29. marts 2005 - 14:34 #28
Og et svar hvis der ikke er flere problemer :o)
Avatar billede fastpoint Nybegynder
29. marts 2005 - 17:27 #29
Det ser ud til at virke ellers vender jeg bare tilbage:)
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