Keuzelijst maakt direct een keuze

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.697
HAllo,
Ik heb een form met verschillende keuzelijsten.
Als ik die open dan staan er in verschillende keuzelijsten een zwarte balk over een item, alsof ik die al gekozen heb.
Kan ik weg doen? zodat een keuze maken verplicht wordt?

Bedankt

JP
 
Kun je daar ook een voorbeeldje van maken, want in je andere vragen zit dat verschijnsel niet.
 
Ik stuur een schermafdruk mee..
Wat ik deed:
Ik open de form
Maak een keuze
Klik op de knop om de record te bewaren
de keuzes blijven zwart gekleurd... net alsof je niet meer hoeft te kiezen...

Ook...
Als ik de form open dan opent die in een window, zo groot als mijn scherm, terwijl die eigenlijk heel wat kleiner is
Bij de oudere versies van Access sleepte ik de randen dan zodanig dat die zo groot werden als het formulier, maar dat lukt mij nu niet meer.
Hoe kan ik dat oplossen?

Bedankt voor je hulp Michel

MVG JP

formulier.jpg
 
Dat is wel heel wat anders dan:
Als ik die open dan staan er in verschillende keuzelijsten een zwarte balk over een item, alsof ik die al gekozen heb.

Daar suggereer je namelijk mee dat het formulier opent met een selectie. En dat is niet zo; hij opent gewoon zoals het hoort. Daarna maak je de keuzes en klik je op <Opslaan>. En vervolgens doe je: .... niks! En ja, dan is het logisch dat de keuzelijsten gewoon blijven doen wat jij ze hebt opgedragen. Je zult dus, kortom, je keuzelijsten moeten resetten. Dat kan bijvoorbeeld met : Me.Keuzelijst1.Value = Null. En zo ga je de hele lijst af.
 
Oh ja, je andere vraag: je moet je formulier nog op Pop-Up = Ja zetten.
 
pop-up commando lostte het probleem op, ook de keuzelijsten op null zetten werkt nu...
Maar ik schreef code zodat er gekeken wordt of alle velden wel degelijk gekozen werden, maar dat werkt blijkbaar niet...
Ik schreef dus wat werkeerd, maar wat?

Code:
    If Me.Keuzelijst0.Value = Null Or Me.Leerlingenlijst.Value = Null Or Me.PVAD_Keuze.Value = Null Or Me.Klaslijst.Value = Null Or Me.Datum_vaststelling.Value = Null Or Me.Schooljaarkeuze.Value = Null Then
        If MsgBox("Niet alle keuzes werden gemaakt!", vbOKOnly, "Let op!") = vbOK Then
        End If
    Else
        With CurrentDb.OpenRecordset("PVAD", dbOpenDynaset)
            .AddNew
            ![Naam_leerkracht] = Me.Keuzelijst0
            ![Naam_leerling] = Me.Leerlingenlijst
            ![Item] = Me.PVAD_Keuze
            ![klas] = Me.Klaslijst
            ![Datum_probleem] = Me.Datum_vaststelling
            ![Schooljaar] = Me.Schooljaarkeuze
            .Update
            .Close
        End With
        Me.Keuzelijst0.Value = Null
        Me.Leerlingenlijst.Value = Null
        Me.PVAD_Keuze.Value = Null
        Me.Klaslijst.Value = Null
        Me.Datum_vaststelling.Value = Null
        Me.Schooljaarkeuze.Value = Null
    End If
 
Ik zou het zo doen:
Code:
Private Sub Bewaren_Click()
    
    If Me.Keuzelijst0.Value = Null Then
        MsgBox("Er is geen docent geselecteerd!", vbOKOnly, "Let op!") = vbOK
        Exit Sub
    ElseIf Me.Leerlingenlijst.Value = Null Then
        MsgBox("Er is geen leerling geselecteerd!", vbOKOnly, "Let op!") = vbOK
        Exit Sub
    ElseIf Me.PVAD_Keuze.Value = Null Then
        MsgBox("Er is geen kleur geselecteerd!", vbOKOnly, "Let op!") = vbOK
        Exit Sub
    ElseIf Me.Klaslijst.Value = Null Then
        MsgBox("Er is geen klas geselecteerd!", vbOKOnly, "Let op!") = vbOK
        Exit Sub
    ElseIf Me.Datum_vaststelling.Value = Null Then
        MsgBox("Er is geen datum geselecteerd!", vbOKOnly, "Let op!") = vbOK
        Exit Sub
    ElseIf Me.Schooljaarkeuze.Value = Null Then
        MsgBox("Er is geen jaargang geselecteerd!", vbOKOnly, "Let op!") = vbOK
        Exit Sub
    Else
        MsgBox("Er ging iets fout!", vbOKOnly, "Oops!") = vbOK
        Exit Sub
    End If
    With CurrentDb.OpenRecordset("PVAD", dbOpenDynaset)
        .AddNew
        ![Naam_leerkracht] = Me.Keuzelijst0
        ![Naam_leerling] = Me.Leerlingenlijst
        ![Item] = Me.PVAD_Keuze
        ![klas] = Me.Klaslijst
        ![Datum_probleem] = Me.Datum_vaststelling
        ![Schooljaar] = Me.Schooljaarkeuze
        .Update
        .Close
    End With
    Me.Keuzelijst0.Value = Null
    Me.Leerlingenlijst.Value = Null
    Me.PVAD_Keuze.Value = Null
    Me.Klaslijst.Value = Null
    Me.Datum_vaststelling.Value = Null
    Me.Schooljaarkeuze.Value = Null
    
