vba code wegschrijven gegevens keuzelijst naar tekstvak

Status
Niet open voor verdere reacties.

Friend

Verenigingslid
Lid geworden
31 jan 2009
Berichten
1.137
Beste forummers,

Ik heb de volgende code met dank aan hulp van derden:

Nu schrijft deze keurig de waarden weg naar de velden (selectie type bijschrift) op het formulier

Code:
Private Sub kzlUitgever2_Click()
Dim keuze As String
keuze = Me.kzlUitgever2.Column(1)
toon_gegevens keuze
End Sub

Private Sub toon_gegevens(keuze)
Dim db As Database
Dim Rec As Recordset
Dim info As String
Dim AantalRecords As Integer
Set db = CurrentDb()
Set Rec = db.OpenRecordset("tblUitgevers")
Rec.MoveLast
AantalRecords = Rec.RecordCount
Rec.MoveFirst
For a = 1 To AantalRecords
info = Rec.Fields("uitgever")
If info = keuze Then
lblnaam2.Caption = info
info = Rec.Fields("adres")
lblAdres2.Caption = info
info = Rec.Fields("postcode")
lblPostcode2.Caption = info
info = Rec.Fields("plaats")
lblPlaats2.Caption = info
Exit For
End If
Rec.MoveNext
Next a
lblUitgevers.Caption = AantalRecords
Rec.Close
End Sub

Is het mogelijk dat de gegevens ook weggeschreven ingevuld kunnen worden in velden selectietype tekstvak?
Zodat ik de gegevens kan opslaan in een tabel.

Zo ja hoe moet ik de code dan aanpassen?

Friend
 
Ik dacht dat ik het nooit zou schrijven, maar heb jij iets van een voorbeeld??
 
Het is lastiger om de data naar een label weg te schrijven dan naar een veld, dus wel grappig eigenlijk dat je daar niet uitkomt :). Overigens maak je de constructie nodeloos ingewikkeld door er een overbodige variabele tussen te wurmen. Maar ik zou ook het opvragen van de recordset anders doen; het gaat je overduidelijk om één specifiek record (keuze) dus waarom niet gelijk in de Recordset gezet?

Code:
Private Sub toon_gegevens(keuze)
Dim Rec As Recordset
Dim AantalRecords As Integer, a As Integer
Dim strSQL As String
    strSQL = "SELECT uitgever, adres, postcode, plaats FROM tblUitgevers WHERE uitgever = '" & keuze & "'"
    Set Rec = CurrentDb.OpenRecordset(strSQL)
    With Rec
        If .RecordCount > 0 Then
            txtnaam2 = .Fields("uitgever")
            txtAdres2 = .Fields("adres")
            txtPostcode2 = .Fields("postcode")
            txtPlaats2 = .Fields("plaats")
        End If
    End With
    Rec.Close
End Sub
 
Michel,

Hartelijk dank voor je reactie :thumb:

Dit is het helemaal :d:d En zoals gebruikelijk is je verbetering weer optimaal :d:d

Dan toch een vraag waarop graag jouw advies: wat vind jij beter op deze manier de gegevens opgevraagd via een keuzelijst in een tabel plaatsen of via de keuzelijst selecteren en dan vervolgens in de volgende velden (besturingselementbron) verwijzen naar de keuzelijst Column(0) Column (1) etc.

De laatste methode vind ik wat rommeliger omdat je in al de velden het besturingselementbron moet aanpassen

Zelf vind ik de eerste methode mooi, maar misschien zie ik dingen over het hoofd,

Hoor graag van je

Hartelijk dank :)

Friend
 
Laatst bewerkt:
Ik heb geen probleem met beide van de methodes. Als je met Column(#) werkt als besturingselementbron kun je de gegevens van de velden niet koppelen aan een andere tabel, maar meestal hoeft dat ook helemaal niet. En dat vind ik dus wel zo veilig. En je hoeft er niet voor te programmeren, en dat is voor newbies ook weer erg aantrekkelijk :). Dus ga je voor gemak en optimale gegevensbeveiliging, dan raad ik zonder meer de Columns(#) aan.
 
Michel,

Helder :) duidelijk :)

Hartelijk dank voor je toelichting/uitleg.

Friend
 
Maarten,

Voorbeeldje is wat lastig omdat het bij mij in een groter geheel staat. Dus dan moet ik apart iets maken. Maar dat kan je zelf denk ik ook eenvoudig. Klein tabelletje (tblUitgevers) met de genoemde velden : Id, uitgever, adres, postcode, plaats, telefoon, e-mail etc

en vervolgens een tblProjecten met o.a. de velden Id, txtnaam2, txtAdres2, txtPostcode2, txtPlaats2 etc

Dan een formulier waarin je je keuzelijst zet gebaseerd op tblUitgevers en de velden van tblProjecten.

Met de uitstekende code van OctaFish :) loopt dit precies zoals ik wil :d

Friend
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan