Avatar billede cotus Nybegynder
18. juni 2002 - 16:37 Der er 18 kommentarer og
1 løsning

Insert into fejl...

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

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

/mode/save.asp, line 14

strSQL = "Insert into bruger (brugerNavn, brugerKode, brugerAlder, brugerEmail, brugerHjemmeside, brugerMsn, brugerTekst, brugerBillede, brugerDato, brugerIcq) values('" & Request.Form("brugernavn") & "','" & Request.Form("kodeord") & "','" & Request.Form("alder") & "','" & Request.Form("email") & "','" & Request.Form("hjemmeside") & "','" & Request.Form("msn") & "','" & Request.Form("beskrivelse") & "','" & Request.Form("billede") & "','" & Now & "','" & Request.Form("ICQ") & "')"
Conn.Execute(strSQL)
Avatar billede krisbjoern Nybegynder
18. juni 2002 - 16:56 #1
Det er god programmerings-skik først at lagre indholdet fra input-felterne i nogle variabler. f.eks.
strBrugernavn = request.Form("brugernavn") etc.
Dernæst vil jeg foreslå dig at prøve at smide een af input'ene over i databasen, hvis det virker går du videre til den næste.
På den måde finder du ud af hvilken request.Form der volder problemmerne.
Du kan også prøve at lave en udskrift af alle request.Form værdierne og se om alt kommer med.

Til sidst vil jeg sige at det kan være din Request.Form("billede") der volder problemmer. Er det selve grafikken du vil smide ind i databasen eller er det en streng til grafikken?
Access er ret bøvlet at smide grafik ind i, det er bedre at uploade grafikken til en mappe for sig og så gemme stien til grafikken i databasen.
MEN! så skal du bruge et Upload-komponent(de fleste webhoteller, der understøtter ASP har dette komponent installeret): ASPUpload.

Held og lykke
Venlig Hilsen
Kristian Bjørn
Avatar billede sone Nybegynder
18. juni 2002 - 17:00 #2
Prøv at udskrive strSQL og se om der ligner det "forventede"
Avatar billede cotus Nybegynder
18. juni 2002 - 17:20 #3
Navn: jacobberget
Kode: bergetjacob
Alder: 14
Email: jacobberget@hotmail.com
Hjemmeside: http://www.hotmail.com
MSN: jacob@berget.as
Tekst: Test
Billede: /mode/bruger/images/15.gif
Dato: 18-06-2002 17:20:32
ICQ: None

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

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

/mode/save.asp, line 46
Avatar billede eagleeye Praktikant
18. juni 2002 - 17:53 #4
alder indtaster du som tal... Er Alder defieneret som tal i databasen for så skal der ikke ' omrkirng i SQL sætnigen.

strSQL = "Insert into bruger (brugerNavn, brugerKode, brugerAlder, brugerEmail, brugerHjemmeside, brugerMsn, brugerTekst, brugerBillede, brugerDato, brugerIcq) values('" & Request.Form("brugernavn") & "','" & Request.Form("kodeord") & "'," & Request.Form("alder") & ",'" & Request.Form("email") & "','" & Request.Form("hjemmeside") & "','" & Request.Form("msn") & "','" & Request.Form("beskrivelse") & "','" & Request.Form("billede") & "','" & Now & "','" & Request.Form("ICQ") & "')"
Avatar billede eagleeye Praktikant
18. juni 2002 - 17:54 #5
Hvis brugerDato er defineret som Dato/Tid i databasen skal der hvis det en access database # omkring og ikke '.


strSQL = "Insert into bruger (brugerNavn, brugerKode, brugerAlder, brugerEmail, brugerHjemmeside, brugerMsn, brugerTekst, brugerBillede, brugerDato, brugerIcq) values('" & Request.Form("brugernavn") & "','" & Request.Form("kodeord") & "'," & Request.Form("alder") & ",'" & Request.Form("email") & "','" & Request.Form("hjemmeside") & "','" & Request.Form("msn") & "','" & Request.Form("beskrivelse") & "','" & Request.Form("billede") & "',#" & Now & "#,'" & Request.Form("ICQ") & "')"

Bemærk der er inden ' omkring alder så i den SQL antager jeg at alder er defineret som tal i databasen.
Avatar billede cotus Nybegynder
18. juni 2002 - 18:24 #6
Jeg fatter nade... nu vil den lige pludselig ikke gøre det rigtigt... Når jeg opretter en bruger, siger den at det er gjort succsfuldt, men den opretter det ikke i min database???

<%
strBrugernavn = Request.Form("brugernavn")
strBrugerkode = Request.Form("kodeord")
strBrugeralder = Request.Form("alder")
strBrugeremail = Request.Form("email")
strBrugerhjemmeside = Request.Form("hjemmeside")
strBrugermsn = Request.Form("msn")
strBrugertekst = Request.Form("beskrivelse")
strBrugerbillede = Request.Form("billede")
strBrugerdato = Now
strBrugericq = Request.Form("icq")

If strBrugerhjemmeside = "" Then
    strBrugerhjemmeside = "None"
End if
If strBrugermsn = "" Then
    strBrugermsn = "None"
End if
If strBrugericq = "" Then
    strBrugericq = "None"
End if

If strBrugernavn = "" Then
    Response.redirect "/mode/opret.asp?error=Brugernavn&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugerkode = "" Then
    Response.redirect "/mode/opret.asp?error=Brugerkode&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugeralder = "" Then
    Response.redirect "/mode/opret.asp?error=Alder&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugeremail = "" Then
    Response.redirect "/mode/opret.asp?error=Email&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugertekst = "" Then
    Response.redirect "/mode/opret.asp?error=Tekst&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugerbillede = "" Then
    Response.redirect "/mode/opret.asp?error=Billede&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugerdato = "" Then
    Response.redirect "/mode/opret.asp?error=Dato&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugericq = "" Then
    Response.redirect "/mode/opret.asp?error=ICQ&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if

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


Sql = "SELECT * FROM bruger WHERE brugerNavn = '" & Request.Form("brugernavn") & "'"
Set rs = Conn.Execute(sql)
If rs.EOF Then


strSQL = "Insert into bruger (brugerNavn, brugerKode, brugerAlder, brugerEmail, brugerHjemmeside, brugerMsn, brugerTekst, brugerBillede, brugerDato, brugerIcq) values('" & strBrugernavn & "','" & strBrugerkode & "'," & strBrugeralder & ",'" & strBrugeremail & "','" & strBrugerhjemmeside & "','" & strBrugermsn & "','" & strBrugertekst & "','" & strBrugerbillede & "',#" & strBrugerdato & "#," & strBrugericq & ")"

Response.redirect "/mode/default.asp?msg=Din+bruger+er+nu+oprettet"

Else
    Response.redirect "/mode/opret.asp?msg=Brugernavnet+er+allerede+taget"
End if


Conn.Close
Set Conn = Nothing
%>

Hvorfor ikke?
Avatar billede a1a1 Novice
18. juni 2002 - 18:42 #7
du skal lige huske en Conn.Execute(strSQL) efter

strSQL = "Insert into bruger (brugerNavn, brugerKode, brugerAlder, brugerEmail, brugerHjemmeside, brugerMsn, brugerTekst, brugerBillede, brugerDato, brugerIcq) values('" & strBrugernavn & "','" & strBrugerkode & "'," & strBrugeralder & ",'" & strBrugeremail & "','" & strBrugerhjemmeside & "','" & strBrugermsn & "','" & strBrugertekst & "','" & strBrugerbillede & "',#" & strBrugerdato & "#," & strBrugericq & ")"

:)
Avatar billede eagleeye Praktikant
18. juni 2002 - 18:43 #8
du mangler lige en Conn.execute(strSQL) efter du har opbygget din SQL sætning...:

strSQL = "Insert into bruger (brugerNavn, brugerKode, brugerAlder, brugerEmail, brugerHjemmeside, brugerMsn, brugerTekst, brugerBillede, brugerDato, brugerIcq) values('" & strBrugernavn & "','" & strBrugerkode & "'," & strBrugeralder & ",'" & strBrugeremail & "','" & strBrugerhjemmeside & "','" & strBrugermsn & "','" & strBrugertekst & "','" & strBrugerbillede & "',#" & strBrugerdato & "#," & strBrugericq & ")"

Conn.execute(strSQL)
Avatar billede cotus Nybegynder
18. juni 2002 - 19:14 #9
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.

/mode/save.asp, line 58

Når jeg prøver at oprette en bruger!!!

<%
strBrugernavn = Request.Form("brugernavn")
strBrugerkode = Request.Form("kodeord")
strBrugeralder = Request.Form("alder")
strBrugeremail = Request.Form("email")
strBrugerhjemmeside = Request.Form("hjemmeside")
strBrugermsn = Request.Form("msn")
strBrugertekst = Request.Form("beskrivelse")
strBrugerbillede = Request.Form("billede")
strBrugerdato = Now
strBrugericq = Request.Form("icq")

If strBrugerhjemmeside = "" OR strBrugerhjemmeside = "http://" Then
    strBrugerhjemmeside = "None"
End if
If strBrugermsn = "" Then
    strBrugermsn = "None"
End if
If strBrugericq = "" Then
    strBrugericq = ""
End if

If strBrugernavn = "" Then
    Response.redirect "/mode/opret.asp?error=Brugernavn&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugerkode = "" Then
    Response.redirect "/mode/opret.asp?error=Brugerkode&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugeralder = "" Then
    Response.redirect "/mode/opret.asp?error=Alder&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugeremail = "" Then
    Response.redirect "/mode/opret.asp?error=Email&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugertekst = "" Then
    Response.redirect "/mode/opret.asp?error=Tekst&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugerbillede = "" Then
    Response.redirect "/mode/opret.asp?error=Billede&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if
If strBrugerdato = "" Then
    Response.redirect "/mode/opret.asp?error=Dato&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
End if


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


Sql = "SELECT * FROM bruger WHERE brugerNavn = '" & Request.Form("brugernavn") & "'"
Set rs = Conn.Execute(sql)
If rs.EOF Then


strSQL = "Insert into bruger (brugerNavn, brugerKode, brugerAlder, brugerEmail, brugerHjemmeside, brugerMsn, brugerTekst, brugerBillede, brugerDato, brugerIcq) values('" & strBrugernavn & "','" & strBrugerkode & "'," & strBrugeralder & ",'" & strBrugeremail & "','" & strBrugerhjemmeside & "','" & strBrugermsn & "','" & strBrugertekst & "','" & strBrugerbillede & "',#" & strBrugerdato & "#," & strBrugericq & ")"
Conn.execute(strSQL)

Response.redirect "/mode/default.asp?msg=Din+bruger+er+nu+oprettet"

Else
    Response.redirect "/mode/opret.asp?msg=Brugernavnet+er+allerede+taget"
End if


Conn.Close
Set Conn = Nothing
%>
Avatar billede eagleeye Praktikant
18. juni 2002 - 20:00 #10
Er alle kolonnenavne stavet rigtigt?
Avatar billede eagleeye Praktikant
18. juni 2002 - 20:06 #11
indtaster du noget med ' i teksten i stil med Ole's bil ??
Avatar billede eagleeye Praktikant
18. juni 2002 - 20:12 #12
Det er en god ide at replace en ' med to '' når man smider ind i en database. De bør gøres for alle tekst kolonner for at undgå SQL fejl. SQL fortolkeren fortolker en ' som start og slut på en streng i SQL sætningen, men hvis der er to efter hinanden '' så bliver det konvretet til en ' og indsat i kolonnen. (På samme måde som med Response.write """"" giver en ").

Du kan gøre det i else delen på if sætningen som tjekke på om et input et tomt. Du kan ikke bare skrive replace(Request.form("navn")) da replace vil komme med en Script Fejl hvis form-feltet er tomt.


If strBrugertekst = "" Then
    Response.redirect "/mode/opret.asp?error=Tekst&brugernavn=" & strBrugernavn & "&brugerkode=" & strBrugerkode & "&alder=" & strBrugeralder & "&email=" & strBrugeremail & "&hjemmeside=" & strBrugermsn & "&tekst=" & strBrugertekst & "&billede=" & strBrugerbillede & "&dato=" & strBrugerdato & "&icq=" & strBrugericq
else
  strBrugertekst = replace(strBrugertekst,"'","''")
End if
Avatar billede cotus Nybegynder
18. juni 2002 - 21:56 #13
Avatar billede eagleeye Praktikant
18. juni 2002 - 22:51 #14
Får du en fejl?
Avatar billede tmceu Praktikant
19. juni 2002 - 06:29 #15
Dit insert statement ser fint ud ift. datatyper, så det kunne være en forskel i datoformat mellem webserveren og databasen ?

Brug i stedet den indbyggede now funktion direkte i databasen (som du gjorde fra startetn) med denne ændring:

strSQL = "Insert into bruger (brugerNavn, brugerKode, brugerAlder, brugerEmail, brugerHjemmeside, brugerMsn, brugerTekst, brugerBillede, brugerDato, brugerIcq) values('" & strBrugernavn & "','" & strBrugerkode & "'," & strBrugeralder & ",'" & strBrugeremail & "','" & strBrugerhjemmeside & "','" & strBrugermsn & "','" & strBrugertekst & "','" & strBrugerbillede & "', now()," & strBrugericq & ")"
Avatar billede cotus Nybegynder
19. juni 2002 - 09:27 #16
Jeg får denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
/mode/save.asp, line 60

:(

Linie 60 er Conn.Execute(strSQL)
Avatar billede cotus Nybegynder
19. juni 2002 - 22:24 #17
Er der ikke en anden måde at indsætte i en database med? Noget med AddNew?

Gider nogen at lave sådan en AddNew-kode, som indsætter flg. i flg. kolonner:

brugerNavn = Request.Form("brugernavn")
brugerKode = Request.Form("kodeord")
brugerAlder = Request.Form("alder")
brugerEmail = Request.Form("email")
brugerHjemmeside = Request.Form("hjemmeside")
brugerMsn = Request.Form("msn")
brugerIcq = Request.Form("icq")
brugerTekst = Request.Form("beskrivelse")
brugerBillede = Request.Form("billede")
brugerDato = Now()

Og det må meget gerne fungere! :)

På forhånd tak!

/cotus
Avatar billede eagleeye Praktikant
19. juni 2002 - 22:40 #18
Du kan åben med denne SL sætning: "SELECT * FORM bruger WHERE ID=0"
ID=0 gør sådan at du får en et tomt recordset ID skal være nanvnet på dit autonummer felt.

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FORM bruger WHERE ID=0", conn,1,3
rs.AddNew
rs("brugerNavn") = Request.Form("brugernavn")
rs("brugerKode") = Request.Form("kodeord")
rs("brugerAlder") = Request.Form("alder")
rs("brugerEmail") = Request.Form("email")
rs("brugerHjemmeside") = Request.Form("hjemmeside")
rs("brugerMsn") = Request.Form("msn")
rs("brugerIcq") = Request.Form("icq")
rs("brugerTekst") = Request.Form("beskrivelse")
rs("brugerBillede") = Request.Form("billede")
rs("brugerDato") = Now()
rs.Update
rs.Close
Avatar billede cotus Nybegynder
19. juni 2002 - 22:47 #19
rs.Open "SELECT * FORM bruger WHERE ID=0", conn,1,3
=
rs.Open "SELECT * FROM bruger WHERE ID=0", conn,1,3

Takker for hjælpen! :)
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