Syntaxisfout omzetten in waarschuwing bij keuzelijst

  • Onderwerp starter Onderwerp starter Jors
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Jors

Gebruiker
Lid geworden
1 okt 2006
Berichten
142
Goedendag,

mijn vraag is waarschijnlijk relatief simpel op te lossen maar mijn kennis van Access is heel basaal. Daarom het volgende.

Ik heb tweede keuzelijsten aan elkaar gelinked waardoor in de tweede keuzelijst de items die worden weergegeven afhankelijk zijn van de in de eerste keuzelijst gekozen optie. Dit heb ik gedaan dmv de volgende code:

SELECT [tblSubCategorie].[Id], [tblSubCategorie].[Subcategorie_nr], [tblSubCategorie].[Subcategorie] FROM tblSubCategorie ORDER BY [Subcategorie_nr];

De tweede keuzelijst dient dus pas te worden ingevuld als er bij de eerste een item uit de lijst gekozen is. Gebeurt dit niet dan krijg je een syntaxisfout.

Mijn vraag is hoe ik kan instellen dat, als dit gebeurt, er een melding verschijnt dat iemand eerst de eerste keuzelijst moet kiezen (dus ipv die syntaxisfout).

Ik hoop dat ik mijn vraag duidelijk heb geformuleerd, zo niet dan hoor ik dat graag.

Bij voorbaat dank voor de hulp
 
Mijn vraag: hoe heb je die twee keuzelijsten aan elkaar gekoppeld?
Mijn werkwijze is om de koppeling te regelen op de gebeurtenis <Na bijwerken> van de eerste keuzelijst. De tweede keuzelijst zet ik standaard op <Ingeschakeld>=False. Je wilt waarschijnlijk dat de tweede keuzelijst de waarden bevat die in de eerste keuzelijst zijn aangegeven. Hierbij wordt de waarde uit de eerste keuzelijst als criterium gebruikt voor de tweede lijst. Overigens zie ik zo'n criterium niet in jouw voorbeeldcode, dus het kan best zijn dat bij jou de tweede keuzelijst volledig zelfstandig werkt. Maakt voor het antwoord niet uit...
Om daarop verder te gaan: in de gebeurtenis <Na bijwerken> van de eerste keuzelijst check ik vervolgens of er iets is geselecteerd. Als dat zo is, wordt de tweede keuzelijst geactiveerd, en gevuld met de items die uit de eerste keuzelijst zijn gefilterd.
Zo te zien gebruik je de eerste lijst niet als criterium voor de tweede. Wel kun je de tweede keuzelijst dus activeren met de gebeurtenis <Na bijwerken>.
 
Bedankt voor je reactie.

Ik heb de code die ik boven heb aangegeven neergezet bij "Got focus". Dit kwam ik zo ergens tegen op internet en bleek te werken.

Wat jij aangeeft lijkt me inderdaad beter. Dat de 2de keuzelijst is uitgeschakeld totdat de 1e is ingevuld.. Ik zal eens kijken of ik dit voor elkaar krijg.
 
Ik ben inmiddels iets verder, maar hoe activeer (of schakel in) ik een keuzelijst dmv macro dan wel VBA code?
 
Laatst bewerkt:
Bij de gebeurtenis <Bij aanwijzen> van het formulier zet je deze code:
Code:
Me.cboKeuzelijst2.Enabled=False
Bij de gebeurtenis <Na bijwerken> van de eerste keuzelijst zet je deze code:
Code:
Me.cboKeuzelijst2.Enabled=True
Nog wel even de naam van de keuzelijsten aanpassen uiteraard.
 
Enorm bedankt, het werkt! Het blijft toch altijd zoeken naar die codes..

Nou ik toch bezig ben; is het mogelijk om een voorwaarde te koppelen aan het actief maken van de tweede kzl?

Het is namelijk zo dat niet bij alle waardes uit de eerste kzl er een tweede optie is. Indien dit nu het geval is kan je in de 2de kzl gewoon niks kiezen. Mooier zou zijn als de tweede kzl dan gewoon niet actief wordt natuurlijk :)

Ik heb het volgende geprobeerd maar dat werkt niet:

Code:
Private Sub qCatnr1_AfterUpdate()
Iif (me.qCatnr1.Value = 72, Me.qSubcatnr1.Enabled = True, me.qSubcatnr1.Enabled=False)
Me.qSubcatnr1.RowSource = "SELECT * from tblSubCategorie WHERE tblSubCategorie.Categorie_nr=" & Me.qCatnr1.Column(0) & " ORDER BY Subcategorie_nr"
End Sub
 
Laatst bewerkt:
Probeer dit eens:
Code:
Dim strSQL as String
If me.qCatnr1.Value = 72 Then
 strSQL="SELECT * from tblSubCategorie WHERE Categorie_nr= 72 ORDER BY Subcategorie_nr"
 Me.qSubcatnr1.Enabled = True
 Me.qSubcatnr1.RowSource = strSQL
 Me.qSubcatnr1.Requery
Else
 Me.qSubcatnr1.Enabled=False
 Me.qSubcatnr1 = ""
End If
 
Hartstikke bedankt, het werkt naar behoren nu!

Nu kan ik verder werken aan (voorlopig) het laatste onderdeel van mijn database.

Groet
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan