Meerdere variable tonen in form met wizard opzoeken

Status
Niet open voor verdere reacties.

bamisalami

Gebruiker
Lid geworden
16 dec 2008
Berichten
17
Het probleem is heel simpel:
Ik heb twee tabelen.
1. Personeelsgegevens
2. voertuiggegevens

Nu heb ik in de tabel personeelgegevens en veld KENTEKEN, d.m.v. wizard opzoeken kan ik nu heel simpel uit de tabel voertuiggevens een kenteken opzoeken.
Dit werkt perfect.

Nu wil ik echter in het formulier Personeelsgegevens niet enkel het kenteken tonen maar ook het merk en type.

Hoe doe ik dit???

Ik heb het als volgt voor elkaar gekregen maar het werk niet naar wens.

Ik maak twee formuliervelden aan frmMerk en frmType.
Ik plaats bij verlaten formulierveld frmkenten een gebeurtenis
met de volgende code:
Code:
frmMerk = DLookup("Merk", "Bedrijfsauto's", "Kenteken=frmKenteken")
frmType = DLookup("Type", "Bedrijfsauto's", "Kenteken=frmKenteken")

Dit werkt natuurlijk perfect als ik het veld kenteken verlaat maar als ik naar een nieuw record ga moet ik eerst het kenteken aanklikken alvorens dit bijgewerkt wordt.

Dit moet simpeler kunnen maar hoe toon ik de overige velden op een formulier (ze worden nooit bewerkt)
 
FormCurrent()

Als je dit per record wilt moet je volgens mij gebruik maken van "Bij aanwijzen" oftewel FormCurrent().

Met Me.tekstvakMerk.Text vul je de waarde in een tekstbox.
tekstvakMerk vervangen met de werkelijke naam van de tekstbox.
De 2 tekstboxen kun je gewoon niet-afhankelijk toevoegen.

Ik doe dit uit mn blote hoofd, maar ik denk dat dit voldoende moet zijn:

Private Sub Form_Current()

frmMerk = DLookup("Merk", "Bedrijfsauto's", "Kenteken=frmKenteken")
frmType = DLookup("Type", "Bedrijfsauto's", "Kenteken=frmKenteken")

' voor de zekerheid een setfocus.
Me.tekstvakMerk.SetFocus
Me.tekstvakMerk.Text = frmMerk

Me.tekstvakType.SetFocus
Me.tekstvakType.Text = frmType

End Sub
 
Ik zou zelf maar één zoekfunctie gebruiken, en die heb je al gemaakt op de keuzelijst Kenteken.
Er van uitgaande dat je de keuzelijst hebt gemaakt op de tabel "bedrijfsautos", zou ik het volgende doen:

1. Pas, als dat nog nodig is, de Rijbron van de keuzelijst Kenteken zodanig aan, dat je behalve het kenteken ook het merk en het type in de query krijgt.
2. Pas bij de Eigenschapen van de keuzelijst het aantal kolommen aan, zodat je alle velden ook daadwerkelijk in de keuzelijst terugziet.

De Rijbron van de keuzelijst Kenteken wordt dan iets als:

Code:
SELECT Auto_ID, Kenteken, Merk, Type FROM Bedrijfsautos ORDER BY [Kenteken];

Op de gebeurtenis <Na bijwerken> van de keuzelijst zet je dan onderstaande code:

Code:
Private Sub cboKenteken_AfterUpdate()

    Me.txtMerk.Value = Me.cboKenteken.Column(2)
    Me.txtType.Value = Me.cboKenteken.Column(3)
    
End Sub

En dat is alles! Wat je hiermee doet, is dus de reeds bekende waarden uit de keuzelijst kolommen halen, en gelijk op de tekstvakken zetten.
Niet alleen veel gemakkelijker dan de DLookup, het is ook veel sneller, want D-functies als DLookup en DMax zijn berucht om hun (gebrek aan) snelheid...

Michel
 
Kijk dit was de oplossing welke ik zocht.
Bedankt.
De drie kollomen zijn nl. al zichtbaar als ik het kenteken invoer.
 
Prima! Houd er wel rekening mee dat Access de kolommen begint te tellen bij 0, dus kolom 1 =Column(0), kolom 2=Column(1) en zo verder.

Michel
 
Het werkt 100%, enkel als ik nu voor of achteruit blader komen de autogegevens van de laatste Focus tevoorschijn.

Code:
Private Sub stamkaart_current()

hier een focus op zetten werkt niet.

end sub

Iemand nog een idee?
 
opgelost:
Heel simpel in het tekstvak Merk of type als besturingsbron hetvolgende zetten:
=[Kenteken].[Column](1) / (2)

Dat is alles.
Allen bedankt voor de hulp.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan