formulier gegeven meenemen naar een ander formulier

Status
Niet open voor verdere reacties.

jamez99

Gebruiker
Lid geworden
13 mrt 2009
Berichten
8
Hoi..

ik heb een formulier CLIENT, en een knop erin met VRAAG/KLACHT toevoegen..
wanneer ik op de knop klik, wil ik dat clientnummer automatish wordt ingevuld in de volgende formulier dus formulier Klacht toevoegen"

wat ik nu heb is het volgende:

DoCmd.OpenForm "klachten van client", , , _
"client_id=" & Me.client_ID

Nu gaat die wel naar de juiste klant, dus als hij al is een vraag heeft gesteld krijg ik de juiste gegevens te zien, maar als ik klik op nieuw vraag toevoegen, neemt hij de clientnummer niet mee.. nu moet dus telkens zijn client nr op papier schrijven en in het volgende scherm zelf invullen..
 
De methode die je gebruikt is prima om een formulier te openen op basis van een selectie uit een ander formulier, maar zoals je al gemerkt hebt, houdt het daar wel zo'n beetje bij op. Wat je kunt doen om gegevens mee te nemen naar het tweede formulier, is het formulier openen met de optie OpenArgs. Dat werkt als volgt:
Achter de formuliernaam typ je netzoveel komma's tot je bij de optie OpenArgs bent.
Daar typ je vervolgens de variabele(n) die je mee wilt nemen naar het nieuwe formulier. In mijn voorbeeld wil ik twee variabelen meenemen, sFormBron en sFormDoel. Ik kan die niet zomaar achter elkaar zetten, want er kan maar één string worden meegenomen. Daarom gebruik ik het pipeline teken '|' om de variabelen te scheiden. Op het subformulier wordt e.e.a. weer uit elkaar getrokken.

Code:
sFormBron = Me.Form.Name
sFormDoel = "frmLijst"
DoCmd.OpenForm "frmWeekLijst", , , , , acDialog, sFormBron & "|" & sFormDoel

Op het formulier frmWeekLijst dat in het voorbeeld wordt geopend, maak je een matrixvariabele; in het voorbeeld: strLijst(). Vervolgens wordt met het commando Split de inhoud van het argument OpenArgs toegewezen aan de variabele strLijst.
Daarna kun je de variabele toewijzen aan elementen op het tweede formulier.

Code:
Private Sub Form_Load()
Dim strLijst() As String
On Error Resume Next
strLijst = Split(Me.OpenArgs, "|", -1)
Me.txtFormulierBron = strLijst(0)
Me.txtFormulierDoel = strLijst(1)

Hopelijk kom je hier wat verder mee? Eventueel kan ik nog wel een voorbeeldje voor je maken op dit principe.

Michel
 
De methode die je gebruikt is prima om een formulier te openen op basis van een selectie uit een ander formulier, maar zoals je al gemerkt hebt, houdt het daar wel zo'n beetje bij op. Wat je kunt doen om gegevens mee te nemen naar het tweede formulier, is het formulier openen met de optie OpenArgs. Dat werkt als volgt:
Achter de formuliernaam typ je netzoveel komma's tot je bij de optie OpenArgs bent.
Daar typ je vervolgens de variabele(n) die je mee wilt nemen naar het nieuwe formulier. In mijn voorbeeld wil ik twee variabelen meenemen, sFormBron en sFormDoel. Ik kan die niet zomaar achter elkaar zetten, want er kan maar één string worden meegenomen. Daarom gebruik ik het pipeline teken '|' om de variabelen te scheiden. Op het subformulier wordt e.e.a. weer uit elkaar getrokken.

Code:
sFormBron = Me.Form.Name
sFormDoel = "frmLijst"
DoCmd.OpenForm "frmWeekLijst", , , , , acDialog, sFormBron & "|" & sFormDoel

Op het formulier frmWeekLijst dat in het voorbeeld wordt geopend, maak je een matrixvariabele; in het voorbeeld: strLijst(). Vervolgens wordt met het commando Split de inhoud van het argument OpenArgs toegewezen aan de variabele strLijst.
Daarna kun je de variabele toewijzen aan elementen op het tweede formulier.

Code:
Private Sub Form_Load()
Dim strLijst() As String
On Error Resume Next
strLijst = Split(Me.OpenArgs, "|", -1)
Me.txtFormulierBron = strLijst(0)
Me.txtFormulierDoel = strLijst(1)

Hopelijk kom je hier wat verder mee? Eventueel kan ik nog wel een voorbeeldje voor je maken op dit principe.

Michel


hey Michel

bedankt voor je uitgebreide toelichting,, alleen het is mij niet gelukt... zou je misschien een voorbeeld kunnen en willen maken aub..effe voor alle duidelijkheid het gaat niet om een sub formulier.... thanks..
 
Een voorbeeld is uiteraard altijd makkelijker.... Hier heb ik een (Engelse) voorbeelddb; je moet dan kijken naar het OnNotInList (Bij Niet In Lijst) Event van de keuzelijst <cboHomePlayerID> op het formulier <sfrmHomePlayers>. Dat opent het formulier <frmPlayers> dat de gegevens overneemt uit <sfrmHomePlayers> bij het OnLoad event.
Om te zien hoe het werkt, moet je een speler intypen die niet in de lijst staat; dan gaat het circus werken....

Mocht je daar niet uitkomen, dan hoor ik dat wel weer! Ik heb zelf ook nog wel een voorbeeldje liggen, maar niet helemaal pasklaar, vandaar deze!

Michel
 

Bijlagen

hoi octavish,

bedankt voor je uitleg en bijlage..

ik heb geprobeerd om met jou uitleg en vb het op te lossen alleen dat was lastig :p

ik heb het op m`n oude eigen manier gedaan, de code die ik in het begin had gepast... hij deed het gewoon.. alleen ikmoet eerst wat intikken voordat access de klantnnummer automatish invult

bedankt nogmaals!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan