Avatar billede martin181 Nybegynder
17. december 2001 - 13:52 Der er 17 kommentarer og
1 løsning

Træls fejl....sikkert nem at løse...

...men jeg har stirret mig blind på den:

Jeg vil indsætte nogle data i en accessdatabase, men jeg får denne fejlmelding:

Technical Information (for support personnel)

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/Support-NY/gemnykunde.asp, line 12

gemnykunde.asp er her:

<%
RESPONSE.BUFFER=\"True\"
%>
<!-- Forbindelsen til databasen -->
<%
DIM CONNECT, ONGemNye
SET CONNECT = SERVER.CREATEOBJECT(\"ADODB.CONNECTION\")
CONNECT.OPEN \"DRIVER={Microsoft ACCESS DRIVER (*.MDB)}; DBQ=\" & Server.MapPath (\"al-dente.MDB\")
%>
<!-- Herunder foregår selve indsættelsen i databasen -->
<%
SET ONGemNye = CONNECT.EXECUTE (\"INSERT INTO kunder (DNKundenr, Navn, tlf, email, Hotline, Version, Antal,  Kommentar) VALUES (\"+ REQUEST.form(\"DNKundenr\")+\",\'\"+ REQUEST.form(\"Navn\")+\"\',\'\"+  REQUEST.form(\"tlf\")+\"\',\'\"+ REQUEST.form(\"email\")+\"\',\'\"+ REQUEST.form(\"Hotline\")+\"\',\'\"+ REQUEST.form(\"Version\")+\"\',\"+ REQUEST.form(\"Antal\") +\",\'\"+ REQUEST.form(\"Kommentar\") +\"\')\")
%>
<!-- Herunder udføres redirect -->
<%
RESPONSE.REDIRECT(\"succes.htm\")
%> 

Den der sender data til siden er her:

<FORM ACTION=\"gemnykunde.asp\" METHOD=\"POST\" NAME=\"Nye\">
<TABLE BORDER=1>
<TR>
<TD>DN Kundenr</TD>
<TD><INPUT TYPE=\"text\" SIZE=\"8\" MAXLENGTH=\"8\" NAME=\"DNKundenr\"></TD>
</TR>
<TR>
<TD>Navn</TD>
<TD><INPUT TYPE=\"text\" SIZE=\"40\" MAXLENGTH=\"50\" NAME=\"Navn\"></TD>
</TR>
<TR>
<TD>Tlf</TD>
<TD><INPUT TYPE=\"text\" SIZE=\"20\" MAXLENGTH=\"20\" NAME=\"Tlf\"></TD>
</TR>
<TR>
<TD>Email</TD>
<TD><INPUT TYPE=\"text\" SIZE=\"50\" MAXLENGTH=\"100\" NAME=\"Email\"></TD>
</TR>
<TR>
<TD>Version</TD>
<TD><INPUT TYPE=\"text\" SIZE=\"20\" NAME=\"Version\"></TD>
</TR>
<TR>
<TD>Antal brugere</TD>
<TD><INPUT TYPE=\"text\" SIZE=\"20\" NAME=\"Antal\"></TD>
</TR>
<TR>
<TD>Hotline</TD>
<TD><INPUT TYPE=\"checkbox\" NAME=\"Hotline\" CHECKED></TD>
</TR>
<TR>
<TD>Kommentar</TD>
<TD><TEXTAREA WRAP=\"physical\" ROWS=\"5\" COLS=\"51\" NAME=\"Kommentar\"></TEXTAREA></TD>
</TR>
</TABLE>
<BR><BR>
<INPUT TYPE=\"submit\" VALUE=\"Registrer\"> &nbsp; <INPUT TYPE=\"reset\" VALUE=\"Rens felter\">
</FORM>

Min tabel kunder i min database al-dente er opbygget således:

DNKundenr number - required
Navn      text  - required
tlf      text  - required
email    text  -
Hotline  yes/no - required
Version  text  -
Antal    number -
Kommentar memo  -

Er der nogen der kan hjælpe mig med at få løst min fejl?
Avatar billede euhp Nybegynder
17. december 2001 - 14:03 #1
Du skal konvertere værdier fra Request.Form(\"DNKundeNr\") med fx. cInt(Request.Form(DNKundeNr)) for at være sikker på, at de bliver behandlet som Integer værdier.
Avatar billede martin181 Nybegynder
17. december 2001 - 14:04 #2
jeg prøver lige engang
Avatar billede martin181 Nybegynder
17. december 2001 - 14:06 #3
Jeg satte det ind ved DNKundenr og Antal, nu fik jeg følgende fejl:

Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/Support-NY/gemnykunde.asp, line 12, column 379
Avatar billede euhp Nybegynder
17. december 2001 - 14:09 #4
Gjorde du det sådan:

SET ONGemNye = CONNECT.EXECUTE (\"INSERT INTO kunder (DNKundenr, Navn, tlf, email, Hotline, Version, Antal,  Kommentar) VALUES (\"+ cInt(REQUEST.form(\"DNKundenr\"))+\",\'\"+ REQUEST.form(\"Navn\")+\"\',\'\"+  REQUEST.form(\"tlf\")+\"\',\'\"+ REQUEST.form(\"email\")+\"\',\'\"+ REQUEST.form(\"Hotline\")+\"\',\'\"+ REQUEST.form(\"Version\")+\"\',\"+ cInt(REQUEST.form(\"Antal\")) +\",\'\"+ REQUEST.form(\"Kommentar\") +\"\')\")
Avatar billede martin181 Nybegynder
17. december 2001 - 14:12 #5
Jeg kopierede lige din ind for at være på den sikre side, nu får jeg følgende fejl:

Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch: \'[string: \"INSERT INTO kunder (\"]\'
/Support-NY/gemnykunde.asp, line 12
Avatar billede nute Nybegynder
17. december 2001 - 15:03 #6
euhp >> det er ikke nødvendig å konvertere verdiene fra request streamen til tall for å skulle kunne sette dem inn i en SQL. En SQL er ikke annet enn en streng uansett, og datatypen til en kolonne blir definert ved å omslutte verdien med \'\' hvis det er en tekstverdi eller ingenting hvis kolonnen er numerisk.

martin181 >> du benytter + til å konkatinere din streng. i VBScript så skal du bruke &...prøv denne:

SET ONGemNye = CONNECT.EXECUTE (\"INSERT INTO kunder (DNKundenr, Navn, tlf, email, Hotline, Version, Antal,  Kommentar) VALUES (\"& REQUEST.form(\"DNKundenr\")&\",\'\"& REQUEST.form(\"Navn\")&\"\',\'\"&  REQUEST.form(\"tlf\")&\"\',\'\"& REQUEST.form(\"email\")&\"\',\'\"& REQUEST.form(\"Hotline\")&\"\',\'\"& REQUEST.form(\"Version\")&\"\',\"& REQUEST.form(\"Antal\") &\",\'\"& REQUEST.form(\"Kommentar\") &\"\')\")

/nute
Avatar billede martin181 Nybegynder
17. december 2001 - 15:06 #7
nute>> jeg prøver lige
Avatar billede martin181 Nybegynder
17. december 2001 - 15:29 #8
Ved at kopiere din tekst ind, får jeg følgende:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/Support-NY/gemnykunde.asp, line 12
Avatar billede nute Nybegynder
17. december 2001 - 15:38 #9
hmmm...det er høyst sannsynlig din \'hotline\' kolonne som skaper problemer. jeg husker ærlig talt ikke hvordan man setter inn boolske verdier i en access database, men prøv å fjern \'\' rundt REQUEST.form(\"Hotline\")
Avatar billede martin181 Nybegynder
17. december 2001 - 15:41 #10
det vil jeg prøve
Avatar billede martin181 Nybegynder
17. december 2001 - 15:49 #11
Hmm...jeg prøvede at fjerne \'\' rundt om det, nu lykkedes det, men kun hvis jeg har afmærket min hotline...ellers er fejlen:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
/Support-NY/gemnykunde.asp, line 12

Og jeg vil jo også godt kunne oprette kunder uden hotline
Avatar billede nute Nybegynder
17. december 2001 - 15:50 #12
hmmm...så skal nok \'\'  være der...

hvilken verdi får du fra REQUEST.form(\"Hotline\") ?
Avatar billede martin181 Nybegynder
17. december 2001 - 15:54 #13
Hvis den er markeret: On
Avatar billede nute Nybegynder
17. december 2001 - 16:00 #14
den skal jo være yes/no eller true/false !!?? kolonnen heter Yes/no, så det er jo rimelig enkelt å regne ut at den verdi du prøver  å putte inn i kolonnen skal være det samme.. ??
Avatar billede martin181 Nybegynder
17. december 2001 - 16:02 #15
Det lyder jo rigtigt nok, men den giver mig ingen fejl, hvis jeg har afkrydset feltet, det er kun hvis jeg ikke har afkrydset feltet at den giver fejl
Avatar billede nute Nybegynder
17. december 2001 - 16:07 #16
hvis den ikke er avkrysset, så vil du jo prøve å sette inn en tom verdi i den kolonnen og det går jo ikke...du er nødt til å sjekke for om den er krysset av eller ikke og så sette inn on/off, yes/no eller true/false alt ettersom...
Avatar billede martin181 Nybegynder
17. december 2001 - 16:09 #17
ok - jeg forstår dig, jeg forsøger det og vender tilbage i morgen
Avatar billede martin181 Nybegynder
20. december 2001 - 14:06 #18
jeg lukker spm, jeg prøver noget andet, det sidste lykkedes ikke
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