Formulier sluiten bij geen waarden

Status
Niet open voor verdere reacties.

Japsur

Gebruiker
Lid geworden
9 apr 2004
Berichten
650
Hallo kenners,

Ik heb een vraag:
Ik heb een formulier gemaakt die eerst vraagt naar de achternaam van iemand. Wanneer deze goed is ingetypt worden de records getoond met deze achternaam. Maar wanneer ik een achternaam intyp die niet voorkomt krijg ik een leeg formulier te zien. En dit laatste wil ik niet hebben. Ik heb al gekeken bij gebeurtenissen of er iets bij stond van geen gegevens, maar die kan ik niet vinden. Weet iemand de oplossing? Dus wanneer de achternaam niet voorkomt, en dus als resultaat een leeg formulier dat het formulier automatisch sluit en er een melding komt dat deze achternaam niet in de lijst voorkomt??
Alvast bedankt..
 
Open je formulier hidden.
Dat doe je door bij je OpenForm methode de venstermodus op acHidden te zetten.
Vervolgens moet je nadat de naam is ingetikt even controleren of er gegevens in je database zitten.
Daarvoor kun je de dCount functie gebruiken.
Als je geen records vindt kun je daar nog een boodschapje voor maken en vervolgens moet je wel je formulier weer even sluiten, hoewel het niet zichtbaar is, is het nog wel geopend.
Dat kun je doen met docmd.close acForm, "JouwFormulier", acSaveNo
 
Sorry Bartuls, maar ik snap er niet veel van. Ik weet nu totaal niet waar ik alles moet plaatsen? Alles bij gebeurtenis van het formulierontwerp?? Bij welke gebeurtenis?
 
Je kan het ook makkelijker oplossen:

Als je een veld hebt dat altijd gevuld is bij elk record dan kan je hierop controleren of deze leeg is.

Dus als je een veld hebt op het formulier genaamd PersNr en deze is bij het invoeren van een achternaam die niet bestaat leeg, dan kan je het formulier sluiten.

Zet de code bij de gebeurtenis "bij openen" van je formulier

If isnull(Me.PersNr) then
msgbox "Er zijn geen gegevens gevonden bij de ingevoerde achternaam"
docmd.close acForm, "Naamvanjouwformulier", acSaveNo
end if

Groeten,

Remco
 
Ja, dit is het. Perfect Remco, dit werkt perfect en is nog wel redelijk makkelijk te maken.
Bartuls, ook bedankt voor de moeite!
 
Ik wil er toch nog even op terugkomen.
Wanneer ik aangeef dat er geen nieuwe records bij mogen komen in dit formulier en ik vul een foutieve achternaam in, dan wordt m'n formulier helemaal grijs en krijg ik niets te zien. Weet je misschien hoe ik dit moet oplossen??
Dus Toevoegingen toestaan heb ik op 'nee' gezet omdat ik dat simpelweg niet wil hebben. Maar dan werkt de code niet meer.
 
Je kan ook controleren of de achternaam voorkomt.

dit kan je doen met DLookup.

Voorbeeld:

Zet deze code bij het openen van het formulier:

Dim chkAchternaam as Variant

chkAchternaam = Dlookup("Achternaam","Tbl_Personen","Achternaam = " & Me.Achternaam

If IsNull (chkAchternaam) Then
Exit Sub
Else
'niks, gewoon doorgaan
End If


Wijzig dit wel even naar je eigen situatie.

Kijk in de help van Access naar Dlookup om te begrijpen hoe het werkt.

Misschien werkt dit wel.

Groeten,

Remco
 
Volgens mij zie ik iets over het hoofd, bij openen form het volgende geplaatst.

Private Sub Form_Open(Cancel As Integer)
If IsNull(Me.Voornaam) Then
MsgBox "Er zijn geen gegevens gevonden !",vbinformation,"Attentie"
DoCmd.Close acForm, "Fklantenlijstbtw2", acSaveNo

End If
End Sub

Toch opend het formulier zonder gegevens, het formulier is gebaseerd op een query met een criteria.
Moet de query aangepast worden? Het form opend zonder toevoegen toestaan ( leeg dus als er geen gegevens zijn ).

Het volgende heb ik ook al geprobeert.

Private Sub Form_Open(Cancel As Integer)
Dim chkAchternaam As Variant

chkVoornaam = DLookup("Voornaam", "Qklantbtw2", "Voornaam = " & Me.Voornaam)

If IsNull(chkVoornaam) Then

MsgBox "Er zijn geen gegevens gevonden bij de ingevoerde achternaam", vbInformation, "Attentie"
DoCmd.Close acForm, "Fklantenlijstbtw2", acSaveNo

End If
End Sub

Dit resulteerd in de volgende foutmelding,
U heeft een expressie zonder waarde opgegeven

mvrg
Daneron
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan