Query vraagt onnodig drie keer datuminput op

  • Onderwerp starter Onderwerp starter OBADE
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

OBADE

Gebruiker
Lid geworden
9 feb 2016
Berichten
95
Hallo,

Dit zal vast weer een ongelofelijke newbe vraag zijn. maar dat is dan maar niet anders. Prettig voor mij: als ik hier een (voor mij) begrijpelijk antwoord krijg dan zal dat voor mij waarschijnlijk een enorme Aha-erlebnis zijn. En basis om meerdere queries te stroomlijnen.
Maar goed, terug naar de vraag. In mijn applicatie heb ik de bijgevoegde query. Zoals is te zien worden er drie criteria-inputs gevraagd: een begindatum, een einddatum en een string.querieplaatje.jpg
Het bizarre is alleen dat bij het uitvoeren van de query hij wel drie keer om de begindatum en einddatum vraagt. met andere woorden: hij herhaalt twee keer het criterium bij veld Schadedatum.
Ik heb een beetje gefröbeld en ben er wel achter dat als je de tabel "Objecten" (en daarmee natuurlijk ook het string-criterium bij "Object") uit de query haalt dat dan wel gewoon netjes één keer om het criterium bij "schadedatum" wordt gevraagd.

Dus het heeft iets te maken met de interactie tussen die beide tabellen in deze query. Hoewel het niet heel ernstig is vind ik het wel bijzonder slordig en storend.

Wie kan me uitleggen hoe ik dit kan verhelpen?


Met vriendelijke groet,
OBADE.
 
Zoals is te zien worden er drie criteria-inputs gevraagd: een begindatum, een einddatum en een string.
Ik zie maar één parameter voor input, en 2 functies waarvan één ook nog eens identiek is aan een veldnaam in een tabel. Dat het überhaupt werkt, verbaast mij dus hogelijk! Wat is dan het correcte criterium? De LIKE parameter is goed. Daar heb je een tekstvraag staan tussen rechte haken, en dat is dus de juiste syntax voor een inputbox. [Voer deel van een objectnaam in:] is eigenlijk een tijdelijk veld, waarvan Access niet weet wat het is (want het bestaat niet). En daarom krijg je dus die vraag te zien. Voor je datums gebruik je nu BeginDatum() en Einddatum(). Dat is dus 2 keer de aanroep van een eigen functie. Zou natuurlijk kunnen, dat je daar een aparte functie voor gemaakt hebt, dat kan ik hier vandaan niet zien. De vraag is dan wel weer waarom je dat zou doen; veel nut zie ik daar niet in. Een selectiequery met datums werkt veel beter als je die datumparameters vastlegt als Datum/Tijd objecten. Dan krijg je sowieso de vraag maar één keer, en niet voor elk record (want dat is vermoedelijk jouw probleem) dat in de dynaset zit. Voorbeeldje:
Code:
PARAMETERS BeginDatum DateTime, EindDatum DateTime;
SELECT persoon_id, aanmelddatum, voornaam, tussenvoegsel, achternaam, straat, huisnummer, buurt, wijk, woonplaats
FROM tPersonen WHERE (aanmelddatum Between [BeginDatum] And [EindDatum]);
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan