Avatar billede riishoj Nybegynder
11. februar 2003 - 19:55 Der er 10 kommentarer og
1 løsning

Fejl i SQL

Er der nogen som kan se hvad fejlen er i denne SQL?

strSQL = "SELECT dag,lektion FROM blokering WHERE reservation='fysik' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND fgyldig>=#" & fgyldig & "# AND sgyldig<=#" & sgyldig & "#"
set rs = Conn.Execute(strSQL)
Avatar billede dk_akj Nybegynder
11. februar 2003 - 19:58 #1
prøv lige at lave en response.write strSQL det kan garanteret hjælpe dig med at se om strengen er korrekt/hvad der er galt.

//akj
Avatar billede riishoj Nybegynder
11. februar 2003 - 20:19 #2
Det er altså underligt. Selv om jeg laver en response.write strSQL så får jeg kun

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i datoen i forespørgselsudtrykket "reservation='fysik' AND dag='Mandag' AND lektion='1' AND fgyldig>=## AND sgyldig<=##".

/reservation3/test/fysik2.asp, linje 179
Avatar billede Spotgun Seniormester
11. februar 2003 - 20:36 #3
Der er jo ingen fgyldig- og sgyldig-værdier specificeret. Derfor fejler den sikker!
Avatar billede riishoj Nybegynder
11. februar 2003 - 20:42 #4
fgyldig og sgyldig er datofelter i tabellen 'blokering'. fgyldig har værdien 01-01-03 og sgyldig værdien 01-06-03.
Avatar billede Spotgun Seniormester
11. februar 2003 - 20:44 #5
Det kan godt være, men værdierne ryger ikke med, der hvor din SQL-streng genereres. Det skriver du jo selv, i den fejlmeddelelse du har cut-n-pastet ind. "...AND fgyldig>=## AND sgyldig<=##". <-- Se selv :-)

Prøv som en test blot at smide statiske datoer ind, og se om det virker. Hvis det virker fint, så ligger dit problem nok omkring noget med at dine variabler ikke bliver sat ordentligt. Prøv at kontroller dem, inden sql-strengen laves!
Avatar billede riishoj Nybegynder
11. februar 2003 - 21:04 #6
spotgun--> Du havde ret. Når jeg sætter statiske datoer ind, så fejler den ikke. Til gengæld får jeg heller ikke udført det jeg ønsker, nemlig en blokering med rødt om fredagen i 5. lektion i perioden 01-01-03 til 01-06-03. Hvorfor jeg ikke får overført variablerne kan jeg heller ikke gennemskue. Hvis du gider kigge, så er hele scriptet her. Kan godt smide flere point, hvis det lykkes at få det til at virke

<%Session.LCID = &H0407%>
<%
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
%>

<html>

<head>
<title>Test - Demo</title>
<LINK REL="StyleSheet"
HREF="../style.css"
TYPE="text/css">

</head>

<body background="../images/background7.gif">

<p align="center">&nbsp;
<table border="1" width="100%" cellspacing="0" cellpadding="0" bordercolor="#0000FF" bordercolorlight="#0000FF" bordercolordark="#FFFFFF">
  <tr>
    <td width="128%" colspan="6" bgcolor="#669999">
      <table border="0" width="100%">
        <tr>
          <td width="25%" valign="bottom"><b><font face="Verdana" color="#FFFFFF" size="4">Test</font></b></td>
          <%
          Function UgeTilDato(aar,uge,dag)
  januar1 = DateSerial(aar, 1, 1)
  ugedagjan1 = Weekday(januar1, vbMonday)
  if ugedagjan1 <= 4 then
      ' 1. januar er i uge 1
      mandaguge1 = DateAdd("d", -ugedagjan1+1, januar1)
  else
      ' 1. januar er i sidste uge foregående år
      mandaguge1 = DateAdd("d", 7-ugedagjan1+1, januar1)
  end if

  mandagugex = DateAdd("ww", uge-1, mandaguge1)
  xdagugex = DateAdd("d", dag-1, mandagugex)
  UgeTilDato = xdagugex
End Function         

         
If request.querystring("uge") <> "" Then
  uge = request.querystring("uge")
 
Else
  uge = DatePart("ww",date())
End if
  If request.querystring("aar") <> "" Then
  aar = request.querystring("aar")
Else

  aar = Year(Date)
End If

fuge = uge - 1
faar = aar
If fuge < 1 then
  fuge = 52
  faar = faar - 1
End If

Response.Write"<td width=20% align=left valign=bottom><font face=verdana size=3><A class='speciel' HREF='fysik2.asp?uge=" & fuge & "&aar=" & faar & "'><--Forrige uge </A></font></td>"
%>

          <td width="20%" align="left"><font color=" #FFFFFF"><b><font face="Verdana" size="4">Uge</font><font face="Verdana" size="3">&nbsp</font></b>
            </font>
                       
            <%
'Session.LCID = 1030

If Request.Querystring("uge") <> "" Then
      uge = Request.Querystring("uge")
    Else
      uge = DatePart("ww",date())
    End If
   
    Response.Write "<font color=white face=verdana size=5>"
    Response.Write uge
    %>
</td>
<%

If request.querystring("uge") <> "" Then
  uge = request.querystring("uge")
Else
  uge = DatePart("ww",date())
End if
  If request.querystring("aar") <> "" Then
  aar = request.querystring("aar")
Else
aar = Year(Date)
End If

nuge = uge + 1
naar = aar
If nuge > 52 then
  nuge = 1
  naar = naar + 1
End If
Response.Write"<td width=35% align=left valign=bottom><font face=verdana size=3><A class='speciel' HREF='fysik2.asp?uge=" & nuge & "&aar=" & naar & "'>Næste uge--></A></font></td>"
%>




        </tr>
      </table>
     
</td>
  </tr>

 
  <tr>
    <td width="8%" bgcolor="#669999">&nbsp;</td>
    <td width="18%" bgcolor="#669999">
      <p align="center"><font color="#FFFFFF" face="Verdana" size="2"><b>Mandag</b><br>
            <% Response.Write FormatDateTime(UgeTilDato(aar, uge, 1), vbShortDate) %></font></td>
    <td width="18%" bgcolor="#669999">
      <p align="center"><font color="#FFFFFF" face="Verdana" size="2"><b>Tirsdag</b><br>
            <% Response.Write FormatDateTime(UgeTilDato(aar, uge, 2), vbShortDate) %></font></td>
    <td width="19%" bgcolor="#669999">
      <p align="center"><font color="#FFFFFF" face="Verdana" size="2"><b>Onsdag</b><br>
              <% Response.Write FormatDateTime(UgeTilDato(aar, uge, 3), vbShortDate) %></font></td>
    <td width="19%" bgcolor="#669999">
      <p align="center"><font color="#FFFFFF" face="Verdana" size="2"><b>Torsdag</b><br>

              <% Response.Write FormatDateTime(UgeTilDato(aar, uge, 4), vbShortDate) %></font></td>
    <td width="19%" bgcolor="#669999">
      <p align="center"><font color="#FFFFFF" face="Verdana" size="2"><b>Fredag</b><br>

              <% Response.Write FormatDateTime(UgeTilDato(aar, uge, 5), vbShortDate) %></font></td>
 
 
  </tr>
<%
    Set Conn = Server.CreateObject("ADODB.Connection")
    DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
    DSN = DSN & "DBQ=" & Server.MapPath ("/reservation3/data.mdb")
    Conn.Open DSN
   
    lektion = Request.Querystring("lektion")
    dag = Request.Querystring("dag")
    reservation = Request.Querystring("reservation")
    fgyldig = Request.Querystring("fgyldig")
    sgyldig = Request.Querystring("sgyldig")

   
    dim SQLdag(7)
SQLdag(1) = "Mandag"
SQLdag(2) = "Tirsdag"
SQLdag(3) = "Onsdag"
SQLdag(4) = "Torsdag"
SQLdag(5) = "Fredag"
SQLdag(6) = "Lørdag"
SQLdag(7) = "Søndag"

dim linkdag(7)
linkdag(1) = "mandag"
linkdag(2) = "tirsdag"
linkdag(3) = "onsdag"
linkdag(4) = "torsdag"
linkdag(5) = "fredag"
linkdag(6) = "lørdag"
linkdag(7) = "søndag"


for lektion = 1 to 7

  Response.Write "<tr>"
    Response.Write "<td width=8% height=40 align=center bgcolor=#669999><font face=Verdana size=2 color=#FFFFFF>" & lektion & ". time</font></td>"


  for dag = 1 to 5
 
  strSQL = "SELECT dag,lektion FROM blokering WHERE reservation='fysik' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND fgyldig>=#01-01-03# AND sgyldig<=#01-06-03#"
set rs = Conn.Execute(strSQL)

if not (rs.EOF or rs.BOF) then
Response.write"<td  border=1  bordercolor=#0000FF bordercolordark=#FFFFFF bordercolorlight=#0000F width=18% height=40 bgcolor=red>Undervisning</td>" 
 
Else
      'generer data og HTML kode for (dag,lektion)
      strSQL = "SELECT initialer,klasse FROM reserver WHERE reservation='fysik' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND uge='" & uge & "'"
set rs = Conn.Execute(strSQL)
if rs.EOF or rs.BOF then
Response.Write"<td width=18% height=40 bgcolor=#FFFFFF><font color=#FFFFFF><A HREF='reserver_form_test.asp?uge=" & uge & "&dag=" & linkdag(dag) & "&lektion=" & lektion & "&reservation=fysik'><img border=0 src='../images/greenball.gif' alt='Lokalet er ledigt'></font></td>"

  Else

    Response.Write"<td width=18% height=40 bgcolor=#FFFFFF><b><font color=#FFFFFF face='verdana' size='2'><img src='../images/redball.gif' alt='Lokalet er optaget'><img src='../images/blank2.gif'><A HREF='vis_reservation.asp?reservation=fysik&lektion=" & lektion & "&dag=" & linkdag(dag) & "&uge=" & uge &"'>"&rs("initialer")&"</A></font></b></td>"

    rs.MoveNext
   
    End if
    End if
  next
  Response.Write "</tr>"
next
 

    Conn.Close
%>   
  </table>
<table>
<tr>
<%
Response.Write"<td align=center><font face=verdana size=2><A class='speciel2' HREF='reserver_form2.asp'>Reserver anden uge</A></font></td>"
%>
</tr>
</table>
<table>
<tr>
<%
Response.Write"<td align=center><font face=verdana size=2><A class='speciel2' HREF='../index.htm'>Tilbage til forsiden</A></font></td>"
%>
</tr>
</table>
</body>
</html>
Avatar billede Spotgun Seniormester
11. februar 2003 - 21:28 #7
fgyldig = Request.Querystring("fgyldig")
sgyldig = Request.Querystring("sgyldig")

prøv at se om de to parametre bliver kaldt på asp-siden i præcis samme skrivestil - altså med små bogsstaver i dinfil.asp?fgyldig=01.01.03&sgyldig=02-02-03

Jeg har før set mine egne sider fucke op i hentningen af parametre, hvis der f.eks. var sneget sig et stort bogstav ind i stedet for et lille.

Mht. det med, at din celle ikke farves rød, så er jeg lidt lost - kan i hvert fald ikke lige umiddelbart gennemskue hvorfor den ikke farves rød.
Jeg går ud fra, at den rigtigt nok skriver "Undervisning" i cellen, men blot glemmer at farve den rød, right? Correct me if i'm wrong...
Avatar billede Spotgun Seniormester
11. februar 2003 - 21:32 #8
...Hvis det kun er den røde farve der kikser, så prøv det her i dit <td>-tag i stedet for din nuværende "bgcolor=red":

<td style="background-color: #FF0000;">
Avatar billede riishoj Nybegynder
11. februar 2003 - 22:01 #9
Næ, der skrives heller ikke undervisning i cellen. Hvis jeg fjerner AND fgyldig>=#01-01-03# AND sgyldig<=#01-06-03#" i SQL'en, så får jeg godt nok røde celler på positionen, men jo på alle skemaerne hele året, og ikke i en tidsbestemt periode, som var hensigten.
Avatar billede Spotgun Seniormester
11. februar 2003 - 22:07 #10
Prøv at skrive datoerne på formatet MM-DD-ÅÅÅÅ eller ÅÅÅÅ-MM-DD, og se om det evt. hjælper noget. Det kan godt være fordi den misforstår datoerne, og derved ikke finder noget at putte i dit resultset!
Avatar billede riishoj Nybegynder
11. februar 2003 - 22:31 #11
Det hjalp heller ikke noget. Jeg tror, at jeg stopper her, da jeg efterhånden har bakset med problemet et par dage, og tror jeg prøver en anden løsning. Du skal have dine point, da du jo sådan set har svaret på mit spørgsmål og fundet fejlen i SQL'en.
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