Avatar billede Slettet bruger
08. november 2008 - 18:11 Der er 5 kommentarer og
1 løsning

Dobbelt-betingelse i Do While...Loop

Hej alle eksperter


I ASP kan man gennemløbe dataene i en tabel i en database ved fx følgende kommando:

<% DO WHILE NOT objRS.EOF

...

objRS.MoveNext
LOOP %>

Her gennemløbes dataene så længe vi ikke er nået til EOF.
Men er det muligt at lave en dobbelt-betingelse? Jeg vil nemlig have gennemløbet alle de rækker, der har et bestemt nr., men det er selvfølgelig stadig nødvendigt at tjekke, at vi ikke er nået EOF endnu. Altså, noget i stil med følgende:

<% DO WHILE NOT objRS.EOF AND objRS("nr")=2

...

objRS.MoveNext
LOOP %>

Hvordan laves en sådan dobbelt-betingelse?
På forhånd tak.


    // Steeven
Avatar billede w13 Novice
08. november 2008 - 18:18 #1
Man laver "dobbelte betingelser" med AND, ligesom du har gjort.

Men med din kode opstår der vist et problem, når objRS.EOF er True. Dvs. når der ikke er noget i databasen, kan objRS("nr") jo heller ikke tjekkes, og det vil give fejl.

Jeg ville løse det således:

<%
If Not objRS.EOF Then
  iNr = objRS("nr")
Else
  iNr = 0
End If

DO WHILE NOT objRS.EOF AND iNr=2

For så _har_ vi først tjekket, om man kan gå ind og aflæse objRS("nr").

Det burde fungere.
Avatar billede w13 Novice
08. november 2008 - 18:19 #2
If Not objRS.EOF Then
  iNr = objRS("nr")
Else
  iNr = 0
End If

kan selvfølgelig også skrives:

iNr = 0
If Not objRS.EOF Then
  iNr = objRS("nr")
End If

eller:

iNr = 0
If Not objRS.EOF Then iNr = objRS("nr")

eller:

If Not objRS.EOF Then iNr = objRS("nr") Else iNr = 0

efter ønske. :)
Avatar billede w13 Novice
08. november 2008 - 18:23 #3
Alternativt kan det hele også gøres sådan her:

DO WHILE NOT objRS.EOF
  If objRS("nr") <> 2 Then Exit Do

  ...

  objRS.MoveNext
Loop

Så køres "Exit Do", når objRS("nr") ikke er 2, og derved forlades løkken.
Avatar billede w13 Novice
08. november 2008 - 18:24 #4
Det er lidt smag og behag, hvilken metode, man bør vælge. =)
Avatar billede Slettet bruger
08. november 2008 - 18:48 #5
Perfect! Mange, mange tak for det hurtige svar.

  // Steeven
Avatar billede w13 Novice
08. november 2008 - 18:54 #6
Tak for points! :)
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