Keuzelijst met invoervak

Status
Niet open voor verdere reacties.

JMuisz

Nieuwe gebruiker
Lid geworden
16 jul 2009
Berichten
4
Hallo,

Wie kan mij helpen met onderstaand probleem:
Ik heb een aantal tabellen (cq formulieren) die gelinkt zijn aan een hoofdtabel.
Nu heb ik een schakelbord gemaakt en wil ik, door een waarde te laten kiezen in een keuzelijst met invoervak (keuzelijst vanuit de hoofdtabel), alle formulieren die geopend kunnen worden (via schakelbord) laten openen in het gekozen record.
Alleen zit ik met het volgende probleem: ik heb via de wizard een keuzelijst geplaatst, maar ik kan daar niets invoeren of aanklikken. Waarden worden wel weergegeven, maar zijn niet te kiezen. Hoe kan ik dit oplossen?

En als dit probleem verholpen is, hoe kan ik het beste programmeren dat elk formulier dan geopend wordt in het record met de gekozen waarde?

Alvast hartelijk bedankt!

JM
 
Eerst maar het eerste probleem: de keuzelijst. Kun je aangeven hoe je die gemaakt hebt, en of hij aan een tabel of query is gekoppeld?

Michel
 
Bedankt voor je reactie.
De keuzelijst met invoervak heb ik gemaakt via de werkset werkbalk. Heb gekozen voor 'de waarden moeten worden opgezocht in een tabel/query' en heb vanuit een tabel een record (tevens primaire sleutel) gekozen. Vervolgens gekozen voor 'de waarde bewaren voor later gebruik'.
De tabel waar ik het record uit haal, is niet de tabel voor het schakelbord.

JM
 
Gelukkig voor jou is het probleem inderdaad reproduceerbaar, en ook simpel op te lossen. Op het Schakelbord formulier moet je de optie <Bewerken Toestaan> op het tabblad <Gegevens> op Ja zetten, dan kun je de keuzelijst gebruiken.

Het tweede probleem is wat lastiger... Een schakelbord wordt dynamisch opgebouwd, dus je kunt niet zomaar achter een knop wat exta code plakken. Ik zou per formulier dat je wilt openen met de keuzelijst een actie maken <Bij laden> van het formulier, waarbij je kijkt naar de waarde van de keuzelijst (kan ook leeg zijn), en die toevoegen aan de recordsource van het formulier. Met een If .. Then .. End if check je dan op het al dan niet leeg zijn van de keuzelijst, want in het laatste geval wil je natuurlijjk de standaardwerking van het formulier.

Als je daar hulp bij nodig hebt, dan horen we dat wel weer!

Michel
 
Bedankt voor het advies! Het was maar simpel, maar ik zag helaas zoiets over het hoofd.
Ik zal me nog verder verdiepen in een code voor elk formulier. Als ik er niet uit kom, vraag ik het wel.
Alvast bedankt!

Groet, JM
 
Actie bij laden formulier

Hallo,

Helaas kom ik er niet uit met het schrijven van een actie voor het laden van formulier.
Het gaat om de volgende gegevens:
Schakelbord heeft keuzelijst [SchakelbordMetcNummer]. Hier wordt een waarde gekozen of het vak wordt leeggelaten. Na deze keuze wil ik dat het veld [MetcNummer] in frmAlgemeneGegevens automatisch gevuld wordt (met dezelfde waarde als die van het veld op Schakelbord) bij laden van frmAlgemeneGegevens.

Dus bij laden van frmAlgemeneGegevens
If [SchakelbordMetcNummer] is not null Then [MetcNummer] = [SchakelbordMetcNummer]
Kom niet verder, en zo kom ik er helaas niet...

Als ik het doe, zou ik er misschien wel uitkomen met een bijwerkquery, maar dat lijkt me te omslachtig.

Ik hoop dat iemand me kan helpen. Alvast super bedankt!

Gr JMuisz
 
Vermoedelijk gaat het wel als je het formulier opent met OpenArgs als parameter.
Werkt als volgt:
Eerst leg je de waarde van de keuzelijst vast in een variabel
Vervolgens typ je achter het DoCmd.OpenForm commando net zo lang komma's tot je het argument OpenArgs ziet verschijnen in de hulpballon.
Daar typ je de naam van de variabele. Zijn een stuk of 6 komma's, zo uit m'n hoofd.
Voorbeeld: DoCmd.OpenForm sFormDoel, , , , , , sArgs

Om de variabele op het geopende formulier te gebruiken, moet je het argument uiteraard weer teruglezen.
Gaat als volgt:
In het OnLoad event (<Bij Laden> dus...) zet je de volgende code:

Code:
If Not IsNull(Me.OpenArgs) Then
    sTabel=Me.RecordSource
    stabel= sTabel & " WHERE [MetcNummer] = " & Me.OpenArgs
    Me.RecordSource=sTabel
    Me.Requery
End If

En dan ben je er wel.
Beetje stoeien nog met de naamgeving van tabellen, velden en variabelen...

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan