Ga naar inhoud

SQL-query en Array's


Aanbevolen berichten

Hoi, Ik heb een formulier. In dit formulier kun je een rapport uitdraaien. Voor elk rapport kun je een tijdsperiode kiezen. Daarnaast kun je aangeven welke dagen in die periode je wilt hebben. Dus bijvoorbeeld ik kies de periode 1 jan - 1 maart, en vervolgens kies ik voor dinsdag. Dus wat ik uit de database wil hebben. Zijn alle data van dinsdagen in die periode. Ik ben al een heel eind. Zie de volgende code. [code:1:eb389dd221] If IsArray(arPeriode) Then For teller4 = 0 TO UBound(arPeriode) If teller4 = 0 AND strDag <> "" Then SQL_main = "SELECT * FROM TABEL WHERE " End If If trim(WeekDay(arPeriode(teller4))) = strDag Then SQL_main = SQL_main & "datum = #" & arPeriode(teller4) & "#" End If If teller4 < UBound(arPeriode) AND trim(WeekDay(arPeriode(teller4))) = strDag Then SQL_main = SQL_main & " OR " End If Next End If[/code:1:eb389dd221] In "arPeriode" zitten de datums van de periode (dus 1 jan - 1 maart). In "strDag" zit de dag van de week (bijv. zondag = 1). Met de functie WeekDay kijk ik of de juiste dag in die periode zit.. Maar ok, dan nu mijn probleem. Ik krijg op deze manier een ongeldige SQL query. Hij ziet er momenteel als volgt uit die query..: SELECT * FROM TABEL WHERE datum = #07/01/2003# OR datum = #7/8/2003# OR datum = #7/15/2003# OR datum = #7/22/2003# OR datum = #7/29/2003# OR Hij geeft dus 1 "OR" aan het einde teveel. Ik zit nu al veel te lang hierop te staren. Weten jullie welke waarschijnlijk domme fout ik maak? :-? Alvast bedankt voor jullie hulp!! [/code]
Link naar reactie
Een truukje wat vaak gebruikt wordt bij het samenstellen van een WHERE clause is om telkens " OR [i:fe88c06c90]<condition>[/i:fe88c06c90]" toe te voegen aan je query. Om een geldig statement te krijgen hoef je deze alleen maar te laten starten met een conditie die altijd waar is (bijv 1=1). Voorbeeld [code:1:fe88c06c90] sQuery = "SELECT * FROM Tabel WHERE 1=1" While bTestje sQuery = sQuery & " OR dit=dat" ' blabla Wend [/code:1:fe88c06c90] Maar even iets anders. Volgens mij kan wat je wil veel makkelijker. Als ik je goed begrijp wil je alle records waarvoor geldt dat deze in een bepaalde periode ligt en waarvan de dag gelijk is aan een gekozen dag. In dat geval kan je namelijk zoiets doen: [code:1:fe88c06c90] SELECT * FROM Tabel WHERE datum BETWEEN #startdatum# AND #einddatum# AND WeekDay(datum) = dagwaarde [/code:1:fe88c06c90]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...