Nogmaals Keuzerondjes

Status
Niet open voor verdere reacties.

wivoe

Gebruiker
Lid geworden
25 mrt 2008
Berichten
146
Beste mensen,

Met enige schroom plaats ik, als nieuw lid, een bericht op Helpmij
mede omdat er al diverse malen het onderwerp Keuzerondjes is
behandeld. Ik heb uiteraard vele posting, betreffende de Keuzerondjes
in Helpmij doorlopen, maar ik kom er desondanks niet uit.
In het kort: in een formulier frmKlanten plaats ik in een groepsvak Kader3
twee Keuzerondjes6 en 8, die als bijschrift krijgen Man en Vrouw.
Die teksten, Man en Vrouw, moeten naar een tabel tblKlanten in het
Veld Geslacht weggeschreven worden i.p.v. de 1 en 2 nu.
De code die ik hiervoor gebruikte, zonder resultaat dus, was:

Code:
Private Sub Kader3_AfterUpdate()    
If forms!frmKlanten!Keuzerondje6 = 1 Then
    Table!tblKlanten!Geslacht = "Man" 
End If

If forms!frmKlanten!Keuzerondje8 = 2 Then
    Table!tblKlanten!Geslacht = "Vrouw" 
End If
End Sub
Bedankt alvast voor het meekijken,

Wivoe
 
Laatst bewerkt door een moderator:
kan je de database ergens uploaden zodat we ernaar kunnen kijke?
 
Allereerst uiteraard welkom op het forum! Enige schroom is voor het stellen van een vraag uiteraard niet nodig; zonder vragen wordt het wel een heel saai forum ;)

Je vraag is relatief makkelijk op te lossen. Eerst even een tip: als je VBA code post, dan graag in de Code tag opmaken (knop met #) zodat de code beter leesbaar is. En dan nu de oplossing:
Je kunt het beste de waarde van het Optievak uitlezen, en niet de losse optieknoppen. In het voorbeeld heb ik de naam van het optievak ook aangepast (tip 2), want als je veel objecten op een formulier hebt, wil je in de code uiteraard makkelijk kunnen zien welke code je aan het bewerken bent. Dat geldt uiteraard ook voor je tekstvakken etc...

Code:
Private Sub fraGeslacht_AfterUpdate()
Select Case Me.fraGeslacht
    Case 1
        Me.Geslacht = "Man"
    Case 2
        Me.Geslacht = "Vrouw"
    Case Else
        Me.Geslacht = "N.b."
End Select
End Sub

Zoals je ziet, werkt de code met een Select Case. Hierbij bepaal je voor elke mogelijke waarde wat er moet gebeuren. Je ziet waarschijnlijk ook, dat er iets wordt ingevuld op het formulier, en niet in de tabel. En dat hoort ook zo, omdat je formulier immers is gebaseerd op de tabel. Regel: op een formulier verwijs je (bijna) altijd naar objecten van het formulier!
 
Heren, hartelijk dank voor de tips en mogelijke oplossing.
Zal m'n programma aanpassen en de resultaten laten weten.
Dat van die # knop wist ik niet, het is inderdaad duidelijker.

Bedankt, Wivoe
 
Beste mensen,

Ik ben eruit dankzij jullie inbreng.
Dit onderwerp kan wat mij betreft gesloten worden.

Nogmaals hartelijk dank, Wivoe
 
En dat sluiten mag je (kan zelfs alleen jij...) zelf doen met de link rechtsonder. Welke oplossing heb je gebruikt? Het kan nuttig zijn voor andere forumgebruikers om te weten hoe je het probleem hebt opgelost.
 
Hallo OctaFish,

Toen je aangaf dat ik beter de keuze man/vrouw of ja/nee op het fomulier zelf kon wegschrijven i.p.v. naar een tabel, kwam ik er met de volgende code uit:

Code:
Private Sub kdrGeslacht_AfterUpdate()
If Forms!frmKlanten!kdrGeslacht = 1 Then
Forms!frmKlanten!grvGeslacht = "Man"
End If

If Forms!frmKlanten!kdrGeslacht = 2 Then
Forms!frmKlanten!grvGeslacht = "Vrouw"
End If
End Sub

Op m'n furmulier staat dus eerst een Label met Geslacht, dan de Keuzeknopjes man/vrouw in een Groepsvak, dan een Tekstvak met de keuze van de Keuzeknopjes.
De keuze in de Tekstvak wordt vervolgens naar een Tabel weggeschreven.

Dit code voorbeeld heb ik hier op Helpmij gevonden en werkt nu prima. Het heeft mij een kleine 2 weken gekost om er achter te komen, maar ben met pensioen dus heb alle tijd van de wereld.

Met vriendelijke groet, wivoe
 
Ik mag je toch deze code aanbevelen:

Code:
Private Sub kdrGeslacht_AfterUpdate()
Select Case Me.kdrGeslacht
    Case 1
        Me.grvGeslacht = "Man"
    Case 2
        Me.grvGeslacht = "Vrouw"
End Select
End Sub

Niet alleen is hij een stuk netter, hij is beter te onderhouden als je vaker met groepsvakken gaat werken als je bijvoorbeeld meer opties hebt.
Ook is het verwijzen naar tekstvakken op je formulier met Me. veel gemakkelijker te programmeren, omdat Access dan een lijst toont met de beschikbare objecten. Bovendien is Forms!frmKlanten!grvGeslacht heel wat meer typwerk, je kunt typfouten maken in de veldnaam of formuliernaam. Expliciet verwijzen naar een specifiek formulier is eigenlijk alleen nodig als je iets ophaalt uit een ander dan het actieve formulier. Is dan niet het geval, dan zou ik de objecten altijd aanroepen met ME.
 
Hallo OctaFish,

Ik heb je code geprobeerd en moet je volkomen gelijk geven.
Stond er eerst ook wat huiverig tegenover omdat ik eerst deze
code (gevonden hier op Helpmij) probeerde, maar omdat het niet
lukte direct naar een tabel weg te schrijven ben ermee gestopt.

Het is zoals altijd, luister naar de vakman, dan komt er licht in
duistere zaken.

Ik ga zeker m'n codes aanpassen, groeten wivoe
 
En omdat het niet netjes is vragen verwijderd. Graag een eigen vraag openen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan