MovePrevious geeft error in do while

Status
Niet open voor verdere reacties.

leifoet

Gebruiker
Lid geworden
7 okt 2007
Berichten
326
Met onderstaande code probeer ik uit een gebeurtenissenlijst die gebeurtenis (veld Actdatum) te selecteren die (in de toekomst) het dichtst bij 'vandaag' ligt.
Dus als de gebeurtenis op vandaag doorgaat dan wordt deze geselecteerd, anders de eerstvolgende uit de lijst (waarvan de Actdatum het dichtst bij 'vandaag' ligt).

<%
Do While Not rs.EOF
if rs("ActDatum")<date() then
rs.MoveNext
if rs("ActDatum")=date() then
selectiedatum=rs("ActDatum")
exit do
elseif rs("ActDatum")>date() then
movePrevious
selectiedatum=rs("ActDatum")
exit do
else
end if
end if
Loop
%>

MovePrevious geeft fout - Dank voor een oplossing.
 
Was inderdaad de rs vergeten.
Toch nog deze error :
ADODB.Recordset error '800a0c93'
Operation is not allowed in this context.
Tips ?
 
Probeer dit eens:
Code:
<%
[COLOR="#FF0000"]rs.cursortype = 1[/COLOR]
Do While Not rs.EOF
if rs("ActDatum")<date() then
rs.MoveNext
if rs("ActDatum")=date() then
selectiedatum=rs("ActDatum")
exit do
elseif rs("ActDatum")>date() then
rs.movePrevious
selectiedatum=rs("ActDatum")
exit do
else
end if
end if
Loop
%>
 
Laatst bewerkt:
Werkt nu zonder error - Thanks.
Do while … geeft evenwel nog niet het gewenst resultaat (=selectie) als de gebeurtenis op date() valt.
Tenzij ik bruikbare tips lees, zoek ik verder.
 
Ik reageerde op je error. Verder kan ik je er helaas niet bij helpen.
 
Volgens mij kan het veel simpeler:

Code:
rs.cursortype = 1
If Nor rs.EOF = rs.BOF
     Do Until rs("ActDatum")>date() 
        selectiedatum=rs("ActDatum")
        rs.MoveNext
     Loop
End If
Daarbij ga ik er voor het gemak maar even van uit dat je query de datums oplopend sorteert, anders werkt dit natuurlijk nooit.
 
Na aanpassing 2de regel als : If Not rs.EOF = rs.BOF then
(en een paar foute probeersels) heb ik nog niet het gewenst resultaat.
Bijvoorbeeld als de Actdatum gelijk is aan date() wordt de allereerste Actdatum (= de oudste datum/gebeurtenis) van de lijst wordt geselecteerd in plaats van de gebeurtenis op 'vandaag'.
Actdatum gesorteerd als volgt : ORDER BY ActDatum ASC

Dank voor tips.
 
Laatst bewerkt:
De beste tip is natuurlijk (met nog excuses voor de rs.EOF fout) om de bron zodanig te maken dat je helemaal niks hoeft te doen. Oftewel: gebruik een query die alleen de datums laat zien die voldoen aan de eis (>= Date) en gebruik TOP 1 om de eerste kandidaat te filteren. Dan heb je geen loop nodig, want je hebt dan maar 1 resultaat.
 
Een query die leidt tot 1 resultaat zou een optie kunnen zijn.
De bedoeling is evenwel : 1 resultaat visueel te selecteren (=licht op in de lijst in het selectievenster) - maar de gebruiker heeft toch nog de mogelijkheid om een andere keuze (gebeurtenis) te selecteren.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan