Access Vba Docmd.Openform

Status
Niet open voor verdere reacties.

woltersgert

Gebruiker
Lid geworden
15 mei 2001
Berichten
47
Op het formulier zit een knop met de onderstaande Vba code:

Sub
Dim Voorwaarde
Voorwaarde = "OrderID = [Welke_Order]"

Dim ResultaatVoorwaarde

DoCmd.OpenForm "frmTest", , , Voorwaarde, , , ResultaatVoorwaarde

End Sub

Bij het uitvoeren van deze code, wordt er gevraagd om een Order nummer via de variabele Voorwaarde. Indien de gebruiker niets/onzin invult, wordt het formulier frmTest geopend en kan de gebruiker een nieuw record invoeren.
Dit wil ik niet en mag ook niet. Ik wil graag de waarde opvragen die de gebruiker heeft ingevoerd, en meegeven aan het argument OpenArgs van de methode Docmd.Openform.

Dit lukt mij niet. Hoe kan ik dit regelen, of moet ik een andere methodiek gaan gebruiken.
 
Je gebruikt een hele onhandige constructie. Ik gebruik parametervelden eigenlijk alleen in queries, en zelfs dat probeer ik zoveel mogelijk te vermijden. En al helemaal als je de gebeurtenis via een formulier aftrapt. Waarom vraag je de inhoud niet op het formulier zelf uit middels een tekstvak? Of, aangezien het om ordernummers gaat, niet via een keuzelijst met invoervak? Dat laatste geeft de gebruiker het grootste gebruikersgemak, en voorkomt dat er oneigenlijke (foute) waarden worden ingevuld.
Kortom: normaal gesproken laat je de gebruiker iets doen op het formulier, en is de vervolgactie het starten van het formulier met de gegevens die je hebt laten invullen/kiezen.

Komen we bij het volgende punt: je declaraties zijn slecht (lees: niet) gedeclareerd. Geef altijd een type op als je declaraties maakt. De eerste kan ik nog wel thuisbrengen (dat is een String) maar wat is ResultaatVoorwaarde? Sowieso wordt hij nergens mee gevuld, dus het heeft ook geen zin om hem mee te geven als argument.
Daarnaast wordt de voorwaarde pas gevraagd bij het openen van het formulier. OpenArgs heeft dan al een waard, want die wordt bij het uitvoeren van DoCmd meegegeven. En is dus leeg als de Voorwaard gevraagd wordt.
Conclusie: niet doen zo! Bedenk eerst wat je precies mee wilt geven met je formulier. Als dat een niet-bestaande waarde is uit een keuzelijst (je voert een niet-bestaand orderid in) dan wordt de gebeurtenis <Bij niet in lijst> getriggerd, en dat is dan exact de gebeurtenis is die je nodig hebt om het formulier te openen met de OpenArgs, die dan wél gevuld is. Bij een bestaande orderid open je het formulier met het filter.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan