wisselende querie in formulier

Status
Niet open voor verdere reacties.

mdegeest

Gebruiker
Lid geworden
10 aug 2011
Berichten
76
Om gegevens op te zoeken en te tonen op een formulier heb ik 2 mogelijkheden om de data op te zoeken.
Op 1 input formulier kan men ofwel een barcode ingeven ofwel een ordernummer (indien de barcode niet gekend is).
Hiervoor gebruik ik 2 verschillende queries om de gegevens in de tabel op te zoeken.
De gevonden data wordt daarna getoond op een overzichtsformulier.
Omdat de data idem is wil ik 1 formulier om de data te tonen gebruiken.
Dus, als ik zoek via barcode --> open formulier x --> record source = querie via barcode.
dan, als ik zoek via ordernr --> open formulier x (zelfde formulier als hiervoor) --> maar met record source = querie via ordernummer

Volgens de informatie die ik reeds gevonden heb op internet is dit een soort wisselende recordbron op een formulier.
Kan er mij iemand zeggen of dit inderdaad mogelijk is en hoe ik dit moet ingeven in access.
 
Ik snap je werkwijze niet helemaal; zo'n gescande barcode moet toch hetzelfde opleveren als een getypt ordernummer? Anders gezegd: je scant toch op basis van het sleutelveld van je formulier?
 
Misschien heb ik het niet zo goed uitgelegd :

Er moet opgezocht worden in een tabel waarin orders zitten.
Die hebben een barcode en een ordernummer.
De barcode is niet hetzelfde als het ordernummer.
Wanneer nu de barcode ontbreekt in de tabel dan zoeken we het order op via het ordernummer.
Dus in eerste geval hebben we een querie met zoekveld via barcode.
In tweede geval is het een andere querie met zoekveld via het ingetypte ordernummer omdat er geen barcode ingevuld staat in de tabel.
Maar de resultaten van beiden geeft dezelfde veld en daarom zouden we hetzelfde formulier moeten kunnen gebruiken voor de 2 mogelijkheden.
 
Dan snap ik nog steeds je probleem/werkwijze niet.
Op 1 input formulier kan men ofwel een barcode ingeven ofwel een ordernummer (indien de barcode niet gekend is).
De gevonden data wordt daarna getoond op een overzichtsformulier.
Ik neem aan, dat je Ordernummer dan je sleutelveld is, aangezien de barcode niet altijd wordt ingevuld en dus nooit een sleutelveld kan zijn.
Wanneer nu de barcode ontbreekt in de tabel dan zoeken we het order op via het ordernummer.
Je hebt dus een invulveld waarin je de barcode zet met je scanner, zal vast een tekstveld zijn, en een keuzelijst (met invoervak) waarin je handmatig een ordernummer opzoekt. Het resultaat van beide handelingen zou dan zo moeten zijn:
1. Je hebt het veld Barcode gescand; dan weet je op basis van de barcode dus automatisch ook het ordernummer. Dat is immers hetzelfde record. Dat kun je dus simpel ophalen en in de keuzelijst invullen.
2. Je hebt het ordernummer opgezocht via de keuzelijst en weet dus niet of er een barcode is, noch welke barcode. Maakt ook niet uit: het gaat om het ordernummer.

In beide situaties kun je dus het ordernummer terugzien op je formulier. En dat verklaart dus waarom ik je vraag niet begrijp, want het openen van het overzichtsformulier doe je op basis van het Ordernummer. Ergo: dat formulier kan gewoon één recordbron hebben!
Andere oplossing: wil je toch vasthouden aan je huidige zoekformulier (ik vermoed namelijk dat je nu het ordernummer niet opzoekt a.d.h.v. de scan) dan kun je het overzichtsformulier gewoon openen met een ander filter in de opdracht. Dat werkt dan zo:
Code:
If Me.Barcode <> "" Then
    DoCmd.OpenForm "Overzichtformulier", , , "[Barcode] =""" & Me.Barcode & """"
ElseIf Me.Barcode = "" And Me.Me.Ordernummer <> "" Then
    DoCmd.OpenForm "Overzichtformulier", , , "[Ordernummer] =" & Me.Ordernummer
End If
In je formulier zet je dan in ieder geval zowel het barcodeveld als het Ordernummer, want anders werkt het natuurlijk niet.

Vind je dit niet acceptabel, gebruik dan nog steeds één formulier met één vaste query, maar verander vanuit je zoekformulier de SQL van die query m.b.v. de Querydefs collectie. Dat is vele malen handiger dan m.b.v. VBA elke keer maar weer de Recordsource van je formulier aanpassen. Dat kan overigens wel, maar waarom zou je als er zoveel betere alternatieven zijn?
 
Ja, nu begrijp ik het.
Stom dat ik hieraan niet gedacht heb.
Ik sprong na input van de barcode naar het volgende scherm zonder mijn ordernummer.
Dit is natuurlijk veel eenvoudiger.
Bedankt voor de tip en hulp.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan