29. januar 2003 - 20:19
Der er
22 kommentarer og 2 løsninger
Update tegnfejl
Hvor er det mit update script mangler noget? Fejlen er: Microsoft VBScript compilation error '800a0401' Expected end of statement /litteratur/udlaan.asp, line 20 strSQL = "UPDATE liste SET laaner_navn = '" & Request.Form("laaner_navn") & "', laane_dato='" & Request.Form("laane_dato") & "', laaner_mail='" & Request.Form("laaner_mail") & "'" WHERE bog_id=" & Request.form("id") & " ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^ Script: <% Response.Buffer = True Response.Expires = 0 Set Con = Server.CreateObject( "ADODB.Connection" ) DBPath = "DBQ=" & server.mappath("/log/litteratur.mdb") & "; password=test" Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath Sql = "SELECT * FROM liste ORDER BY titel DESC" Set Record = Con.Execute(Sql) strSQL = "UPDATE liste SET laaner_navn = '" & Request.Form("laaner_navn") & "', laane_dato='" & Request.Form("laane_dato") & "', laaner_mail='" & Request.Form("laaner_mail") & "'" WHERE bog_id=" & Request.form("id") & " Con.execute(strSQL) %> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" "refresh> <link rel="stylesheet" href="/indhold.css" type="text/css"> <script language="JavaScript"> <!-- function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); // --> </script> </head> <body bgcolor="#FED2A7" text="#000000" background="images/marie3.gif"> <tr> <td width="121" height="181"></td> <p><font face="Times New Roman, Times, serif"><b><font face="Verdana, Arial, Helvetica, sans-serif">Udlån</font></b></font></p> <p> </p> <% Do While Not Record.EOF %><br> <% Response.Write Record("titel") %><br> <% Response.Write Record("forfatter") %><br> <% Response.Write Record("forlag") %><br> <% Response.Write Record("udgivaar") %><br> <% Response.Write Record("tilhorer") %><br> <% Response.Write Record("vaerdi") %><br> <% Response.Write Record("kategori") %><br> <br> <form name="form" action="udlaan.asp" method="POST" target="_self"> <table border="0" width="600"> <tr> <td height="22">Kategori</td> <td height="22"> <select name="laaner_navn"> <option value="Anette Grønborg Hansen">Anette Grønborg Hansen</option> <option value="Bente Enevoldsen">Bente Enevoldsen</option> <option value="Birgitte Winterberg">Birgitte Winterberg</option> <option value="Christina Bentzen">Christina Bentzen</option> <option value="Claus Krogh Madsen">Claus Krogh Madsen</option> <option value="Frank Scheving">Frank Scheving</option> <option value="Iben Holme Laursen">Iben Holme Laursen</option> <option value="Irene Østergaard Madsen">Irene Østergaard Madsen</option> <option value="Jahn O. Ruud">Jahn O. Ruud</option> <option value="Jens Hjortshøj">Jens Hjortshøj</option> <option value="Jytte Aagaard">Jytte Aagaard</option> <option value="Kirsten Haagen">Kirsten Haagen</option> <option value="Lone Kragh">Lone Kragh</option> <option value="Merete Mølgaard Jensen">Merete Mølgaard Jensen</option> <option value="Mona Bach">Mona Bach</option> <option value="Niels Fabricius Kilstrup">Niels Fabricius Kilstrup</option> <option value="Rune Lunell">Rune Lunell</option> <option value="Stefan R. Jacobsen">Stefan R. Jacobsen</option> <option value="Tina Ebler">Tina Ebler</option> <option value="Vita Bjerring">Vita Bjerring</option> <option value="Lars Bjørn">Lars Bjørn</option> </select> <input type="tekst" name="laane_dato" Value="<% Response.Write FormatDateTime(Now, vbLongDate)%>"> <input type="text" name="laaner_mail" Value="@vh-marketing.dk"> <input type="text" name="id" Value="<% Response.Write Record("bog_id") %>"> <% Record.MoveNext Loop %> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value=" - SKRIV - "> </td> </tr> </table> </form> </body> </html> <% ' Lukke connection Con.Close Set Con = Nothing %>
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
29. januar 2003 - 20:21
#1
strSQL = "UPDATE liste SET laaner_navn = '" & Request.Form("laaner_navn") & "', laane_dato='#" & Request.Form("laane_dato") & "#', laaner_mail='" & Request.Form("laaner_mail") & "'" WHERE bog_id=" & Request.form("id") & " Con.execute(strSQL) Der skal # og # rundt om datoer i Access! //>Rune
29. januar 2003 - 20:48
#2
Der er en & " formeget til sidst et " for meget før WHERE, så skal der # omkring dato hvis det er en kolonne som er defienret som dato/klokkeslæt i dataabsen?? Ligeledes skal dato'er overføres i US/UK format yyyy-mm-dd eller mm-dd-yyyy og ikke DK format med dagen først. Så den skal lige konverteres hvis du bruger DK data format, det gøres med Day, Month og Year.: datoStr = Year(Request.Form("laane_dato")) & "-" & Month(Request.Form("laane_dato")) & "-" & Day(Request.Form("laane_dato")) strSQL = "UPDATE liste SET laaner_navn = '" & Request.Form("laaner_navn") & "', laane_dato=#" & datoStr & "#, laaner_mail='" & Request.Form("laaner_mail") & "' WHERE bog_id=" & Request.form("id") Con.execute(strSQL)
29. januar 2003 - 21:17
#3
Det med dato'en viste jeg ikke, men pt. bliver den også skrevet som tekst i DB'en. Det er delen med Where der driller mig, jeg har prøvet et hav af forskellige metoder, nu får jeg fejlen: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'bog_id='. /litteratur/udlaan2.asp, line 23 Jeg syntes ikke der skulle være noget som forhindre det og jeg har haft det til at virke på et tidspunkt!
29. januar 2003 - 21:35
#4
datoStr = Year(Request.Form("laane_dato")) & "-" & Month(Request.Form("laane_dato")) & "-" & Day(Request.Form("laane_dato")) strSQL = "UPDATE liste SET laaner_navn = '" & Request.Form("laaner_navn") & "', laane_dato=#" & datoStr & "#, laaner_mail='" & Request.Form("laaner_mail") & "' WHERE bog_id='" & Request.form("id") & "'" Con.execute(strSQL) Prøv sådan! //>Rune
29. januar 2003 - 21:36
#5
Du får sikkert fejlen lige når siden loades??? Du hendter data med Request.Form("xxxx") til SQL sætningen, så du skal havde en form som er blevet POST'et til siden. Din form er for neden på siden så prøv at sætte dette omkring: if Request.Servervariables("REQUEST_METHOD") = "POST" then strSQL = "UPDATE liste SET laaner_navn = '" & Request.Form("laaner_navn") & "', laane_dato='" & Request.Form("laane_dato") & "', laaner_mail='" & Request.Form("laaner_mail") & "'" WHERE bog_id=" & Request.form("id") Con.execute(strSQL) end if
29. januar 2003 - 21:37
#6
Så skal strSQL bare være sådan her og ikke som før vist: strSQL = "UPDATE liste SET laaner_navn = '" & Request.Form("laaner_navn") & "', laane_dato='" & Request.Form("laane_dato") & "', laaner_mail='" & Request.Form("laaner_mail") & "' WHERE bog_id=" & Request.form("id")
29. januar 2003 - 21:38
#7
Nu får jeg: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
29. januar 2003 - 21:39
#8
DAAA det var fordi bog_id i DB'en var sat til tal og ikke tekst!!!
29. januar 2003 - 21:41
#9
Er bog_id tal eller tekst?
29. januar 2003 - 21:47
#10
bog_id var tal, er nu sat til tekst, men nu har jeg problemer med dato'en, den er sat til langt format i DB'en (Access - dansk), har jeg ret i at jeg laver: datoStr = Year(Request.Form("laane_dato")) & "-" & Month(Request.Form("laane_dato")) & "-" & Day(Request.Form("laane_dato")) Om til: datoStr = Day(Request.Form("laane_dato")) & "-" & Month(Request.Form("laane_dato")) & "-" & Year(Request.Form("laane_dato"))
29. januar 2003 - 21:52
#11
Hvis du bare har dato som tekst i databasen så behøver du ikke bruger Day,Month og Year til at formatere datoen. Så prøv med denne SQL sætning: strSQL = "UPDATE liste SET laaner_navn = '" & Request.Form("laaner_navn") & "', laane_dato='" & Request.Form("laane_dato") & "', laaner_mail='" & Request.Form("laaner_mail") & "' WHERE bog_id=" & Request.form("id")
29. januar 2003 - 21:53
#12
Jeg har forsøgt at sætte ovenstående ind men får fejlen: Microsoft VBScript runtime error '800a000d' Type mismatch: '[string: "29. januar 2003"]' /litteratur/udlaan2.asp, line 20
29. januar 2003 - 21:56
#13
Jeg har lavet den om til dato/tid, men det tror jeg bliver til tekst igen! Egentligt skulle jeg bruge dato'en til at regne ud hvornår brugeren havde haft bogen i 8 dage og sende en mail, men det bliver vist for kompliceret så jeg holder mig til at formatere dato'en som tekst!
29. januar 2003 - 21:58
#14
Ja så det létest at bruger Dato format i databasen så skal din SQL se sådan her ud som først vist med at konverete dato til yyyy-mm-dd så det blvier ført rigtigt over via SQL.: datoStr = Year(Request.Form("laane_dato")) & "-" & Month(Request.Form("laane_dato")) & "-" & Day(Request.Form("laane_dato")) strSQL = "UPDATE liste SET laaner_navn = '" & Request.Form("laaner_navn") & "', laane_dato=#" & datoStr & "#, laaner_mail='" & Request.Form("laaner_mail") & "' WHERE bog_id=" & Request.form("id") Con.execute(strSQL)
29. januar 2003 - 22:11
#15
jooo, men på siden og i db'en står dato'en formateret som dd-mm-yyyy, skal jeg have en session.lcid = 1030 ind i toppen for at få det rigtigt, eller? for den laver stadigt ovenstående fejl!
29. januar 2003 - 22:19
#16
Never mind, jeg kan sandsynligvis ikke finde ud af at lave scriptet til at det "rykker" system, så jeg skriver det bare ind som tekst!
29. januar 2003 - 22:26
#17
J
29. januar 2003 - 22:29
#18
Jeg har valgt at fordele point'ene da medions virkede fint, men eagleeye kæmpede længst! Håber det er ok ellers må i brokke jer ;-)
29. januar 2003 - 22:34
#19
Se mit tidligere svar. SQL bruiger US/UK dato format. Skal måske lige tilføje, det er ligemeget om du gemmer det i DK format (eller andet) i databasen eller viser det i DK format på din side men session.LCID=1030. Så ska SQL havde det i US eller UK dato format.
29. januar 2003 - 22:40
#20
Ville man egentligt ikke kunne sætte datoen ind i DB'en uden at trække den fra formen, det eneste der er væsentligt er at datoen bliver skrevet ind, om det er dato'en fra formen er mig lige meget, bare dato er den dag bogen bliver lånt, jeg tænker noget i retning af: laane_dato='" & Request(FormatDateTime(Now, vbLongDate)
29. januar 2003 - 23:00
#21
Hvis du vil gemme dags dato i databasen så kan du bruge Date() direkter eller Now(). Date er kunb dato Now er dato+klokkeslæet: Date = 29-01-2003 Now = 29-01-2003 22:57:48 Så kan du bruge den Date som er i Access, så skal din SQL se sådan her ud: strSQL = "UPDATE liste SET laaner_navn = '" & Request.Form("laaner_navn") & "', laane_dato=Date(), laaner_mail='" & Request.Form("laaner_mail") & "' WHERE bog_id=" & Request.form("id") Con.execute(strSQL)
29. januar 2003 - 23:01
#22
Bemærk så skal der hverken # eller ' omkring i SQL sætningen når du bruger de indbyggede Date() eller Now() funktioner.
29. januar 2003 - 23:10
#23
Thx 4 Poinz //>Rune
29. januar 2003 - 23:19
#24
Takkkkkkkker 1000 mange gange det vil jeg bruge istedet!
Kurser inden for grundlæggende programmering