Simon Kibsgård wrote:
> Torben Brandt wrote in dk.edb.internet.webdesign.serverside.asp:
> 
>>Grunden skulle så være at du kunne vise en kalender "uden huller". 
>> 
>>I så fald er løsningen ikke at oprette tomme poster i databasen, men i  
>>stedet ændre på den måde du viser posterne på. 
>>Eksempel i pseudokode: 
>>  startdato = 17.05.2003 
>>  slutdato = 13.06.2003 
>>  rs = udtræk poster fra database mellem startdato og slutdato 
>>       sorter efter dato 
>>  sålænge (startdato <= slutdato) { 
>>   hvis (rs.eof) { 
>>    udskriv tom dag 
>>   } ellers hvis (startdato = rs(dato)) { 
>>    udskriv posten fra rs 
>>   } ellers { 
>>    udskriv tom dag 
>>   } 
>>   startdato = startdato + 1 
>>  } 
>> 
>>Dette duer kun hvis der maksimalt er en post i databasen pr. dato, men  
>>kan nemt ændres til at kunne klare flere. 
>>Hvis det ikke var det du mente i dit indlæg, så forklar gerne hvad de  
>>tomme poster i databasen skal bruges til... 
 
> 
> Det var præcis ovenstående jeg mente. Desværre kan jeg ikke helt forstå
> din pseduokode (hvad betyder de der "}" ?) . Nedenstående er min nuværende
> kode - og jeg skal gerne bruge den til alle poster (i).
{...} skulle være i stedet for Then...End If eller Do While...Loop.
Jeg prøver at skrive noget "rigtig" kode :)
> strSQL = "SELECT * FROM vagtplan WHERE Dato BETWEEN Dateserial(" &
> strfromyear & ", " & strfrommonth & ", " & strfromday & ") AND
> Dateserial(" & strtoyear & ", " & strtomonth & ", " & strtoday & ") ORDER
> BY Dato"
> 
> Set rs = Conn.Execute(strSQL)
> 
> Response.Write ("<table>")
> Response.Write ("<tr>")
> For i = 1 To RS.Fields.Count - 1
> Response.Write ("<td>" & RS(i).Name & "</td>")
> Next
> Response.Write("</tr>")
Hertil ser dt fint ud. Jeg er dog i tvivl om, om man kan bruge 
RS.Fields.Count hvis RS er tomt - men det har du vel testet :)
> Do while Not RS.Eof
> Response.Write ("<tr>")
> For i = 1 To RS.Fields.Count - 1
> Response.Write ("<td>" & RS(i) & "</td>")
> Next
> Response.Write ("</tr>")
> RS.Movenext
> Loop
Ovenstående ville jeg lave således:
[Antag at startdato og slutdato er at typen dato]
Do While DateDiff("d", startdato, slutdato) >= 0
  If RS.EOF Then
   ' Vi udskriver en blank dag
   Response.Write "<tr><td> </td></tr>"
  ElseIf DateDiff("d", startdato, RS("dato")) = 0 Then
   ' Der er noget i kalenderen denne dag
   Response.Write "<tr>"
   For i = 1 To RS.Fields.Count - 1
    Response.Write "<td>" & RS(i) & "</td>"
   Next
   Response.Write "</tr>"
   RS.MoveNext
  Else
   ' RS er ikke tom (der er mere i kalenderen) men ikke noget denne dag
   ' Vi udskriver en blank dag
   Response.Write "<tr><td> </td></tr>"
  End If
  startdato = DateAdd("d", 1, startdato)
Loop
> 
> Response.Write ("</table>")
> 
> Jeg kan forestille mig at det ikke gør det nemmere at jeg bruger
> dateserial til datoformatet (det gør det selvf. nemmere i andre
> henseender).
Nej nej, brug endelig DateSerial. Så går man aldrig galt i byen :)
En anden ting: Når du udskriver alle felterne i RS, så bruger du
  For i = 1 To RS.Fields.Count - 1
Skal du ikke enten starte med i = 0 eller gå op til RS.Fields.Count 
(uden -1)
mvh Torben