Nieuw record toevoegen in subformulier

Status
Niet open voor verdere reacties.

sisva

Gebruiker
Lid geworden
17 apr 2014
Berichten
28
Ik heb 3 tabellen, een tabel met vakken, een tabel met docenten en een tabel met de link tussen beide.
Ik heb een formulier gemaakt waarbij ik in het hoofdformulier een vak kan kiezen en in het subformulier dan de docenten kan zien die dat vak geven. Als ik in het subformulier een nieuwe docent wil toevoegen, wil ik niet opnieuw het vak moeten invullen, maar wil ik dat dit automatisch wordt ingevuld.
Is er iemand die mij hierbij kan helpen, of mij kan vertellen in welk hoofdstuk van de cursus op deze site dat ik dit zou moeten terugvinden?
Alvast bedankt!
 
Als je het subformulier op de juiste manier hebt gekoppeld aan het hoofdformulier, mag dat geen probleem zijn. Je subformulier koppelt namelijk op basis van het VakID. En als je dan een nieuwe docent toevoegt, vult Access automatisch het VakID in. Maar ik vermoed dat je subformulier niet het koppelformulier is, maar het Docentenformulier, en dan werkt dit niet.
 
Bedankt voor de snelle respons.
Ik denk dat ik mijn fout gevonden heb. De koppeling was wel juist, maar ik had het vakid niet meer toegevoegd in mijn subformulier en daardoor kreeg ik een foutmelding. Ik heb het nu toegevoegd, maar op onzichtbaar gezet.
Van het docentid heb ik nu een keuzelijst met invoervak gemaakt, zodat ik kan zoeken op de naam van de docent als ik een nieuwe docent toevoeg. Op die manier heb ik eigenlijk geen velden meer van de docententabel rechtstreeks in mijn subformulier staan.
Stel nu dat ik in mijn subformulier een aantal velden van de docententabel wil tonen en ik wil dat die gegevens onmiddellijk zichtbaar zijn als ik een docent selecteer in mijn subformulier, moet ik dit dan via vba code doen?
 
Logische fout die je gemaakt hebt, maar de verklaring waarom je formulier nu niet werkte, is hopelijk ook logisch :).
Om je vraag te beantwoorden: Ja en Nee. De makkelijkste oplossing is zonder VBA, dus die raad ik je als eerste aan. Die oplossing bestaat er uit dat je extra velden opneemt in je keuzelijst; dit zijn dan de velden uit Docenten die je wilt laten zien als je de keuzelijst gebruikt. Die velden heb je in de keuzelijst zelf vermoedelijk niet (allemaal) nodig, dus die kun je in de keuzelijst verbergen door de breedte op 0cm te zetten.
Op je subformulier maak je vervolgens een aantal tekstvelden die als besturingselementbron de formule =cboDocent.Column(#) krijgen. (Ik probeer altijd logische namen te gebruiken voor objecten, dus een keuzelijst met invoervak = cbo, en het object = Docent, dus de naam van de keuzelijst is dan cboDocent). Hiermee haal je velden op uit de recordbron van de keuzelijst, die immers meerdere velden bevat. Het # teken staat voor de kolom uit de tabel. Daarbij telt de eerste kolom als 0, de tweede als 1 en zo verder. De formule =cboDocent.Column(3) geeft dus het veld uit de 4e kolom weer.
Op deze manier kun je dus allerlei docentgegevens laten zien. Een techniek die je heel vaak tegenkomt in formulieren :).
 
Mocht je geïnteresseerd zijn in de VBA oplossing: die werkt andersom als de tekstvelden oplossing. Hierbij maak je nog steeds extra tekstvelden (logisch, lijkt mij) maar nu vul je ze vanuit de keuzelijst. Je maakt dan een gebeurtenis (<Bij klikken> is een goeie) die de velden uit de keuzelijst die bij de selectie horen neerpoot in de juiste tekstvelden. De gebruikte formule is zo goed als identiek:
Code:
Private Sub cboDocent_Click()
    Me.txtVeld1 = Me.cboDocent.Column(1)
    Me.txtVeld2 = Me.cboDocent.Column(2)
    Me.txtVeld3 = Me.cboDocent.Column(3)
End Sub
Voordeel van de VBA oplossing is, dat je vrij simpel extra velden kunt toevoegen en vullen. Maar in het gebruik maakt het allemaal niet zoveel uit.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan