|
| Datoer Fra : Ukendt |
Dato : 10-04-06 16:10 |
|
Hej NG
Jeg bruger en access 2003 db.
Jeg skal lave en IF sætning, med kriterie(dagsdato) på fradato og tildato...
Har prøvet mange forskellige konstallationer...
DateSerial, Year-Month-Day, FormatDateTime
Skal funktionen stå i IF sætningen, eller kan jeg bare lave en variabel...
Ved godt at datoer er et helvede, men jeg skal igennem det...
Har i et godt link, som forklarer dette...eller et kodeeksempel...
På forhånd tak
Bjarne
| |
Christian M. Nielsen (10-04-2006)
| Kommentar Fra : Christian M. Nielsen |
Dato : 10-04-06 19:16 |
|
"bsn" <bsnsnabelaoncabledotdk> skrev i en meddelelse
news:443a7555$0$145$edfadb0f@dread11.news.tele.dk...
> Har i et godt link, som forklarer dette...eller et kodeeksempel...
måske kan du bruge dette ? http://www.asp-faq.dk/article/?id=98
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.
| |
Ukendt (11-04-2006)
| Kommentar Fra : Ukendt |
Dato : 11-04-06 09:39 |
|
"Christian M. Nielsen" <look.for.it@my.webpage> skrev
> måske kan du bruge dette ? http://www.asp-faq.dk/article/?id=98
Ja tak, det hjalp lidt - kunne bruge funktionen DateToSql
Jeg er ved at lave en menu, og vil sortere datoer som er fridage(RS2) fra...
Vil så gennemløbe RS2, og hvis datoen IKKE er en fridag, vil jeg have en
menu på med den aktuelle dato...
Jeg kommer godt nok ud i Loop5, men jeg får bare en blank side
Do Until Tael=10
Do Until RS.EOF
Do Until RS1.EOF
RS2.MoveFirst
Do Until RS2.EOF
FraDato="DateSerial(" & Year(RS2("FraDato")) & ", " &
Month(RS2("FraDato")) & ", " & Day(RS2("FraDato")) & ") "
TilDato="DateSerial(" & Year(RS2("TilDato")) & ", " &
Month(RS2("TilDato")) & ", " & Day(RS2("TilDato")) & ") "
Do Until FraDato=TilDato
IF NOT Dato >= Fradato & " AND " & Dato <= TilDato THEN
Response.Write "<tr>"
Response.Write "<td align=center>" & "<b>" & DatePart("ww",Dato,2,2) &
"</b>" & " - " & "<input type=" & "text" & " readonly=" & "True" & " VALUE="
& Dato & " name=" & "txtDato" & Tael & " size=" & "8" & ">" & "</td>"
Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
RS("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C" &
Tael & " value=" & Rs("MenuID") & ">" & " - " & Rs("MenuTekst") & "</td>"
Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
RS1("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C"
& Tael1 & " value=" & Rs1("MenuID") & ">" & " - " & Rs1("MenuTekst") &
"</td>"
Response.Write "</tr>"
Exit Do
ELSE
Exit Do
END IF
FraDato="DateAdd(" & """w""" & ", 1, " & FraDato & ")"
Loop
RS2.MoveNext
Loop
Rs1.MoveNext
Loop
Rs.MoveNext
Loop
Dato="DateAdd(" & """w""" & ", 1, " & Dato & ")"
Tael=Tael+1
Tael1=Tael1+1
Loop
Du kan måske se fejlen i scriptet
Jeg får ingen fejlmelding...Bare en blank side uden menu på.
Bjarne
| |
Benny Nissen (11-04-2006)
| Kommentar Fra : Benny Nissen |
Dato : 11-04-06 10:00 |
|
bsn ramte sit keyboard den 11-04-2006 10:39 og fik dette ud af det:
> Do Until FraDato=TilDato
Her tildeler du FraDato samme værdi som TilDato (tror jeg nok).
I php skal det ihvertfald være == for at sammenligne værdier. Kan dog
ikke lige huske, om det gælder i asp også.
--
Benny Nissen
www.bennynissen.dk
| |
Ukendt (11-04-2006)
| Kommentar Fra : Ukendt |
Dato : 11-04-06 10:37 |
|
"Benny Nissen" <news@bennynissen.dk> skrev
> Her tildeler du FraDato samme værdi som TilDato (tror jeg nok).
Nej...
> I php skal det ihvertfald være == for at sammenligne værdier. Kan dog ikke
> lige huske, om det gælder i asp også.
Det er jo aspgruppen jeg spørger i...
Kender ikke PHP
Bjarne
| |
Jens Gyldenkærne Cla~ (11-04-2006)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 11-04-06 10:14 |
|
Benny Nissen skrev:
>> Do Until FraDato=TilDato
>
> Her tildeler du FraDato samme værdi som TilDato
Nej.
> I php skal det ihvertfald være == for at sammenligne
> værdier.
Ja - php anvender en c-lignende syntaks hvor der er forskellige
operatorer til sammenligning (==) og tildeling (=). Det er også
muligt i asp, hvis man bruger jscript som scriptsprog - men de
fleste anvender vbscript sammen med asp - og her anvendes "=" både
som sammenligningsoperator og tildelingsoperator.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Ukendt (11-04-2006)
| Kommentar Fra : Ukendt |
Dato : 11-04-06 10:35 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns97A272440BA1Fjcdmfdk@gyrosmod.dtext.news.tele.dk...
> Benny Nissen skrev:
>
>>> Do Until FraDato=TilDato
>>
>> Her tildeler du FraDato samme værdi som TilDato
>
> Nej.
Nej - jeg lægger en dag til FraDato før loopet...
>> I php skal det ihvertfald være == for at sammenligne
>> værdier.
Kender ikke PHP
> Ja - php anvender en c-lignende syntaks hvor der er forskellige
> operatorer til sammenligning (==) og tildeling (=). Det er også
> muligt i asp, hvis man bruger jscript som scriptsprog - men de
> fleste anvender vbscript sammen med asp - og her anvendes "=" både
> som sammenligningsoperator og tildelingsoperator.
Jeg anvender vbscript sammen med asp...
Kan i måske se hvad fejlen er i scriptet...???
Bjarne
| |
Jens Gyldenkærne Cla~ (11-04-2006)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 11-04-06 10:57 |
|
bsn skrev:
>>>> Do Until FraDato=TilDato
> Nej - jeg lægger en dag til FraDato før loopet...
Det er i denne sammenhæng underordnet. Bennys kommentar gik på at
linjen herover skulle læses som:
Gør indtil ( sæt fradato lig tildato)
- i stedet for
Gør indtil ( fradato er lig tildato )
Hvis den læsning havde været korrekt, ville det være fuldstændig
ligegyldigt hvad du havde sat fradato til før loopet. Men da du
anvender vbscript, er det den nederste læsning der er korrekt - og
det er ikke her der er fejl i dit script.
> Kan i måske se hvad fejlen er i scriptet...???
Ikke umiddelbart. Jeg kan ikke se hvad du har brug for så mange
loops for - hvad har du i de forskellige postsæt, og hvorfor kan du
ikke anvende sql til at sammenligne datoerne?
Jeg vil foreslå dig at starte helt forfra - men du kan lige få et
par løse kommentarer til scripet:
,----
| FraDato="DateSerial(" & Year(RS2("FraDato")) & ", " &
| Month(RS2("FraDato")) & ", " & Day(RS2("FraDato")) & ") "
| TilDato="DateSerial(" & Year(RS2("TilDato")) & ", " &
| Month(RS2("TilDato")) & ", " & Day(RS2("TilDato")) & ") "
| Do Until FraDato=TilDato
`----
- når både Fradato og Tildato hentes fra en database, er der ingen
grund til at blande dateserial ind. Du kan fint nøjes med følgende:
FraDato = RS2("Fradato")
TilDato = RS2("Tildato")
Do Until FraDato = TilDato
| IF NOT Dato >= Fradato & " AND " & Dato <= TilDato THEN
Denne sammenligning giver ikke rigtig mening. Hvis man sætter
parenteser, er det lettere at se hvad der sker:
IF NOT ((Dato >= (Fradato & " AND " & Dato)) <= TilDato) THEN
Først sammensættes din fradato med strengen " AND " og værdien i
Dato. Herefter sammenlignes den med indholdet af Dato, og
resultatet herfra sammenlignes så med Tildato.
Jeg går ud fra at du gerne vil undersøge om Dato ligger mellem
Fradato og Tildato. Det kan gøres som her:
If Not ((Dato >= Fradato) AND (Dato <= TilDato)) Then
- der giver et helt andet resultat.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Ukendt (11-04-2006)
| Kommentar Fra : Ukendt |
Dato : 11-04-06 11:40 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
> Ikke umiddelbart. Jeg kan ikke se hvad du har brug for så mange
> loops for - hvad har du i de forskellige postsæt, og hvorfor kan du
> ikke anvende sql til at sammenligne datoerne?
I rs og rs1 ligger der billeder og noget tekst...
I rs2 ligger ferie og fridage (fradato og tildato)
Og dato er en dato 14 dage frem i tiden, som så også forøges med 1 dag ad
gangen
Jeg skal slutte med en side, som viser 10 datoer, hvoraf ingen af dem er
feriedage/fridage, og billeder og tekst...
> Jeg vil foreslå dig at starte helt forfra
Det ville jeg være ked af...
> ,----
> | FraDato="DateSerial(" & Year(RS2("FraDato")) & ", " &
> | Month(RS2("FraDato")) & ", " & Day(RS2("FraDato")) & ") "
> | TilDato="DateSerial(" & Year(RS2("TilDato")) & ", " &
> | Month(RS2("TilDato")) & ", " & Day(RS2("TilDato")) & ") "
> | Do Until FraDato=TilDato
> `----
>
> - når både Fradato og Tildato hentes fra en database, er der ingen
> grund til at blande dateserial ind. Du kan fint nøjes med følgende:
>
> FraDato = RS2("Fradato")
> TilDato = RS2("Tildato")
> Do Until FraDato = TilDato
Har jeg prøvet - men det virkede ikke...
>
>
> | IF NOT Dato >= Fradato & " AND " & Dato <= TilDato THEN
>
> Denne sammenligning giver ikke rigtig mening.
OK...
>
> Jeg går ud fra at du gerne vil undersøge om Dato ligger mellem
> Fradato og Tildato. Det kan gøres som her:
>
> If Not ((Dato >= Fradato) AND (Dato <= TilDato)) Then
>
> - der giver et helt andet resultat.
Jeg får fejlen
Typer stemmer ikke overens: '[string: "Falsk AND Sand"]'
Bjarne
| |
Ukendt (11-04-2006)
| Kommentar Fra : Ukendt |
Dato : 11-04-06 11:41 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
> Ikke umiddelbart. Jeg kan ikke se hvad du har brug for så mange
> loops for - hvad har du i de forskellige postsæt, og hvorfor kan du
> ikke anvende sql til at sammenligne datoerne?
I rs og rs1 ligger der billeder og noget tekst...
I rs2 ligger ferie og fridage (fradato og tildato)
Og dato er en dato 14 dage frem i tiden, som så også forøges med 1 dag ad
gangen
Jeg skal slutte med en side, som viser 10 datoer, hvoraf ingen af dem er
feriedage/fridage, og billeder og tekst...
> Jeg vil foreslå dig at starte helt forfra
Det ville jeg være ked af...
> ,----
> | FraDato="DateSerial(" & Year(RS2("FraDato")) & ", " &
> | Month(RS2("FraDato")) & ", " & Day(RS2("FraDato")) & ") "
> | TilDato="DateSerial(" & Year(RS2("TilDato")) & ", " &
> | Month(RS2("TilDato")) & ", " & Day(RS2("TilDato")) & ") "
> | Do Until FraDato=TilDato
> `----
>
> - når både Fradato og Tildato hentes fra en database, er der ingen
> grund til at blande dateserial ind. Du kan fint nøjes med følgende:
>
> FraDato = RS2("Fradato")
> TilDato = RS2("Tildato")
> Do Until FraDato = TilDato
Har jeg prøvet - men det virkede ikke...
>
>
> | IF NOT Dato >= Fradato & " AND " & Dato <= TilDato THEN
>
> Denne sammenligning giver ikke rigtig mening.
OK...
>
> Jeg går ud fra at du gerne vil undersøge om Dato ligger mellem
> Fradato og Tildato. Det kan gøres som her:
>
> If Not ((Dato >= Fradato) AND (Dato <= TilDato)) Then
>
> - der giver et helt andet resultat.
Jeg får fejlen
Typer stemmer ikke overens: '[string: "Falsk AND Sand"]'
Bjarne
| |
Jens Gyldenkærne Cla~ (11-04-2006)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 11-04-06 11:57 |
|
bsn skrev:
>> FraDato = RS2("Fradato")
>> TilDato = RS2("Tildato")
>> Do Until FraDato = TilDato
> Har jeg prøvet - men det virkede ikke...
*Hvordan* virker det ikke?
>> If Not ((Dato >= Fradato) AND (Dato <= TilDato)) Then
> Jeg får fejlen
> Typer stemmer ikke overens: '[string: "Falsk AND Sand"]'
Hvordan har du tildelt en værdi til Dato?
Prøv evt. at typecaste med CDate eller evt. at oprette datoen med
DateSerial.
Fejlmeddelelsen er klar nok - du sammenligner en streng med en
dato. Løsningen er *ikke* at konvertere datoen til en streng (som
din tidligere kode), men at sørge for at der sammenlignes to
datoer.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Ukendt (11-04-2006)
| Kommentar Fra : Ukendt |
Dato : 11-04-06 12:43 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
>>> FraDato = RS2("Fradato")
>>> TilDato = RS2("Tildato")
>>> Do Until FraDato = TilDato
>
>> Har jeg prøvet - men det virkede ikke...
>
> *Hvordan* virker det ikke?
Har lige prøvet engang til, og det virker godt nok...sorry...men det vigtige
er jo nede i IF sætningen...
>
>>> If Not ((Dato >= Fradato) AND (Dato <= TilDato)) Then
>
>> Jeg får fejlen
>> Typer stemmer ikke overens: '[string: "Falsk AND Sand"]'
>
> Hvordan har du tildelt en værdi til Dato?
Dato=Date(), og oprindeligt med DateSerial...
> Prøv evt. at typecaste med CDate
Har jeg prøvet, det giver samme resultat...
> eller evt. at oprette datoen med DateSerial.
Det er det jeg har gjort oprindeligt...
>
> Fejlmeddelelsen er klar nok - du sammenligner en streng med en
> dato. Løsningen er *ikke* at konvertere datoen til en streng (som
> din tidligere kode), men at sørge for at der sammenlignes to
> datoer.
Ja, det er rigtigt - sammenligningen går ud på, om Dato ligger mellem
FraDato og TilDato...,
og gør den ikke det så "Skriv en linje med et UgeNr, En Dato, Billed,
Billed, Checkbox, Tekst"
Hvor svært ka det være...;-D
Bjarne
| |
Jens Gyldenkærne Cla~ (11-04-2006)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 11-04-06 13:08 |
|
bsn skrev:
>> Hvordan har du tildelt en værdi til Dato?
> Dato=Date(), og oprindeligt med DateSerial...
Prøv lige at vise de steder i din kode der har noget med Dato-
variablen at gøre.
Altså den eller de linjer hvor du tildeler en værdi til den, og den
eller de linjer hvor du sammenligner den med andet indhold.
Prøv også at lave en udskrift af det du sammenligner:
Response.write "Dato: " & Dato & "<br>"
Response.write "Fradato: " & FraDato & "<br>"
Response.write "Tildato: " & TilDato & "<br>"
NB: Det er svært at læse dine kommentarer når du skriver dem lige
efter citaterne. Hvis du adskiller citatblokke og tekstblokke med
en tom linje, bliver teksten meget lettere at læse.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Ukendt (11-04-2006)
| Kommentar Fra : Ukendt |
Dato : 11-04-06 14:51 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
>
>>> Hvordan har du tildelt en værdi til Dato?
>
>> Dato=Date(), og oprindeligt med DateSerial...
>
> Prøv lige at vise de steder i din kode der har noget med Dato-
> variablen at gøre.
> Altså den eller de linjer hvor du tildeler en værdi til den,
Dato="DateSerial(" & Year(Date()) & ", " & Month(Date()) & ", " &
Day(Date()+10) & ") "
Dato1=Date()+10
> og den eller de linjer hvor du sammenligner den med andet indhold.
IF NOT ((Dato >= Fradato) & " AND " & (Dato <= TilDato)) THEN
IF NOT ((cDate(Dato1) >= cDate(FraDato1)) & " AND " & ((cDate(Dato1) <=
cDate(TilDato1)))) THEN
> Prøv også at lave en udskrift af det du sammenligner:
>
>
> Response.write "Dato: " & Dato & "<br>"
> Response.write "Fradato: " & FraDato & "<br>"
> Response.write "Tildato: " & TilDato & "<br>"
Dato: 21-04-2006
Fradato: 10-05-2006
Tildato: 27-05-2006
> NB: Det er svært at læse dine kommentarer når du skriver dem lige
> efter citaterne. Hvis du adskiller citatblokke og tekstblokke med
> en tom linje, bliver teksten meget lettere at læse.
Sorry - skal aldrig ske mere...;-D
Bjarne
| |
Jens Gyldenkærne Cla~ (11-04-2006)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 11-04-06 14:57 |
|
bsn skrev:
> Dato="DateSerial(" & Year(Date()) & ", " & Month(Date()) &
Hvad laver anførselstegnene herover?
>> og den eller de linjer hvor du sammenligner den med andet
>> indhold.
>
> IF NOT ((Dato >= Fradato) & " AND " & (Dato <= TilDato))
Ovenstående er ikke det jeg foreslog dig. Du har igen indsat nogle
anførselstegn.
>> Response.write "Dato: " & Dato & "<br>"
>> Response.write "Fradato: " & FraDato & "<br>"
>> Response.write "Tildato: " & TilDato & "<br>"
>
> Dato: 21-04-2006
Er linjen herover udskrevet sådan som jeg skrev? Det hænger slet
ikke sammen med den kode du har angivet højere oppe.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Ukendt (11-04-2006)
| Kommentar Fra : Ukendt |
Dato : 11-04-06 15:32 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns97A2A2480CB55jcdmfdk@gyrosmod.dtext.news.tele.dk...
> bsn skrev:
>
>> Dato="DateSerial(" & Year(Date()) & ", " & Month(Date()) &
>
> Hvad laver anførselstegnene herover?
Jeg har luget alle anførselstegn væk nu...
>>> og den eller de linjer hvor du sammenligner den med andet
>>> indhold.
>>
>> IF NOT ((Dato >= Fradato) & " AND " & (Dato <= TilDato))
>
> Ovenstående er ikke det jeg foreslog dig. Du har igen indsat nogle
> anførselstegn.
Jeg har luget alle anførselstegn væk nu...
>>> Response.write "Dato: " & Dato & "<br>"
>>> Response.write "Fradato: " & FraDato & "<br>"
>>> Response.write "Tildato: " & TilDato & "<br>"
>>
>> Dato: 21-04-2006
>
> Er linjen herover udskrevet sådan som jeg skrev? Det hænger slet
> ikke sammen med den kode du har angivet højere oppe.
Sorry - men...
Der er stor udvikling at spore nu - jeg får vist mine 10 linjer med billeder
og det hele, så det hjalp med "lugningen"
Der er bare lige et problem...det er samme Dato der står i alle
linjerne...
Men det er vist tæt på nu...
Bjarne
| |
Ukendt (11-04-2006)
| Kommentar Fra : Ukendt |
Dato : 11-04-06 20:11 |
|
"bsn" <bsnsnabelaoncabledotdk> skrev
> Der er bare lige et problem...det er samme Dato der står i alle
> linjerne...
> Men det er vist tæt på nu...
> Bjarne
Jeg har fået de rigtige records ud nu...
Problemet er, at jeg kun får 3 records udskrevet(Får ikke flere records, når
loopet rammer en dato som ikke skal udskrives)
Det er meningen, at der altid er 10 records at se...
Sådan ser koden ud nu...
Dato=Date()+10
Tael=1
Tael1=11
Do Until Tael=10
'Response.Write "Loop1"
'Response.End
Do Until RS.EOF
'Response.Write "Loop2"
'Response.End
Do Until RS1.EOF
'Response.Write "Loop3"
'Response.End
RS2.MoveFirst
Do Until RS2.EOF
'Response.Write "Loop4"
'Response.End
FraDato=RS2("FraDato")
TilDato=RS2("TilDato")
Do Until FraDato=TilDato
'Response.Write "Loop5"
'Response.End
IF NOT (Dato >= FraDato) AND (Dato <= TilDato) THEN
Response.Write "<tr>"
Response.Write "<td align=center>" & "<b>" & DatePart("ww",Dato,2,2) &
"</b>" & " - " & "<input type=" & "text" & " readonly=" & "True" & " VALUE="
& Dato & " name=" & "txtDato" & Tael & " size=" & "8" & ">" & "</td>"
Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
RS("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C" &
Tael & " value=" & Rs("MenuID") & ">" & " - " & Rs("MenuTekst") & "</td>"
Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
RS1("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C"
& Tael1 & " value=" & Rs1("MenuID") & ">" & " - " & Rs1("MenuTekst") &
"</td>"
Response.Write "</tr>"
Exit Do
ELSE
Exit Do
END IF
FraDato=FraDato+1
Loop
RS2.MoveNext
Loop
Rs1.MoveNext
Exit Do
Loop
Rs.MoveNext
Exit Do
Loop
Dato=Dato+1
Tael=Tael+1
Tael1=Tael1+1
Loop
RS.Close
RS1.Close
RS2.Close
Conn.Close
Set Conn=Nothing
Kan du gennemskue hvor det halter...???
Bjarne
| |
Christian M. Nielsen (12-04-2006)
| Kommentar Fra : Christian M. Nielsen |
Dato : 12-04-06 12:06 |
|
"bsn" <bsnsnabelaoncabledotdk> skrev i en meddelelse
news:443bff57$0$154$edfadb0f@dread11.news.tele.dk...
> Jeg har fået de rigtige records ud nu...
> Problemet er, at jeg kun får 3 records udskrevet(Får ikke flere records,
> når loopet rammer en dato som ikke skal udskrives)
> Det er meningen, at der altid er 10 records at se...
<SNIP>
> Kan du gennemskue hvor det halter...???
Jeg tror det er i
Do Until FraDato=TilDato
det halter.
Hvis den er opfyldt før du kommer til 10 poster, så stopper den der. Prøv at
vælge nogle datoer der er så langt fra hinanden at du er sikker på at få 10
poster udskrevet.
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.
| |
Ukendt (12-04-2006)
| Kommentar Fra : Ukendt |
Dato : 12-04-06 14:29 |
|
"Christian M. Nielsen" <look.for.it@my.webpage> skrev i en meddelelse
news:443cdf00$0$60783$157c6196@dreader1.cybercity.dk...
>
> "bsn" <bsnsnabelaoncabledotdk> skrev i en meddelelse
> news:443bff57$0$154$edfadb0f@dread11.news.tele.dk...
>
>> Jeg har fået de rigtige records ud nu...
>> Problemet er, at jeg kun får 3 records udskrevet(Får ikke flere records,
>> når loopet rammer en dato som ikke skal udskrives)
>> Det er meningen, at der altid er 10 records at se...
>
> <SNIP>
>
>> Kan du gennemskue hvor det halter...???
>
> Jeg tror det er i
>
> Do Until FraDato=TilDato
Sandsynligvis - jeg kan ikke lige se hvordan jeg skal omstrukturere koden...
> det halter.
>
> Hvis den er opfyldt før du kommer til 10 poster, så stopper den der. Prøv
> at vælge nogle datoer der er så langt fra hinanden at du er sikker på at
> få 10 poster udskrevet.
Kodeændring
"Do Until RS2.EOF AND FraDato=TilDato"
Har prøvet at lave øvelsen, og får nu 10 unikke poster - men så er der
heller ikke stødt på nogen datoer, som skal udelades...
og når jeg gør det, så stoppe udførelsen eks. får jeg kun 2 poster...
Kan du gennemskue den...
Bjarne
| |
Christian M. Nielsen (13-04-2006)
| Kommentar Fra : Christian M. Nielsen |
Dato : 13-04-06 16:59 |
|
"bsn" <bsnsnabelaoncabledotdk> skrev i en meddelelse
news:443d009a$0$152$edfadb0f@dread11.news.tele.dk...
> Kodeændring
> "Do Until RS2.EOF AND FraDato=TilDato"
Prøv at nøjes med at vælge op til 10 unikke poster ved RS2 (SELECT TOP 10
FROM tblXXX WHERE FraDato>YYY and TilDato < ). Udskift selv med de rette
betegnelser.
Jeg ved ikke hvordan din select sætning ser ud, men hvis du skriver den
her, så kan vi hjælpe dig med at få den rigtig.
Så vidt jeg kan gennemskue det, så er det dit loop mede RS2 som driller?
Hvis du kun har valgt de poster der skal loopes igennem i din select sætning
så bliver det nemmere for dig (tror jeg
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.
| |
Ukendt (13-04-2006)
| Kommentar Fra : Ukendt |
Dato : 13-04-06 19:46 |
|
"Christian M. Nielsen" <look.for.it@my.webpage> skrev
>
> Prøv at nøjes med at vælge op til 10 unikke poster ved RS2 (SELECT TOP 10
> FROM tblXXX WHERE FraDato>YYY and TilDato < ). Udskift selv med de rette
> betegnelser.
Jeg har en tabel med 2 kolonner, FraDato og TilDato ligger i (RS2)
> Jeg ved ikke hvordan din select sætning ser ud, men hvis du skriver den
> her, så kan vi hjælpe dig med at få den rigtig.
Det ville jeg blive rigtig glad for - har vist stirret mig helt blind på det
nu...
Jeg har 3 sætninger:
Sql = "SELECT * FROM qryKoldMenu"
RS.Open Sql, Conn, 3, 3
Sql1 = "SELECT * FROM qryVarmMenu"
RS1.Open Sql1, Conn, 3, 3
Sql2 = "SELECT * FROM tblFerieFridage"
RS2.Open Sql2, Conn, 3, 3
> Så vidt jeg kan gennemskue det, så er det dit loop mede RS2 som driller?
Det er nok som du siger - kan ikke gennemskue det på nuværende tidspunkt -
blindhed ;-D
> Hvis du kun har valgt de poster der skal loopes igennem i din select
> sætning så bliver det nemmere for dig (tror jeg
Se ovenstående sql..., og de indeholder kun det som skal bruges...
Jeg har prøvet at omstrukturere koden lidt. Når jeg looper igennem, får jeg
godt nok flere poster efter en ferie/fridag, men kun én gang, ellers kommer
der bare en række datoer efterflg, som ikke har været igennem ferie/fridag
loopet.
Du kan se den nye kode her...
<%
Response.Write "<form method=" & "POST" & " action=" &
"betaling.asp?BarnID=" & Barn & ">"
Dim Dato
Dim FraDato
Dim TilDato
Dim Tael
Dim Tael1
Dato = Date() + 10
Tael = 1
Tael1 = 11
Do Until Tael = 11
Do Until RS2.EOF
RS2.MoveFirst
FraDato = RS2("FraDato")
TilDato = RS2("TilDato")
Do Until FraDato = TilDato
IF (Dato >= FraDato) AND (Dato <= TilDato) THEN
'ELSEIF DatePart("w",Dato,2,2) = 6 THEN
'ELSEIF DatePart("w",Dato,2,2) = 7 THEN
Exit Do
ELSE
Response.Write "<tr>"
Response.Write "<td align=center>" & "<b>" & DatePart("ww",Dato,2,2)
& "</b>" & " - " & "<input type=" & "text" & " readonly=" & "True" & "
VALUE=" & Dato & " name=" & "txtDato" & Tael & " size=" & "8" & ">" &
"</td>"
Do Until RS.EOF
Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
RS("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C" &
Tael & " value=" & Rs("MenuID") & ">" & " - " & Rs("MenuTekst") & "</td>"
RS.MoveNext
Exit Do
Loop
Do Until RS1.EOF
Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
RS1("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C"
& Tael1 & " value=" & Rs1("MenuID") & ">" & " - " & Rs1("MenuTekst") &
"</td>"
Response.Write "</tr>"
RS1.MoveNext
Exit Do
Loop
END IF
FraDato = FraDato + 1
Exit Do
Loop
Dato = Dato + 1
RS2.MoveNext
Exit Do
Loop
Tael = Tael + 1
Tael1 = Tael1 + 1
'Dato = Dato + 1
Loop
RS.Close
RS1.Close
RS2.Close
Conn.Close
Set Conn = Nothing
%>
Generelt får jeg ikke mine 10 records hvis der er ferie/fridage iblandt,
ellers kan jeg godt få 10 poster.
Tak for tålmodigheden...
Bjarne
"Den midlertidige blinde"
| |
Christian M. Nielsen (14-04-2006)
| Kommentar Fra : Christian M. Nielsen |
Dato : 14-04-06 10:12 |
|
"bsn" <bsnsnabelaoncabledotdk> skrev i en meddelelse
news:443e9c80$0$169$edfadb0f@dread11.news.tele.dk...
>
> "Christian M. Nielsen" <look.for.it@my.webpage> skrev
>>
>> Prøv at nøjes med at vælge op til 10 unikke poster ved RS2 (SELECT TOP 10
>> FROM tblXXX WHERE FraDato>YYY and TilDato < ). Udskift selv med de
>> rette betegnelser.
>
> Jeg har en tabel med 2 kolonner, FraDato og TilDato ligger i (RS2)
Har jeg forstået det rigtigt så ser det sådan ud? (jeg ved ikke om du har ID
med, men det kan du sagtens tilføje, og så lade feltet være autonummereret.
Du kan også sortere på andre felter hvis du har dem i tabellen eller
datoerne.
ID FraDato TilDato
01 1/2-2006 3/2-2006
02 1/1-2006 9/3-2006
03 6/9-2006 23/12-2006
osv
> Sql2 = "SELECT * FROM tblFerieFridage"
DIM varFraDato, varTilDato
varFraDato = 1/1-2006 'indsæt din egen dato
varTilDato = 31/12-2006 'indsæt din egen dato
Sql2 = "SELECT TOP 10 * FROM tblFerieFridage WHERE ((FraDato > varFraDato)
AND (TilDato < varTilDato )) ORDER BY TilDato"
dette giver dig op til 10 poster i det valgte tidsrum. hvis der kun er 6 er
det dem der bliver valgt.
Do Until RS2.EOF
'kode der udskriver posten.
RS2.movenext
loop
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.
| |
Ukendt (14-04-2006)
| Kommentar Fra : Ukendt |
Dato : 14-04-06 19:25 |
|
"Christian M. Nielsen" <look.for.it@my.webpage> skrev
>> Jeg har en tabel med 2 kolonner, FraDato og TilDato ligger i (RS2)
>
>
> Har jeg forstået det rigtigt så ser det sådan ud? (jeg ved ikke om du har
> ID med, men det kan du sagtens tilføje, og så lade feltet være
> autonummereret. Du kan også sortere på andre felter hvis du har dem i
> tabellen eller datoerne.
Jeg tror ikke du har forstået det rigtigt...
Jeg giver dig et eks. på hvordan output skal se ud...
tblFerieFridage
FraDato TilDato
05-02-2006 07-02-2006
10-02-2006 12-02-2006
20-02-2006 22-02-2006
StartDato=03-02-2006
Outputdato skal så se således ud...altid 10 datoer...
03-02-2006
04-02-2006
08-02-2006
09-02-2006
13-02-2006
14-02-2006
15-02-2006
16-02-2006
17-02-2006
18-02-2006
Eks. slut
Håber det gav lidt mening...
Bjarne
| |
Christian M. Nielsen (15-04-2006)
| Kommentar Fra : Christian M. Nielsen |
Dato : 15-04-06 19:07 |
|
"bsn" <bsnsnabelaoncabledotdk> skrev i en meddelelse
news:443fe917$0$178$edfadb0f@dread11.news.tele.dk...
>
> "Christian M. Nielsen" <look.for.it@my.webpage> skrev
>>> Jeg har en tabel med 2 kolonner, FraDato og TilDato ligger i (RS2)
>>
>>
>> Har jeg forstået det rigtigt så ser det sådan ud? (jeg ved ikke om du har
>> ID med, men det kan du sagtens tilføje, og så lade feltet være
>> autonummereret. Du kan også sortere på andre felter hvis du har dem i
>> tabellen eller datoerne.
>
> Jeg tror ikke du har forstået det rigtigt...
> Jeg giver dig et eks. på hvordan output skal se ud...
>
> tblFerieFridage
> FraDato TilDato
> 05-02-2006 07-02-2006
> 10-02-2006 12-02-2006
> 20-02-2006 22-02-2006
>
> StartDato=03-02-2006
> Outputdato skal så se således ud...altid 10 datoer...
> 03-02-2006
> 04-02-2006
> 08-02-2006
> 09-02-2006
> 13-02-2006
> 14-02-2006
> 15-02-2006
> 16-02-2006
> 17-02-2006
> 18-02-2006
>
> Eks. slut
>
> Håber det gav lidt mening...
Ja, tror jeg er med nu.
Jeg kan ikke lige gennemskue hvordan du kan lave et udtræk, eller en anden
smart måde at bruge det på som det er. Jeg vil i stedet foreslå dig, at lave
lidt om på din database, hvis det er muligt? I stedet for at have en fra og
til dato, kunne du have en tabel med de datoer som skal bruges i outputtet.
I dit eksempel har du 6 indtastninger for at få 10 datoer, så det vil kun
være ganske få ekstra indtastninger. Du kan evt. lave det via en side, hvor
du kan klikke datoerne af, og så sende de valgte datoer til databasen.
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.
| |
Ukendt (16-04-2006)
| Kommentar Fra : Ukendt |
Dato : 16-04-06 00:13 |
|
"Christian M. Nielsen" <look.for.it@my.webpage> skrev i en meddelelse
news:44413638$0$67255$157c6196@dreader2.cybercity.dk...
>
>
> "bsn" <bsnsnabelaoncabledotdk> skrev i en meddelelse
> news:443fe917$0$178$edfadb0f@dread11.news.tele.dk...
>>
>> "Christian M. Nielsen" <look.for.it@my.webpage> skrev
>>>> Jeg har en tabel med 2 kolonner, FraDato og TilDato ligger i (RS2)
>>>
>>>
>>> Har jeg forstået det rigtigt så ser det sådan ud? (jeg ved ikke om du
>>> har ID med, men det kan du sagtens tilføje, og så lade feltet være
>>> autonummereret. Du kan også sortere på andre felter hvis du har dem i
>>> tabellen eller datoerne.
>>
>> Jeg tror ikke du har forstået det rigtigt...
>> Jeg giver dig et eks. på hvordan output skal se ud...
>>
>> tblFerieFridage
>> FraDato TilDato
>> 05-02-2006 07-02-2006
>> 10-02-2006 12-02-2006
>> 20-02-2006 22-02-2006
>>
>> StartDato=03-02-2006
>> Outputdato skal så se således ud...altid 10 datoer...
>> 03-02-2006
>> 04-02-2006
>> 08-02-2006
>> 09-02-2006
>> 13-02-2006
>> 14-02-2006
>> 15-02-2006
>> 16-02-2006
>> 17-02-2006
>> 18-02-2006
>>
>> Eks. slut
>>
>> Håber det gav lidt mening...
>
> Ja, tror jeg er med nu.
>
> Jeg kan ikke lige gennemskue hvordan du kan lave et udtræk, eller en anden
> smart måde at bruge det på som det er. Jeg vil i stedet foreslå dig, at
> lave lidt om på din database, hvis det er muligt? I stedet for at have en
> fra og til dato, kunne du have en tabel med de datoer som skal bruges i
> outputtet. I dit eksempel har du 6 indtastninger for at få 10 datoer, så
> det vil kun være ganske få ekstra indtastninger. Du kan evt. lave det via
> en side, hvor du kan klikke datoerne af, og så sende de valgte datoer til
> databasen.
Meningen er at have et dynamisk "rullende" output ( altid 10 datoer fra en
givet dato ) med feriedage og fridage fratrukket...
Altså altid 10 dage, minus feriefridage frem i tiden...
Så der er ikke nogle faste datoer at klikke af...
Måske jeg ikke helt forstår meningen med den tabel med "datoer som skal
bruges i outputtet".
Det kunne selvfølgelig laves på en anden måde, med indtastning af alle
enkeltdatoer i en tabel, som er feriefridage, som så kunne sammenlignes med
startdatoen...men det er jo lidt af et hestearbejde...dovenskab måske...
Det må kunne lade sig gøre på den anden måde...
Bjarne
| |
Jørn Andersen (16-04-2006)
| Kommentar Fra : Jørn Andersen |
Dato : 16-04-06 01:09 |
|
On Thu, 13 Apr 2006 20:46:02 +0200, "bsn" <bsnsnabelaoncabledotdk>
wrote:
>Jeg har 3 sætninger:
>Sql = "SELECT * FROM qryKoldMenu"
>RS.Open Sql, Conn, 3, 3
>Sql1 = "SELECT * FROM qryVarmMenu"
>RS1.Open Sql1, Conn, 3, 3
>Sql2 = "SELECT * FROM tblFerieFridage"
>RS2.Open Sql2, Conn, 3, 3
Et eller andet siger mig, at du har en uhensigtsmæssig datastruktur,
når du skal have 5 loops inden i hinanden for at skrive det ud.
Men det er bare et gæt, så kan du ikke fortælle hvad siden egentlig
skal kunne? Altså uden de tekniske detaljer: Hvad skal den vise?
Mvh. Jørn
--
Jørn Andersen,
Brønshøj
| |
Ukendt (16-04-2006)
| Kommentar Fra : Ukendt |
Dato : 16-04-06 10:38 |
|
"Jørn Andersen" <jorn@jorna.dk> skrev
> Et eller andet siger mig, at du har en uhensigtsmæssig datastruktur,
> når du skal have 5 loops inden i hinanden for at skrive det ud.
>
> Men det er bare et gæt, så kan du ikke fortælle hvad siden egentlig
> skal kunne? Altså uden de tekniske detaljer: Hvad skal den vise?
Det er muligt...
Siden skal vise 10 linjer bestående af:
en dato, ( Datoer må ikke være en feriedag eller en fridag )
en checkbox,
et tekstfelt,
kold menu(billed),
varm menu(billed),
hvor man så kan vælge en menu(mad) på en dato, 10 dage frem i tiden...
Bjarne
| |
Jørn Andersen (16-04-2006)
| Kommentar Fra : Jørn Andersen |
Dato : 16-04-06 13:41 |
|
On Sun, 16 Apr 2006 11:37:34 +0200, "bsn" <bsnsnabelaoncabledotdk>
wrote:
>"Jørn Andersen" <jorn@jorna.dk> skrev
>> Et eller andet siger mig, at du har en uhensigtsmæssig datastruktur,
>> når du skal have 5 loops inden i hinanden for at skrive det ud.
>>
>> Men det er bare et gæt, så kan du ikke fortælle hvad siden egentlig
>> skal kunne? Altså uden de tekniske detaljer: Hvad skal den vise?
>
>Det er muligt...
>
>Siden skal vise 10 linjer bestående af:
>
>en dato, ( Datoer må ikke være en feriedag eller en fridag )
>en checkbox,
>et tekstfelt,
>kold menu(billed),
>varm menu(billed),
>
>hvor man så kan vælge en menu(mad) på en dato, 10 dage frem i tiden...
Skal man så kunne vælge alle menuer på alle dage, eller er der
skiftende valgmuligheder?
Hvis det er skiftende menuer, skal du (eller "nogen") jo forudvælge
menuer for de enkelte dage. Datoerne ligger i så fald i databasen, og
udtrækket kan indeholde både datoer og menuer i samme loop.
Hvis ikke kan datoerne genereres med en simpel For-Next loop.
Jeg ville nok vælge at have en datastruktur i retning af:
- en tabel med helligdage (ikke som intervaller, men enkeltdage, da
det er relativt få, og de kan indtastes for flere år ad gangen - og da
det gør udtrækket langt simplere)
(Hvis du - eller "nogen" - skal forudbestemme menu-udvalget, behøver
du ikke denne tabel, da de relevante datoer jo i forvejen findes i
databasen)
- en tabel med menuer (tblMenu) indeholdende:
MenuId (Nøgle)
MenuNavn
MenuBillede (Link til billedet)
MenuVarm (Ja/Nej-felt)
Hvis der ikke er forudbestemte menuvalg, kunne pseudo-koden se ud som:
1. Træk de næste 3-4 ugers helligdage ud i et array (arrHelligdage)
med objRs.Getrows
2. Træk menuerne ud med id, navn og billedlink
3. sæt startdato = i dag
4.
For i = 1 To 15 (fx)
datDato = DateAdd("d", i, startdato)
If datDato = lørdag eller søndag, eller den er i arrHelligdage
' Do nothing
Else
- udskriv menuerne med tekst, billede og checkbox
End If
Next
Du vil så nogle gange få 8 dage, andre gange 11, afhængigt af om der
er helligdage. Hvis ikke det er tilfredsstillede, kan du sætte tallet
15 lidt højere og bygge en tæller ind i loopen, der trigger en Exit
For, når du når til 10 dage.
Hvis der er forudbestemte menuvalg, behøver du ikke For-Next-loopen,
men kan blot trække menuerne ud sammen med de datoer, hvor du
"udbyder" dem.
Jeg ville så have tblMenu + en datotabel med:
DatoId (nøgle)
MenuDato
KoldMenuId (fremmednøgle til Menu-tabellen)
VarmMenuId (do.)
Men denne simple datastruktur får du også en ret simpel kode - som er
relativt hurtig og ikke mindst overskuelig at vedligeholde.
Spørg endelig igen, hvis du forklaringen er for knudret
Af hensyn til indkøb og tilberedning skal du måske "låse" menuvalget
for den første dag eller to, mens man sagtens kan "vælge om" for de
sidste 7-8 dage ...
Valget gemmes i en Bruger/MenuValg-tabel med BrugerId, MenuId og
DatDato.
Good luck!
--
Jørn Andersen,
Brønshøj
| |
Ukendt (16-04-2006)
| Kommentar Fra : Ukendt |
Dato : 16-04-06 19:52 |
|
"Jørn Andersen" <jorn@jorna.dk> skrev
>>"Jørn Andersen" <jorn@jorna.dk> skrev
>>> Et eller andet siger mig, at du har en uhensigtsmæssig datastruktur,
>>> når du skal have 5 loops inden i hinanden for at skrive det ud.
>>>
>>> Men det er bare et gæt, så kan du ikke fortælle hvad siden egentlig
>>> skal kunne? Altså uden de tekniske detaljer: Hvad skal den vise?
>>
>>Det er muligt...
>>
>>Siden skal vise 10 linjer bestående af:
>>
>>en dato, ( Datoer må ikke være en feriedag eller en fridag )
>>en checkbox,
>>et tekstfelt,
>>kold menu(billed),
>>varm menu(billed),
>>
>>hvor man så kan vælge en menu(mad) på en dato, 10 dage frem i tiden...
>
> Skal man så kunne vælge alle menuer på alle dage, eller er der
> skiftende valgmuligheder?
Du skal kunne vælge alle menuer på alle dage...
> Hvis det er skiftende menuer, skal du (eller "nogen") jo forudvælge
> menuer for de enkelte dage. Datoerne ligger i så fald i databasen, og
> udtrækket kan indeholde både datoer og menuer i samme loop.
> Hvis ikke kan datoerne genereres med en simpel For-Next loop.
Ja, der vælges hele tiden 10 aktive menuer...er ikke nået til det endnu,
men det bliver jo nok med en checkbox for den aktive menu...
> Jeg ville nok vælge at have en datastruktur i retning af:
> - en tabel med helligdage (ikke som intervaller, men enkeltdage, da
> det er relativt få, og de kan indtastes for flere år ad gangen - og da
> det gør udtrækket langt simplere)
Det tror jeg også at jeg er nået frem til...
> - en tabel med menuer (tblMenu) indeholdende:
> MenuId (Nøgle)
> MenuNavn
> MenuBillede (Link til billedet)
> MenuVarm (Ja/Nej-felt)
Den er lavet...
> Hvis der ikke er forudbestemte menuvalg, kunne pseudo-koden se ud som:
> 1. Træk de næste 3-4 ugers helligdage ud i et array (arrHelligdage)
> med objRs.Getrows
> 2. Træk menuerne ud med id, navn og billedlink
> 3. sæt startdato = i dag
> 4.
> For i = 1 To 15 (fx)
> datDato = DateAdd("d", i, startdato)
> If datDato = lørdag eller søndag, eller den er i arrHelligdage
> ' Do nothing
> Else
> - udskriv menuerne med tekst, billede og checkbox
> End If
> Next
Dette lyder lidt kryptisk for mig...
> Du vil så nogle gange få 8 dage, andre gange 11, afhængigt af om der
> er helligdage. Hvis ikke det er tilfredsstillede, kan du sætte tallet
> 15 lidt højere og bygge en tæller ind i loopen, der trigger en Exit
> For, når du når til 10 dage.
Skal have 10 dage hele tiden...
> Hvis der er forudbestemte menuvalg, behøver du ikke For-Next-loopen,
> men kan blot trække menuerne ud sammen med de datoer, hvor du
> "udbyder" dem.
> Jeg ville så have tblMenu + en datotabel med:
> DatoId (nøgle)
> MenuDato
> KoldMenuId (fremmednøgle til Menu-tabellen)
> VarmMenuId (do.)
Jeg vil helst ikke blande menu og dato sammen i samme tabel.
Menudato er datoer, som ikke er feriefridage...(anden tabel)
> Men denne simple datastruktur får du også en ret simpel kode - som er
> relativt hurtig og ikke mindst overskuelig at vedligeholde.
>
> Spørg endelig igen, hvis du forklaringen er for knudret
Ja tak for tålmodigheden...
> Af hensyn til indkøb og tilberedning skal du måske "låse" menuvalget
> for den første dag eller to, mens man sagtens kan "vælge om" for de
> sidste 7-8 dage ...
Det er ikke muligt at ændre menuen, når den er valgt og booket(betalt)...
Menuens startdato er hele tiden DagsDato + 10
> Valget gemmes i en Bruger/MenuValg-tabel med BrugerId, MenuId og
> DatDato.
Ja, det havde jeg også tænkt mig - er ikke nået dertil endnu...
>
> Good luck!
Thank you...
Og så lige til noget helt andet...
Du skulle vel ikke tilfældigvis have boet i Odense...
Bjarne
| |
Ukendt (16-04-2006)
| Kommentar Fra : Ukendt |
Dato : 16-04-06 20:19 |
|
Har denne kode nu, men den sender mig i et uendeligt loop...
Hvor er det lige det går galt...
Do Until Tael = 11
Do Until RS2.EOF
IF NOT RS2("FerieFridag") = Dato THEN
ELSEIF NOT DatePart("w",Dato,2,2) = 6 THEN
ELSEIF NOT DatePart("w",Dato,2,2) = 7 THEN
Response.Write "<tr>"
Response.Write "<td align=center>" & "<b>" & DatePart("ww",Dato,2,2) &
"</b>" & " - " & "<input type=" & "text" & " readonly=" & "True" & " VALUE="
& Dato & " name=" & "txtDato" & Tael & " size=" & "8" & ">" & "</td>"
Do Until RS.EOF
Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
RS("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C" &
Tael & " value=" & Rs("MenuID") & ">" & " - " & Rs("MenuTekst") & "</td>"
RS.MoveNext
Exit Do
Loop
Do Until RS1.EOF
Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
RS1("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C"
& Tael1 & " value=" & Rs1("MenuID") & ">" & " - " & Rs1("MenuTekst") &
"</td>"
Response.Write "</tr>"
RS1.MoveNext
Exit Do
Loop
Tael = Tael + 1
Response.Write Tael
Response.End
Tael1 = Tael1 + 1
Dato = Dato + 1
ELSE
Response.Write Tael
Response.End
Exit Do
END IF
RS2.MoveNext
Exit Do
Loop
Loop
Bjarne
| |
Jørn Andersen (16-04-2006)
| Kommentar Fra : Jørn Andersen |
Dato : 16-04-06 22:08 |
|
On Sun, 16 Apr 2006 21:18:41 +0200, "bsn" <bsnsnabelaoncabledotdk>
wrote:
>Har denne kode nu, men den sender mig i et uendeligt loop...
Hvis du kommer ind i en uendelig loop, så skyldes formentlig, at du
ikke sætter tælleren til at tælle frem, som du regner med
(Forklaring nederst)
>Hvor er det lige det går galt...
Det vil jeg overlade til dig at finde ud af - men jeg vil hellere
hjælpe dig til selv at finde det.
Jeg går ud fra, at du inden den første Do-sætning har defineret:
- RS, RS1 og RS2
- sat Tael = 0 og Tael 1 = 0 (eller måske 1)
- sat Dato til en Dato (en rigtig dato ikke bare en tekststreng)
>Do Until Tael = 11
Her kan du fx indsætte en testlinie for at se, om du kommer ind i den
første loop:
Response.Write "Tael = " & Tael & "<br>" & vbcrlf
Inden du går ind i den næste loop ville jeg så sætte en testtæller
mere:
intRs2Tael = 0
> Do Until RS2.EOF
Og sætte den til at tælle op:
intRs2Tael = intRs2Tael + 1
- og tilsvarende som før:
Response.Write "intRs2Tael = " & intRs2Tael & "<br>" & vbcrlf
Prøv lige at tage et ekstra kig på dine If'er:
> IF NOT RS2("FerieFridag") = Dato THEN
- den siger, at hvis det *ikke* er en fridag, skal der *ikke* skrives
noget
> ELSEIF NOT DatePart("w",Dato,2,2) = 6 THEN
- ditto: Hvis det *ikke* er lørdag, skal der ikke ske noget.
> ELSEIF NOT DatePart("w",Dato,2,2) = 7 THEN
- og hvis det ikke er søndag, skal der så ske noget
Det sidste er sådan set OK, men det ville virke mere logisk, hvis
opbygningen var:
If det er en feriefridag - ikke noget
ElseIf lørdag - ikke noget
ElseIf søndag - ikke noget
Else - så skal der ske noget
> Response.Write "<tr>"
> Response.Write "<td align=center>" & "<b>" & DatePart("ww",Dato,2,2) &
>"</b>" & " - " & "<input type=" & "text" & " readonly=" & "True" & " VALUE="
>& Dato & " name=" & "txtDato" & Tael & " size=" & "8" & ">" & "</td>"
Du får nok et problem her senere med at konvertere værdien til en
dato, men lad det ligge lige nu.
Til denne loop laver du så også en testtæller som før
> Do Until RS.EOF
> Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
>RS("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C" &
>Tael & " value=" & Rs("MenuID") & ">" & " - " & Rs("MenuTekst") & "</td>"
> RS.MoveNext
> Exit Do
Er denne Exit Do ikke en rest af noget test? Ellers får du under alle
omstændigheder kun én værdi udskrevet.
> Loop
> Do Until RS1.EOF
> Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
>RS1("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C"
>& Tael1 & " value=" & Rs1("MenuID") & ">" & " - " & Rs1("MenuTekst") &
>"</td>"
> Response.Write "</tr>"
> RS1.MoveNext
> Exit Do
Test-rest?
> Loop
> Tael = Tael + 1
> Response.Write Tael
> Response.End
Test-rest?
> Tael1 = Tael1 + 1
> Dato = Dato + 1
Man kan ikke lægge datoer sammen på denne måde - brug DateAdd
Den sidste Else vil så blive trigget på søndage
> ELSE
> Response.Write Tael
> Response.End
> Exit Do
Test-rest?
> END IF
> RS2.MoveNext
> Exit Do
Test-rest?
> Loop
>Loop
Jeg tror dit problem lige nu - som det ofte er med "loop i loop" - er
at du nemt kan miste overblikket.
I dit sted tror jeg, at jeg først ville lave den inderste loop - altså
udskrive menu-listen (Rs og Rs1).
Når du så ved, at den kan køre, kan du prøve med dato-loopen for sig
selv.
Til sidst kan du så sætte dem sammen.
Du har alt for mange fejlmuligheder til at det er til at finde ud af,
i hvilken del af koden fejlen ligger - og så er det bedre at dele
koden op i bidder, som du får til at køre hver for sig, inden du
binder det hele sammen.
Desuden: Når du tester, så nøjes ikke med at kigge på selve websiden,
men kig også i kildekoden. Det giver dig et meget mere præcist billede
af, hvad du rent faktisk får ud.
Det er fx grunden til, at jeg bruger vbcrlf (linieskift) i slutningen
af denne linie:
Response.Write "intRs2Tael = " & intRs2Tael & "<br>" & vbcrlf
Uden linieskift i koden er det ret umuligt at overskue din
HTML-kildekode. Så indsæt dem med rund hånd - det øger
overskueligheden.
Bemærk også, at når en If-betingelse er opfyldt (Sand), så vil den
ikke undersøge de efterfølgende.
Fx.: IF NOT RS2("FerieFridag") = Dato THEN
- hvis det ikke er en fridag, så vil den udføre det, der står i denne
gren af If'en (i dette tilfælde intet) og så afslutte hele
If-konstruktionen.
Til sidst:
Du sætter kun Tael til at tælle frem i én af If-mulighederne (den der
ikke er søndag). Men den skal tælle frem i alle tilfælde - ellers får
du et uendeligt loop.
Derfor skal den sættes til at tælle frem uden for If'erne. Jeg plejer
at sætte dem til at tælle frem som det første linie i loopen, så
glemmer man det ikke - sepcielt ikke hvis man senere har nogle Exit
et-eller-andet.
Håber noget af det kan bringe dig på sporet.
Good luck!
--
Jørn Andersen,
Brønshøj
| |
Jørn Andersen (16-04-2006)
| Kommentar Fra : Jørn Andersen |
Dato : 16-04-06 23:19 |
|
On Sun, 16 Apr 2006 20:52:04 +0200, "bsn" <bsnsnabelaoncabledotdk>
wrote:
>> Skal man så kunne vælge alle menuer på alle dage, eller er der
>> skiftende valgmuligheder?
>
>Du skal kunne vælge alle menuer på alle dage...
OK.
>> Hvis der ikke er forudbestemte menuvalg, kunne pseudo-koden se ud som:
>> 1. Træk de næste 3-4 ugers helligdage ud i et array (arrHelligdage)
>> med objRs.Getrows
>> 2. Træk menuerne ud med id, navn og billedlink
>> 3. sæt startdato = i dag
>> 4.
>> For i = 1 To 15 (fx)
>> datDato = DateAdd("d", i, startdato)
>> If datDato = lørdag eller søndag, eller den er i arrHelligdage
>> ' Do nothing
>> Else
>> - udskriv menuerne med tekst, billede og checkbox
>> End If
>> Next
>
>Dette lyder lidt kryptisk for mig...
<snip>
>Skal have 10 dage hele tiden...
Lidt mere detaljeret kunne det se ud i retning af:
' Sql-streng til at hente helligdage fra i morgen og en måned frem
strSqlFerieFridage = "SELECT FerieFridag" & _
" FROM tblFerieFridag" & _
" WHERE FerieFridag > Date() AND" & _
" FerieFridag < DateAdd('m',1,Date())" & _
" ORDER BY FerieFridag;"
' Træk feriefridagene ud fra db'en til et array:
Set objRsFerieFridage = objConn.Execute(strSqlFerieFridag)
arrFerieFridage = objRsFerieFridage.GetRows
objRsFerieFridage.Close
Set objRsFerieFridage = Nothing
' Hent menuerne på samme måde som du har gjort i dit eget script
' Det må du selv sætte ind.
' - lad os kalde resultatet: objRsMenuer
' Sæt startdato til i dag
datStartDato = Date()
' Start en tæller til udskrevne dage
intAntalUdskrevneDage = 0
' Loop gennem de næste 30 dage undtagen de 10 første
' Tallet skal være stort nok til, at der altid er plads til
' mindst 10 hverdage. Der sker ikke noget ved at sætte det
' ret højt, da loopen slutter, når der er udskrevet 10 dage
For i = 9 To 30
datDato = DateAdd("d", i, datStartDato)
intUgedag = DatePart("w", datDato, 2, 2)
' Hvis det er lørdag eller søndag, skal der ikke ske noget
If intUgeDag = 6 Or intUgeDag = 7 Then
' Do nothing
Else
' Check om datoen er en FerieFridag
blnFerieFridag = False
For j = 0 To Ubound(arrFerieFridage)
If datDato = arrFerieFridage(j) Then
blnFerieFridag = True
Exit For
End If
Next
' Hvis det ikke er en feriefridag udskrives dagens menuer
If Not blnFerieFridag Then
intAntalUdskrevneDage = intAntalUdskrevneDage + 1
' Indsæt selv en udskrift fra dit eget eksempel
' Hvis der er udskrevet 10 dage, går vi ud af loopen
If intAntalUdskrevneDage > 9 Then Exit For
End If
End If
Next
Håber det giver lidt mere mening.
Grunden til at jeg trækker feriefridagene over i et array er dels at
det er mindre ressourcetungt at arbejde med end et RecordSet-objekt,
dels at man så kun behøver at åbne objRsFerieFridage i mget kort tid.
NB: Koden er ikke testet, og jeg har overladt til dig selv at finde ud
af at opdele på kolde og varme menuer ...
>Og så lige til noget helt andet...
>Du skulle vel ikke tilfældigvis have boet i Odense...
Nej, desværre :)
Good luck!
--
Jørn Andersen,
Brønshøj
| |
Ukendt (18-04-2006)
| Kommentar Fra : Ukendt |
Dato : 18-04-06 15:47 |
|
"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:8mc542528vmj75lcj1tlmbq9m3ab49lm4j@4ax.com...
> On Sun, 16 Apr 2006 20:52:04 +0200, "bsn" <bsnsnabelaoncabledotdk>
> wrote:
>
>>> Skal man så kunne vælge alle menuer på alle dage, eller er der
>>> skiftende valgmuligheder?
>>
>>Du skal kunne vælge alle menuer på alle dage...
>
> OK.
>
>>> Hvis der ikke er forudbestemte menuvalg, kunne pseudo-koden se ud som:
>>> 1. Træk de næste 3-4 ugers helligdage ud i et array (arrHelligdage)
>>> med objRs.Getrows
>>> 2. Træk menuerne ud med id, navn og billedlink
>>> 3. sæt startdato = i dag
>>> 4.
>>> For i = 1 To 15 (fx)
>>> datDato = DateAdd("d", i, startdato)
>>> If datDato = lørdag eller søndag, eller den er i arrHelligdage
>>> ' Do nothing
>>> Else
>>> - udskriv menuerne med tekst, billede og checkbox
>>> End If
>>> Next
>>
>>Dette lyder lidt kryptisk for mig...
> <snip>
>>Skal have 10 dage hele tiden...
>
> Lidt mere detaljeret kunne det se ud i retning af:
>
> ' Sql-streng til at hente helligdage fra i morgen og en måned frem
> strSqlFerieFridage = "SELECT FerieFridag" & _
> " FROM tblFerieFridag" & _
> " WHERE FerieFridag > Date() AND" & _
> " FerieFridag < DateAdd('m',1,Date())" & _
> " ORDER BY FerieFridag;"
>
> ' Træk feriefridagene ud fra db'en til et array:
> Set objRsFerieFridage = objConn.Execute(strSqlFerieFridag)
> arrFerieFridage = objRsFerieFridage.GetRows
> objRsFerieFridage.Close
> Set objRsFerieFridage = Nothing
>
> ' Hent menuerne på samme måde som du har gjort i dit eget script
> ' Det må du selv sætte ind.
> ' - lad os kalde resultatet: objRsMenuer
>
> ' Sæt startdato til i dag
> datStartDato = Date()
>
> ' Start en tæller til udskrevne dage
> intAntalUdskrevneDage = 0
>
> ' Loop gennem de næste 30 dage undtagen de 10 første
> ' Tallet skal være stort nok til, at der altid er plads til
> ' mindst 10 hverdage. Der sker ikke noget ved at sætte det
> ' ret højt, da loopen slutter, når der er udskrevet 10 dage
>
> For i = 9 To 30
> datDato = DateAdd("d", i, datStartDato)
> intUgedag = DatePart("w", datDato, 2, 2)
>
> ' Hvis det er lørdag eller søndag, skal der ikke ske noget
> If intUgeDag = 6 Or intUgeDag = 7 Then
> ' Do nothing
> Else
> ' Check om datoen er en FerieFridag
> blnFerieFridag = False
> For j = 0 To Ubound(arrFerieFridage)
> If datDato = arrFerieFridage(j) Then
> blnFerieFridag = True
> Exit For
> End If
> Next
>
> ' Hvis det ikke er en feriefridag udskrives dagens menuer
> If Not blnFerieFridag Then
> intAntalUdskrevneDage = intAntalUdskrevneDage + 1
> ' Indsæt selv en udskrift fra dit eget eksempel
>
> ' Hvis der er udskrevet 10 dage, går vi ud af loopen
> If intAntalUdskrevneDage > 9 Then Exit For
> End If
> End If
> Next
>
>
> Håber det giver lidt mere mening.
>
> Grunden til at jeg trækker feriefridagene over i et array er dels at
> det er mindre ressourcetungt at arbejde med end et RecordSet-objekt,
> dels at man så kun behøver at åbne objRsFerieFridage i mget kort tid.
>
> NB: Koden er ikke testet, og jeg har overladt til dig selv at finde ud
> af at opdele på kolde og varme menuer ...
Tak for din udredning - jeg kigger på det senere - du hører om resultatet...
Bjarne
| |
Ukendt (19-04-2006)
| Kommentar Fra : Ukendt |
Dato : 19-04-06 20:42 |
|
"Jørn Andersen" <jorn@jorna.dk> skrev
> ' Loop gennem de næste 30 dage undtagen de 10 første
> ' Tallet skal være stort nok til, at der altid er plads til
> ' mindst 10 hverdage. Der sker ikke noget ved at sætte det
> ' ret højt, da loopen slutter, når der er udskrevet 10 dage
>
> For i = 9 To 30
> datDato = DateAdd("d", i, datStartDato)
> intUgedag = DatePart("w", datDato, 2, 2)
>
> ' Hvis det er lørdag eller søndag, skal der ikke ske noget
> If intUgeDag = 6 Or intUgeDag = 7 Then
> ' Do nothing
> Else
> ' Check om datoen er en FerieFridag
> blnFerieFridag = False
> For j = 0 To Ubound(arrFerieFridage)
> If datDato = arrFerieFridage(j) Then
> blnFerieFridag = True
> Exit For
> End If
> Next
Det giver denne fejl:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A0009)
Indekset er uden for området: 'arrFerieFridage'
/hhc/public_html/medlem/menu.asp, line 93
> Håber det giver lidt mere mening.
Lidt, jeg er ikke så stiv, når det gælder arrays
> Grunden til at jeg trækker feriefridagene over i et array er dels at
> det er mindre ressourcetungt at arbejde med end et RecordSet-objekt,
> dels at man så kun behøver at åbne objRsFerieFridage i mget kort tid.
>
> NB: Koden er ikke testet, og jeg har overladt til dig selv at finde ud
> af at opdele på kolde og varme menuer ...
Der har kun været lidt tilretning...
Bjarne
| |
Christian M. Nielsen (19-04-2006)
| Kommentar Fra : Christian M. Nielsen |
Dato : 19-04-06 21:08 |
|
"bsn" <bsnsnabelaoncabledotdk> skrev i en meddelelse
news:4446929e$0$157$edfadb0f@dread11.news.tele.dk...
> Det giver denne fejl:
> Der opstod en Microsoft VBScript-kørselsfejl (0x800A0009)
> Indekset er uden for området: 'arrFerieFridage'
> /hhc/public_html/medlem/menu.asp, line 93
Hvad står der i linie 93?
http://www.asp-faq.dk/article/?id=41
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.
| |
Ukendt (19-04-2006)
| Kommentar Fra : Ukendt |
Dato : 19-04-06 22:58 |
|
"Christian M. Nielsen" <look.for.it@my.webpage> skrev
>> Det giver denne fejl:
>> Der opstod en Microsoft VBScript-kørselsfejl (0x800A0009)
>> Indekset er uden for området: 'arrFerieFridage'
>> /hhc/public_html/medlem/menu.asp, line 93
>
>
> Hvad står der i linie 93?
For j = 0 To Ubound(arrFerieFridage)
Response.Write "j= " & j
If datDato = arrFerieFridage(j) Then <----- Linie 93
blnFerieFridag = True
Exit For
End If
Next
Bjarne
| |
Lars Hoffmann (11-04-2006)
| Kommentar Fra : Lars Hoffmann |
Dato : 11-04-06 12:02 |
|
bsn wrote:
> Hej NG
>
> Jeg bruger en access 2003 db.
>
> Jeg skal lave en IF sætning, med kriterie(dagsdato) på fradato og tildato...
>
> Har prøvet mange forskellige konstallationer...
> DateSerial, Year-Month-Day, FormatDateTime
Et godt råd, omend ikke noget videre konkret Datoer skal behandles som
datoer. Folk får problemer med datoer når de behandler dem som
tekststrenge der sammensættes af dage, måneder og år. Hvis du først
vænner dig til _altid_ at bruge dato funktioner til at manipulere
datoer er det slet ikke svært at arbejde med datoer.
Med funktioner som dateadd og datediff kan de fleste af den slags if
sætninger gejles.
Med venlig hilsen
Lars Hoffmann
| |
Ukendt (11-04-2006)
| Kommentar Fra : Ukendt |
Dato : 11-04-06 15:04 |
|
"Lars Hoffmann" <lars@intercambiodvd.com> skrev
Et godt råd, omend ikke noget videre konkret Datoer skal behandles som
datoer. Folk får problemer med datoer når de behandler dem som
tekststrenge der sammensættes af dage, måneder og år. Hvis du først
vænner dig til _altid_ at bruge dato funktioner til at manipulere
datoer er det slet ikke svært at arbejde med datoer.
Med funktioner som dateadd og datediff kan de fleste af den slags if
sætninger gejles.
Tak for rådet - det er vist også det jeg er nået frem til...
og God Påske...
Bjarne
| |
|
|