End Sub
 
Overigens heb je in je code geen rekening gehouden met het invoeren van een dubbel record. Zou ik wel afvangen als ik jou was :).
 
Als ik de code die je aangaf in het programma steek krijg ik volgende foutmelding:
Compileerfout:
Functie-oproep aan de linkerkant van de toewijzing moet een Variant of een Object als resultaat geven.

blijkbaar is er dus iets aan de hand...

JP
 
Op welke regel krijg je die melding?
 
aan de lijn:
MsgBox("Er is geen docent geselecteerd!", vbOKOnly, "Let op!") = vbOK

als ik in het venster met de foutmelding op "OK" klik dan komt de lijn:
Private Sub Bewaren_Click()
in fluo geel te staan
 
Ik heb jouw code min of meer gekopieerd; de = vbOK moet natuurlijk weg. Je maakt nu geen vergelijking meer.
 
als ik dat doe dan krijg ik een compileerfout en de regel: verwacht: =
????
 
Op deze regel?
Code:
     MsgBox "Er is geen docent geselecteerd!", vbOKOnly, "Let op!"
Want dat zou sowieso niet mogen, dat is de simpelste msgbox die je kan maken. Wel de haakjes weghalen trouwens.
 
Ik schreef:
Code:
    If Me.Keuzelijst0.Value = Null Then
        MsgBox "Er is geen leerkracht geselecteerd!", vbOKOnly, "Let op!"
        Exit Sub
    ElseIf Me.Leerlingenlijst.Value = Null Then
        MsgBox "Er is geen leerling geselecteerd!", vbOKOnly, "Let op!"
        Exit Sub
    ElseIf Me.PVAD_Keuze.Value = Null Then
        MsgBox "Er is geen omschrijving geselecteerd!", vbOKOnly, "Let op!"
        Exit Sub
    ElseIf Me.Klaslijst.Value = Null Then
        MsgBox "Er is geen klas geselecteerd!", vbOKOnly, "Let op!"
        Exit Sub
    ElseIf Me.Datum_vaststelling.Value = Null Then
        MsgBox "Er is geen datum geselecteerd!", vbOKOnly, "Let op!"
        Exit Sub
    ElseIf Me.Schooljaarkeuze.Value = Null Then
        MsgBox "Er is geen jaargang geselecteerd!", vbOKOnly, "Let op!"
        Exit Sub
    Else
        With CurrentDb.OpenRecordset("PVAD", dbOpenDynaset)
            .AddNew
            ![Naam_leerkracht] = Me.Keuzelijst0
            ![Naam_leerling] = Me.Leerlingenlijst
            ![Item] = Me.PVAD_Keuze
            ![klas] = Me.Klaslijst
            ![Datum_probleem] = Me.Datum_vaststelling
            ![Schooljaar] = Me.Schooljaarkeuze
            .Update
            .Close
       End With
        Me.Keuzelijst0.Value = Null
        Me.Leerlingenlijst.Value = Null
        Me.PVAD_Keuze.Value = Null
        Me.Klaslijst.Value = Null
        Me.Datum_vaststelling.Value = Null
        Me.Schooljaarkeuze.Value = Null
    End If

Bij controel zag ik dat Me.Schooljaarkeuze.Value effectief Null was maar toch zag ik geen melding.
Ik heb de code lichtjes aangepast omdat niets bewaard werd en ik steeds het "Oops-venster" zag..
Dus, er is iets fout.
Hoe kan het eigenlijk dat mijn "OR" code van in het begin niet werkte?

Bedankt

JP
 
Je hebt een aantal manieren om op een leeg veld te controleren, zoals:
Code:
     Me.PVAD_Keuze.Value = Null
     IsNull(Me.PVAD_Keuze.Value)
     Me.PVAD_Keuze.Value = ""
     Me.PVAD_Keuze.Value & "" = ""
     Me.PVAD_Keuze.Value = VbNullString
Ze doen (op de laatste 2 na) allemaal wat anders, en dat komt omdat een leeg veld niet altijd Null, 0 of "" is. Het hangt maar van je veldinstellingen af. Je controleert dus niet goed. Ik gebruik bijna altijd één van de laatste 2 codes in mijn db's en voorbeelden die ik post. Omdat ze werken :).

Hoe kan het eigenlijk dat mijn "OR" code van in het begin niet werkte?
Wat denk je? Als je de vraag stelt: "Als Jan 30 is of Piet kleiner dan 2 meter of Jantien vrouw of de buitentemperatuur meer dan 20 graden" dan is de kans groot dat één van deze voorwaarden wel waar is. Stel ik daarentegen de vraag: "Als Jan 30 is en Piet kleiner dan 2 meter en Jantien vrouw en de buitentemperatuur meer dan 20 graden" dan wordt de kans al een stuk kleiner.
Had je de formule met AND gemaakt, dan had hij al een stuk beter gewerkt.
Code:
     If Not Me.Keuzelijst0.Value = Null And Not Me.Leerlingenlijst.Value = Null And Not Me.PVAD_Keuze.Value = Null etc.
Maar de echte fout zit vermoedelijk hier:
Code:
     If MsgBox("Niet alle keuzes werden gemaakt!", vbOKOnly, "Let op!") = vbOK Then
        End If
Daar doe je namelijk niks.
Code:
     If MsgBox("Niet alle keuzes werden gemaakt!", vbOKOnly, "Let op!") = vbOK Then
                Exit Sub
        End If
 
nu snap ik er niets meer van Michel...
Ik moest toch de haakjes en de = vbOK weg doen, had je voorgesteld..
Ik weet nu echt niet wat er niet klopt aan "mijn" originele code...

JP
 
Je wilde weten waarom je oorspronkelijke code niet werkte. Daar geef ik antwoord op :). Ik zou hoe dan ook mijn variant gebruiken, met dus hooguit een andere check op lege velden en keuzelijsten.
 
Michel, ik kom er niet uit...
Ik paste de code aan in deze zin:

Code:
Private Sub Bewaren_Click()
    Dim niet_ingevuld As String
    niet_ingevuld = "Neen"
    If Me.Keuzelijst0.Value = Null Then
        MsgBox "Er is geen leerkracht geselecteerd!", vbOKOnly, "Let op!"
        niet_ingevuld = "Ja"
    End If
    If Me.Leerlingenlijst.Value = Null Then
        MsgBox "Er is geen leerling geselecteerd!", vbOKOnly, "Let op!"
        niet_ingevuld = "Ja"
    End If
    If Me.PVAD_Keuze.Value = Null Then
        MsgBox "Er is geen omschrijving geselecteerd!", vbOKOnly, "Let op!"
        niet_ingevuld = "Ja"
    End If
    If Me.Klaslijst.Value = Null Then
        MsgBox "Er is geen klas geselecteerd!", vbOKOnly, "Let op!"
        niet_ingevuld = "Ja"
    End If
    If Me.Datum_vaststelling.Value = Null Then
        MsgBox "Er is geen datum geselecteerd!", vbOKOnly, "Let op!"
        niet_ingevuld = "Ja"
    End If
    If Me.Schooljaarkeuze.Value = Null Then
        MsgBox "Er is geen jaargang geselecteerd!", vbOKOnly, "Let op!"
        niet_ingevuld = "Ja"
    End If
    If niet_ingevuld = "Ja" Then
        With CurrentDb.OpenRecordset("PVAD", dbOpenDynaset)
            .AddNew
            ![Naam_leerkracht] = Me.Keuzelijst0
            ![Naam_leerling] = Me.Leerlingenlijst
            ![Item] = Me.PVAD_Keuze
            ![klas] = Me.Klaslijst
            ![Datum_probleem] = Me.Datum_vaststelling
            ![Schooljaar] = Me.Schooljaarkeuze
            .Update
            .Close
       End With
    End If
        Me.Keuzelijst0.Value = Null
        Me.Leerlingenlijst.Value = Null
        Me.PVAD_Keuze.Value = Null
        Me.Klaslijst.Value = Null
        Me.Datum_vaststelling.Value = Null
        Me.Schooljaarkeuze.Value = Null

End Sub

Bij het ingeven van data vulde ik niets in Schooljaarkeuze
Bij controle is deze waarde effectief Null.... toch krijg ik geen boodschap, en wordt de string niet op "Ja" gezet..
Begrijp dat van geen kanten...
Stupid me :(:confused:
 
Lees berichtje #16 er nog eens op na... Zelf test ik zelden op Null. Werkt namelijk zelden :).
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan