Avatar billede riishoj Nybegynder
10. februar 2003 - 22:23 Der er 24 kommentarer og
1 løsning

Fejl i SELECT BETWEEN

Hvad gør jeg forkert i denne select between?

strSQL = "SELECT dag,lektion FROM blokering WHERE reservation='fysik' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "'  BETWEEN #" & fgyldig & "# AND #" & sgyldig & "#"
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>"
Avatar billede eagleeye Praktikant
10. februar 2003 - 22:27 #1
Der mangler AND/OR kolonneNavn

strSQL = "SELECT dag,lektion FROM blokering WHERE reservation='fysik' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND kolonneNavnHer BETWEEN #" & fgyldig & "# AND #" & sgyldig & "#"
Avatar billede riishoj Nybegynder
10. februar 2003 - 22:40 #2
Jeg har i tabellen 'blokering' kolonnerne 'reservation', 'dag', lektion', 'fgyldig' og 'sgyldig'
De 2 sidstnævnte er datofelter, hvor 'fgyldig' er startdatoen og 'sgyldig' er slutdatoen. Hvad er det så for et kolonnenavn jeg mangler?
Avatar billede eagleeye Praktikant
10. februar 2003 - 22:56 #3
I SQL sætningen er fgyldig og sgyldig variable navne.

Så vil du havde hvor kolonne 'fgyldig' >= fgyldig og kolonnen 'sgyldig' <= sgyldig for så skjal det laves uden BETWWEN:

strSQL = "SELECT dag,lektion FROM blokering WHERE reservation='fysik' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND fgyldig >= #" & fgyldig & "# AND sgyldi <= #" & sgyldig & "#"
Avatar billede riishoj Nybegynder
10. februar 2003 - 22:59 #4
OK, det prøver jeg lige.
Avatar billede riishoj Nybegynder
10. februar 2003 - 23:04 #5
Den siger fejl i datoen i forespørgslen
Avatar billede riishoj Nybegynder
10. februar 2003 - 23:05 #6
fejl=syntaksfejl
Avatar billede eagleeye Praktikant
10. februar 2003 - 23:07 #7
Jeg har også glemt i g i sgyldig:

strSQL = "SELECT dag,lektion FROM blokering WHERE reservation='fysik' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND fgyldig >= #" & fgyldig & "# AND sgyldig <= #" & sgyldig & "#"
Avatar billede riishoj Nybegynder
10. februar 2003 - 23:08 #8
Det havde jeg set og rettet, så det er ikke det der er fejlen.
Avatar billede eagleeye Praktikant
10. februar 2003 - 23:10 #9
Hvis det er syntac er det typisk for et kolonne navn er skrevet forkert enten stavet forkert eller indeholder et ulovligt tegn. Det ser ikke ud som om der er nogle indeholder ulovlige tegn.
Avatar billede riishoj Nybegynder
10. februar 2003 - 23:14 #10
Fejlen ser sådan ud

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 <= ##".
Avatar billede eagleeye Praktikant
10. februar 2003 - 23:18 #11
Så indeholder de to variable fgyldig og sgyldig ikke en dato de er begge tomme.
Avatar billede riishoj Nybegynder
10. februar 2003 - 23:25 #12
Det kan jeg ikke forstå. I fgyldig står der 15-02-03 og i sgyldig 15-03-03.
Avatar billede eagleeye Praktikant
10. februar 2003 - 23:27 #13
Er det io databasen eller i de to variable?
Avatar billede eagleeye Praktikant
10. februar 2003 - 23:27 #14
Så du tjekke på om dags dato er mellem de to kolonner fgyldig og sgyldig ?
Avatar billede riishoj Nybegynder
10. februar 2003 - 23:30 #15
De 2 datoer står i db'en. Din sidste kommentar forstår jeg ikke.
Avatar billede eagleeye Praktikant
10. februar 2003 - 23:33 #16
Du har to datoer i databasen fgyldig og sgyldig. Den ene er start dato den anden er slut dato. Hvad skal start og slut dato sammenlignes med?
Avatar billede eagleeye Praktikant
10. februar 2003 - 23:37 #17
Hvis det er lige megget hvad datoer der ligger i fgyldig og sgyldig så kan de fjernes fra SQL'en:

strSQL = "SELECT dag,lektion FROM blokering WHERE reservation='fysik' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "'"
Avatar billede eagleeye Praktikant
10. februar 2003 - 23:39 #18
Hvis den skal finde records hvor datoen i dag er mellem fgyldig og sgyldig så prøv med denne SQL:

strSQL = "SELECT dag,lektion FROM blokering WHERE reservation='fysik' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND date() BETWEEN fgyldig AND sgyldig"
Avatar billede riishoj Nybegynder
10. februar 2003 - 23:40 #19
Meningen med  det jeg forsøger at lave er at feltet mandag i lektion 1 skal markeres med rødt på fysikskemaet i perioden 15-02-03 til 15-03-03
Avatar billede riishoj Nybegynder
10. februar 2003 - 23:44 #20
Jeg prøver lige at smide hele scriptet op.

<%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 >= #" & fgyldig & "# AND sgyldig <= #" & sgyldig & "#"
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 eagleeye Praktikant
10. februar 2003 - 23:44 #21
Hvis du i koden tjekke på om datoen i dag er imellem start og slut dato og markere med rødt så brug SQL'en i kommentar (10/02-2003 23:37:46)

Hvis du bruger SQL til at finde ud af om der er nogle som skal markeres med rødt så brug den SQL som vist (10/02-2003 23:39:12)
Avatar billede riishoj Nybegynder
11. februar 2003 - 00:01 #22
kommentar (10/02-2003 23:37:46)giver blokering på den samme position i alle årets 52 uger ( i eks. mandag i 1 lektion, det er nemlig det eneste som ligger i db'en)

(10/02-2003 23:39:12)giver intet!

Jeg ved ikke helt om vi forstår hinanden, men 23:37:46 var netop min første løsning, men jeg vil gerne lave det sådan, at man kan lave en blokering i en del af årets 52 uger.
Avatar billede riishoj Nybegynder
11. februar 2003 - 14:22 #23
eagleeye--> Har du en anden løsning på det jeg har skitseret. Er der noget specielt ang. datofelter i Access andet end at man skal sætte # omkring?
Avatar billede riishoj Nybegynder
11. februar 2003 - 17:10 #24
Jeg har nu kniklet med scriptet, læst en masse andre eksempler om dato og jeg kan stadig ikke forstå, hvorfor dette her ikke virker!!! HJÆLP!


 
  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)
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
    ----
-----
Avatar billede riishoj Nybegynder
11. februar 2003 - 17:11 #25
kniklet=knoklet
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