Avatar billede stefware Nybegynder
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&aring;n</font></b></font></p>
        <p>&nbsp;</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&oslash;nborg Hansen">Anette Gr&oslash;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 &Oslash;stergaard Madsen">Irene &Oslash;stergaard
            Madsen</option>
            <option value="Jahn O. Ruud">Jahn O. Ruud</option>
            <option value="Jens Hjortsh&oslash;j">Jens Hjortsh&oslash;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&oslash;lgaard Jensen">Merete M&oslash;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&oslash;rn">Lars Bj&oslash;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
%>
Avatar billede medions Nybegynder
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
Avatar billede eagleeye Praktikant
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)
Avatar billede stefware Nybegynder
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!
Avatar billede medions Nybegynder
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
Avatar billede eagleeye Praktikant
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
Avatar billede eagleeye Praktikant
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")
Avatar billede stefware Nybegynder
29. januar 2003 - 21:38 #7
Nu får jeg:

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
Avatar billede stefware Nybegynder
29. januar 2003 - 21:39 #8
DAAA det var fordi bog_id i DB'en var sat til tal og ikke tekst!!!
Avatar billede eagleeye Praktikant
29. januar 2003 - 21:41 #9
Er bog_id tal eller tekst?
Avatar billede stefware Nybegynder
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"))
Avatar billede eagleeye Praktikant
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")
Avatar billede stefware Nybegynder
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
Avatar billede stefware Nybegynder
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!
Avatar billede eagleeye Praktikant
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)
Avatar billede stefware Nybegynder
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!
Avatar billede stefware Nybegynder
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!
Avatar billede stefware Nybegynder
29. januar 2003 - 22:26 #17
J
Avatar billede stefware Nybegynder
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 ;-)
Avatar billede eagleeye Praktikant
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.
Avatar billede stefware Nybegynder
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)
Avatar billede eagleeye Praktikant
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)
Avatar billede eagleeye Praktikant
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.
Avatar billede medions Nybegynder
29. januar 2003 - 23:10 #23
Thx 4 Poinz

//>Rune
Avatar billede stefware Nybegynder
29. januar 2003 - 23:19 #24
Takkkkkkkker 1000 mange gange det vil jeg bruge istedet!
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