continuous form, cmd button om form te openen

Status
Niet open voor verdere reacties.

Tweela

Gebruiker
Lid geworden
7 mei 2018
Berichten
15
Hoi allen,

CFrm_Contactpersonen
Frm_Contactpersonen

Heb een continuous CFrm_Contactpersonen om contactpersonen weer te geven. In dit CFrm_Contactpersonen wil ik graag een knop die bij klikken een nieuw blanco record in het uitgebreidere Frm_Contactpersonen aanmaakt maar dan wel zo dat de nieuwe record aan het bedrijf gekoppeld is. Dat het een nieuw venster is geeft niets.
Mvg,
 
Dus je hebt een doorlopend formulier (ik vertaal het maar even voor de Nederlandstalige medelezers ;) ) op een hoofdformulier [Bedrijven] staan voor je contactpersonen, maar je wilt je contactpersonen niet invoeren op dat doorlopende formulier, maar op een zelfstandig geopend enkelvoudig formulier? Daarmee haal je het concept 'doorlopend formulier' wel een beetje onderuit natuurlijk. Eén van de belangrijkste (zo niet hét belangrijkste) aspect van een doorlopend formulier is nu juist dat je nieuwe records aanmaakt die automatisch gekoppeld zijn aan het hoofdformulier! Waarom zou je dat principe niet willen gebruiken? En heb je dan écht zoveel gegevens op te slaan van die contactpersonen dat het niet op één doorlopend formulier past?
Hoe dan ook: als dit jouw werkwijze is, zou ik dat doorlopende formulier niet eens gebruiken, maar een keuzelijst voor de CP's maken. Die is doorgaans een stuk makkelijker te maken dan een doorlopend formulier, en je bent gelijk van je probleem af dat je met twee formulieren in dezelfde data zit te wroeten, wat zou kunnen als je met een doorlopend formulier en een enkelvoudig formulier op hetzelfde record werkt.
Die knop is overigens simpel te maken: knop maken die formulier opent en dat formulier een argument meegeven middels de parameter OpenArgs.
Code:
    DoCmd.OpenForm "frmContactPersonen", WindowMode:=acDialog, OpenArgs:=Me.BedrijfsID
    Me.lstContactPersonen.Requery

En op het formulier [frmContactPersonen] krijg je dan deze code, die het argument weer uitleest.
Code:
Private Sub Form_Load()
    If Not Me.OpenArgs = "" Then Me.BedrijfsID.Value = Me.OpenArgs
End Sub
 
Hoi Octafish, ja ik heb inderdaad heel veel data bij contactpersonen. En bij het doorlopend formulier slechts voornaam, achternaam, telnr en functie plus functieomschrijving.

Wat ik nu had gedaan was in het Cform op de knop "nieuwe contactpersoon maken" een "on click' macro gemaakt:

Cfrm_contactpersonen.jpg

En in de formulier gegevens van contactpersonen een "on load" macro.

Formdetails.jpg

Het "probleem" is echter dat de nieuwe record consequent aan BedrijfsID "1" wordt toegewezen.
 
Ik mag je één ding aanraden: vergeet macro's. Elke seconde die je besteedt aan het leren (en begrijpen) van de (in mijn ogen volkomen onzinnige) macro'taal' kun je niet steken in het leren van VBA en dat is m.i. de enige zinnige manier om iets met Access en automatiseren te doen. Ik gebruik in mijn databases zelden meer dan één macro, en dat is dan een Auto_ macro, die zelfstandig start bij het starten van de database. En het enige dat die macro dan doet, is een procedure aanroepen.
Ik weiger, kortom, om met macro's te werken en daar kan ik je dus ook niet bij helpen.

Dat neemt niet weg dat ik wel kan zien waarom jouw macro niet werkt, en dat is een simpele: je probeert het Contactformulier te openen met een filter op BedrijfsID. En dat moet niet: je moet het formulier op de normale manier openen, en alleen de waarde van het BedrijfsID overnemen. En dat doe je dus met mijn code.
Die bestaat dus uit twee regeltjes, waarbij de tweede voor jou vermoedelijk niet werkt omdat jij geen keuzelijst gebruikt voor de namen, maar een doorlopend formulier. Dat moet uiteraard óók ververst worden. Dat gaat op dezelfde manier.

Maar doe jezelf een lol, en stop ogenblikkelijk met dat gepruts met macro's. Nou zal ik wel een hoop commentaar over me heen krijgen van mensen die daar dus wél heel gelukkig mee zijn :D.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan