Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:19 Der er 28 kommentarer og
2 løsninger

Forkert Datatype ????

Hej eksperter....

Jeg er ved at lave en e handel hvor jeg skal

skrive brugernes ordrer til min ordre tabel

men det lader sig ikke gøre fordi jeg får

følgende fejl om og om igen ....

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

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

/flash/kurv.asp, line 50


LINKS:

Her ligger kurv.asp

http://iceb.ljnet.dk/flash/kurv.asp

og her er submit siden der hedder eha.asp

http://iceb.ljnet.dk/flash/eha.asp?pic=image3.jpg


Her er koden til kurv.asp

<%

response.write (request.form("tiddato"))&"<br>"

response.write (request.form("produktnavn"))&"<br>"

response.write (request.form("produktpris"))&"<br>"

response.write (request.form("brugernavn"))&"<br>"

Dim td

td=response.write (request.form("tiddato"))

response.write td


Dim pn

pn=response.write (request.form("produktnavn"))

response.write pn


Dim pp

pp=response.write (request.form("produktpris"))

response.write pp



Dim bn

bn= response.write(request.form("brugernavn"))

response.write bn

' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("hp.mdb")
Conn.Open DSN

' SQL forespørgsel

strSQL = "insert into ehandelsordrer (brugernavn, produktnavn, produktpris, tiddato) values ('" & bn & "', '" & pn & "', '"& pp &"', '"& td &"')"

' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke


  ' Udskriv værdien af kolonnen Fornavn og fødselsdato



  ' Gå til næste Record i rs


' Fortsæt indtil rs er gennemløbet (EOF = End Of File)


' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing

%>



Her er koden til siden der submitter til kurv.asp

som kaldes eha.asp



<html>
<title>Stort billede af produktet</title>
<head>
</head>
<body>


<%
' Værdien af variablen navn findes
Response.Write "<h1>Billedfil>> " & Request.Querystring("pic") & "</h1>"
' Værdien af variablen alder findes
Response.Write "<h1> " & Request.Querystring("text") & "</h1>"

%>


<img src="http://iceb.ljnet.dk/flash/

<%

response.write request.querystring("pic")

%>

"><br><br>

<%


' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("hp.mdb")
Conn.Open DSN

' SQL forespørgsel

strSQL="SELECT * FROM ehandel WHERE produktbilledefil='" & request.querystring("pic") & "'"

' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke
Do

  ' Udskriv værdien af kolonnen Fornavn og fødselsdato
  Response.Write "<h1>BilledTitel >> "& rs("produktnavn") & "<br>"

Dim pn

pn=rs("produktnavn")

response.write pn

Response.Write "<h1>Beskrivelse >> "& rs("produktbeskrivelse") & "<br>"

Response.Write "<h1>Pris Kr. >> "& rs("produktpris") & "<br>"

Dim pp

pp=rs("produktpris")

response.write pp

  ' Gå til næste Record i rs
  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing


Dim td

td=date()

response.write td

Dim bn

bn="iceb"

response.write bn


%>
<br>

Gå til kassen <a href="http://iceb.ljnet.dk/flash/kasse.asp" target="_blank">her</a>

<br>

Læg varen i <a href="http://iceb.ljnet.dk/flash/kasse.asp" target="_blank">kurven</a>

<br>

Luk dette vindue <a href="java script: self.close()">her</a>
<br><br>

<P><FORM METHOD=POST ACTION="kurv.asp">

<INPUT TYPE=hidden NAME=tiddato VALUE="<%response.write td%>">

<INPUT TYPE=hidden NAME=produktnavn VALUE="<%response.write pn%>">

<INPUT TYPE=hidden NAME=produktpris VALUE="<%response.write pp%>">

<INPUT TYPE=hidden NAME=brugernavn VALUE="<%response.write bn%>">

<br><INPUT TYPE="submit" VALUE="Læg varen i kurven">

</FORM>
<br><br><a href="java script:window.print()">Udskriv</a><br><br>

</body>
</html>

Avatar billede tmceu Praktikant
16. maj 2002 - 17:23 #1
Det sker typisk hvis du har en tekst-værdi, men glemmer ' rundt om værdien, eller omvendt hvis du har en nummerisk værdi, men angiver '.
Avatar billede tmceu Praktikant
16. maj 2002 - 17:24 #2
- og lige en lille kommentar: Hvis du anvender en Access database, regner du ikke med at din løsning bliver den helt store succes, vel ?
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:25 #3
Denne her er den linie den melder om fejl i ....

strSQL = "insert into ehandelsordrer (brugernavn, produktnavn, produktpris, tiddato) values ('" & bn & "', '" & pn & "', '"& pp &"', '"& td &"')"
Avatar billede kimiwan Nybegynder
16. maj 2002 - 17:26 #4
strSQL = "insert into ehandelsordrer (brugernavn, produktnavn, produktpris, tiddato) values ('" & bn & "', '" & pn & "', "& pp &", #"& td &"#)"

hvis produktpris er et talfelt og tiddato er et datofelt
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:26 #5
aha det forklarer at det er i de numriske værdier den laver fejl

eller hvad ? hvad skal jeg SÅ skrive i min sql sætning ?

Nej det gør jeg ikke den er kun lavet til de eksistrerende kunder

og der er ikke mange s
Avatar billede tmceu Praktikant
16. maj 2002 - 17:27 #6
Ja, den fejler i den linie, fordi de værdier du vil indsætte ikke er angivet rigtigt. Jeg vil mene at den skal se sådan ud:

strSQL = "insert into ehandelsordrer (brugernavn, produktnavn, produktpris, tiddato) values ('" & bn & "', '" & pn & "', "& pp &", #"& td &"#)"

Dato/tid skal typisk omgives af # i Access.
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:31 #7
nej det virker ikke jeg prøvede med ....

strSQL = "insert into ehandelsordrer (brugernavn, produktnavn, produktpris, tiddato) values ('" & bn & "', '" & pn & "', "& pp &", #"& td &"#)"

og fik

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

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

/flash/kurv.asp, line 50
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:32 #8
hvordan skal jeg typisk sætte doto og pris feltet op i design

view ? for måske er fejlen der....
Avatar billede tmceu Praktikant
16. maj 2002 - 17:33 #9
Så må du fortælle hvordan dine felter er defineret i Access, altså datatyper.

Hvis dato/tid ikke er en dato i Access, men derimod tekst ? skal det være

strSQL = "insert into ehandelsordrer (brugernavn, produktnavn, produktpris, tiddato) values ('" & bn & "', '" & pn & "', "& pp &", '"& td &"')"
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:34 #10
min db ligger her hvis det kan hjælpe ....

http://iceb.ljnet.dk/flash/hp.mdb

tabellen hedder ehandelsordrer.....
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:37 #11
produktpris er som currency

tiddato er som date/time
Avatar billede tmceu Praktikant
16. maj 2002 - 17:40 #12
Det kan skyldes at du har komma i din pris i stedet for punktum ?

prøv at indsætte pp = replace(pp, ",", ".")

Hvis dato tid er et timestamp, ville jeg sætte default value = Date() på tabellen og så kun bruge



strSQL = "insert into ehandelsordrer (brugernavn, produktnavn, produktpris) values ('" & bn & "', '" & pn & "', "& pp &")"
Avatar billede kimiwan Nybegynder
16. maj 2002 - 17:42 #13
ok, du skal bruge den første sql streng, jeg skrev, og så skal du lige tjekke at ihvertfald produktpris og tiddato *er* udfyldt... de må ikke være ingenting
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:46 #14
produktpris og tiddato er jo udskriver på siden så dermed er

de udfyldt de er jo angivet som hidden form fields jo ....

Hvad er time stamp hvor finder jeg ud af om jeg bruger det ?
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:48 #15
hvis jeg udskifter dato var og min pris var med

reelle værdier som 20 og for datoen 16-05-2002

så viker det hele ... hvordan kan det være ?
Avatar billede tmceu Praktikant
16. maj 2002 - 17:49 #16
Det jeg mener med timestamp er, om du blot bruger datoen til at finde ud af, hvornår posten er lagt i databasen (= timestamp) eller om det eks. er en ordredato som man selv kan vælge :-)
Avatar billede kimiwan Nybegynder
16. maj 2002 - 17:51 #17
iceb: lige efter du bygger din sql streng skal du skrive:

response.write(strSQL)
response.end

så kan du se, hvad der er galt ;o) (ellers post det her)
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:52 #18
altså datoen skrives jo med date() i asp og gemmes til en var der

hedder dt og dt skal så skrives til min database som senere skal

bruges så brugeren ved "kassen" kan se den ok ?
Avatar billede tmceu Praktikant
16. maj 2002 - 17:54 #19
Det kan være gr. forskellige formater på dato i ASP og Access. Prøv eks. at inkludere Session.LCID = 1030 i toppen af siden = dansk.
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:55 #20
kim>ok nu har jeg gjort det MEN den laver samme fejl melding

som før .... HER er hele koden for kurv.asp

<%

response.write (request.form("tiddato"))&"<br>"

response.write (request.form("produktnavn"))&"<br>"

response.write (request.form("produktpris"))&"<br>"

response.write (request.form("brugernavn"))&"<br>"

Dim td

td=response.write (request.form("tiddato"))

response.write td


Dim pn

pn=response.write (request.form("produktnavn"))

response.write pn



Dim pp

pp=response.write (request.form("produktpris"))

response.write pp




Dim bn

bn= response.write(request.form("brugernavn"))

response.write bn

' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("hp.mdb")
Conn.Open DSN

' SQL forespørgsel

strSQL = "insert into ehandelsordrer (brugernavn, produktnavn, produktpris, tiddato) values ('" & bn & "', '" & pn & "', "& pp &", #"& td &"#)"

' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

response.write(strSQL)
response.end


' Gennemløb Recordset (rs) med en løkke


  ' Udskriv værdien af kolonnen Fornavn og fødselsdato



  ' Gå til næste Record i rs


' Fortsæt indtil rs er gennemløbet (EOF = End Of File)


' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing





%>
Avatar billede tmceu Praktikant
16. maj 2002 - 17:57 #21
Du har endnu ikke prøvet kimiwan's forslag med at udskrive dit SQL statement og poste det her...
Avatar billede kimiwan Nybegynder
16. maj 2002 - 17:58 #22
strSQL = "insert into ehandelsordrer (brugernavn, produktnavn, produktpris, tiddato) values ('" & bn & "', '" & pn & "', "& pp &", #"& td &"#)"

'udskriver sql strengen og stopper eksekvering af scriptet FØR fejlen opstrår
response.write(strSQL)
response.end

' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 17:58 #23
response.write(strSQL)
response.end
=?
tm>kig ovenfor det gør den da det ik ?
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 18:00 #24
ok så vil den udskrive ....

16-05-2002
atika
50
iceb
16-05-2002atika50icebinsert into ehandelsordrer (brugernavn, produktnavn, produktpris, tiddato) values ('', '', , ##)
Avatar billede kimiwan Nybegynder
16. maj 2002 - 18:01 #25
godt så.. ..produktpris og dato indeholder ikke nogen værdi - det *skal* de.
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 18:02 #26
nå så er det derfor ....

Hvordan kan det så være mine variabler indeholder værdier ?
Avatar billede tmceu Praktikant
16. maj 2002 - 18:03 #27
Resultatet er nu og fejlen er ret tydlig, da alle værdier er tomme:

insert into ehandelsordrer (brugernavn, produktnavn, produktpris, tiddato) values ('', '', , ##)

Det går galt her

td=response.write (request.form("tiddato"))

Skal være:

td =(request.form("tiddato")

Og det samme for de andre
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 18:08 #28
jeg har skrevet td =(request.form("tiddato"))
da den brokkede sig ok ?
Avatar billede kimiwan Nybegynder
16. maj 2002 - 18:31 #29
Tja, det skulle være helt i orden, selvom jeg ikke lige kan se, hvorfor den skulle brokke sig over det andet.

Du bør nok skrive lave en replace på apostroffer ('), da de let kan gi' fejl i databasen:

replace(request.form("tiddato"),"'","''")

Det skal du gøre på alle dine request.form("feltnavn") og request.querystring("variabel") på siden.
Avatar billede iceb1977 Nybegynder
16. maj 2002 - 18:43 #30
ok takker og lukker og deler lige de 15 op så godt

som jeg kan s
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