Avatar billede para7 Nybegynder
13. april 2003 - 17:59 Der er 6 kommentarer og
1 løsning

Opdeling eller forenkling af betingelsessætning

Det her er ikke for godt. Jeg spørger om det næsten samme, bare med forskellige datoer. Har nogen et forslag.

if weekDay(dtmCurDate) > 6 or weekDay(dtmCurDate) < 2 or instr(dtmCurDate,"13-04") <> 0 or instr(dtmCurDate,"16-04") <> 0 or instr(dtmCurDate,"17-04") <> 0 or instr(dtmCurDate,"18-04") <> 0 or instr(dtmCurDate,"20-04") <> 0 or instr(dtmCurDate,"21-04") <> 0 or instr(dtmCurDate,"16-05") <> 0 or instr(dtmCurDate,"29-05") <> 0 or instr(dtmCurDate,"8-06") <> 0 or instr(dtmCurDate,"9-06") <> 0 or instr(dtmCurDate,"25-12") <> 0 or instr(dtmCurDate,"26-12") <> 0 then
Avatar billede para7 Nybegynder
13. april 2003 - 18:05 #1
Det er en kalender, hvor jeg vil undgå at vise en række dage, der er lukket. Og der kommer flere, der skal læses fra database.
Avatar billede mortrr Praktikant
13. april 2003 - 18:28 #2
Det er nok nemmere at gøre det i databasen.

Fx ved at du starter året med at poste alle datoer i en tabel (undtagen de dage du ikke vil have med), og slette efterhånden som de lukkes.

Eller ved at du gennemløber dine poster i databasen samtidigt med at du viser kalenderen.
Avatar billede para7 Nybegynder
13. april 2003 - 18:40 #3
Det lyder som en god ide, at lade administratoren af tidsbookingen selv skrive lukkedage ind løbende.
Det skal vel være en kommasepareret liste?
Kan du uddybe sidste forslag?
Avatar billede mortrr Praktikant
13. april 2003 - 18:56 #4
Lad os kalde dem metode A og B.
A: Nej - det skal ikke være en kommasepareret liste, men en tabel som bare indeholder alle datoer. Du bruger så denne tabel til at vise din kalender, i stedet for bare at kigge på en dato-variabel.
Når en dag bookes i "Booking-tabellen" sletter du den fra dato-tabellen.
Og modsat hvis en booking aflyses.

B: Samtidigt med at du gennemløber de dage du vil vise, gennemløber du et recordset, som indeholder de dage der er lukket. Jeg gør ud fra at du lukker dagene ved at de bookes i en tabel.

Med noget lignende det følgende, kan du kontrollere om den aktuelle dag står i databasen:

StartDato= Date()
SlutDato=DateAdd("d",7,StartDato)
CurDato=StartDato
' Hent lukkede dage
Set rsDatoer=Conn.Execute("SELECT DISTINCT Datoen FROM BookingTabel WHERE Datoen between #" & StartDato & "# AND #" & SlutDato & "#")
Response.Write "Ledige Datoer:"
do while CurDato<SlutDato
  if not rsDatoer.EOF
    if rsDatoer("Datoen").Value>CurDato then ' Ledig dag
      Response.Write "<br>" & CurDato
    end if
    if rsDatoer("Datoen").Value=CurDato then
      rsDatoer.MoveNext
    end if
  else
    Response.Write "<br>" & CurDato
  end if
  CurDato=DateAdd("d",1,CurDato)
loop

(hvis det ellers er skrevet rigtigt. Jeg har brugt noget lignende tidligere, så det kan lade sig gøre)
Avatar billede para7 Nybegynder
13. april 2003 - 19:16 #5
Tak mortrr. Fin udredning. Du må vist hellere få pointene.
Er det så ikke lettest med metode A? Og er det ikke lettere at sætte en dato on/of med et ekstra felt istedet for at slette og putte ind igen?
Avatar billede mortrr Praktikant
13. april 2003 - 19:24 #6
A er nemmest.
Om det skal gøres på den ene eller den anden måde (on/off eller slette/oprette) kommer an på om du skal bruge datoerne til noget andet.
Hvis ikke, så ville jeg nu nok slette dem.
Avatar billede para7 Nybegynder
13. april 2003 - 19:28 #7
OK, det vil vise sig. Jeg er ikke meget for datoprogrammering, men vil forsøge at få noget til at virke. Og opretter nok et spørgsmål igen, hvor jeg håber på du vil hjælpe med at få urværket til at tikke.
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