If IsNull

Status
Niet open voor verdere reacties.

Daneron

Gebruiker
Lid geworden
10 jun 2003
Berichten
186
Hoi, bij onderstaande code was het de bedoeling om een melding te krijgen als bepaalde velden niet ingevuldt zouden zijn, de melding werkt wel, alleen gaat hij niet naar het veld toe maar rechtstreeks naar de exit_knop 44 en sluit de boel af.

Ben ik iets vergeten te plaatsen?

Ik kan ook de velden koppelen, bijvoorbeeld if en or then, maar ik wil voor ieder veld een aparte melding en verwijzing naar dat veld.

wie weet de oplossing.

alvast bedankt.

mvrg
Daneron

Private Sub Knop44_Click()
On Error GoTo Err_Knop44_Click
If IsNull([VoornaamEerst]) Then
MsgBox "U moet een Personeelsnummer opgegeven.", vbExclamation, "Bericht kan niet worden verzonden !"
DoCmd.GoToControl "Personeels nr"

Else
If IsNull([Opmerkingen]) Then
MsgBox "U heeft niets ingevuld bij opmerkingen ! geef uw opmerking op in het grote witte vak.", vbExclamation, "Bericht kan niet worden verzonden !"
DoCmd.GoToControl "Opmerkingen"

Else
If IsNull([Datum]) Then
MsgBox "U moet een Datum opgeven.", vbExclamation, "Bericht kan niet worden verzonden !"
DoCmd.GoToControl "Datum"

Else
Me.Visible = False

If Me.Dirty Then DoCmd.RunCommand acCmdSaveRecord
DoCmd.SendObject acReport, "Rop of aanmerkingen devilee", "Momentopname-indeling(*.snp)", "mijnemailadres", "", "", "Opmerking uit Bhv Database", "Bijlage is toegevoegd aan bericht !", False, ""


End If
End If
End If

Exit_Knop44_Click:
MsgBox "Bericht is verzonden, dit document wordt nu afgesloten. ", vbInformation, "Attentie !"
DoCmd.Close acForm, "Fop of aanmerking devilee"
Exit Sub

Err_Knop44_Click:
MsgBox "Bericht is geannuleerd ", vbInformation, "Attentie !"

End Sub
 
Zet het er ff goed neer. Met inspringen vanuit de kantlijn. Het is zo niet te lezen.
 
Geplaatst door Daneron
Hoi, bij onderstaande code was het de bedoeling om een melding te krijgen als bepaalde velden niet ingevuldt zouden zijn, de melding werkt wel, alleen gaat hij niet naar het veld toe maar rechtstreeks naar de exit_knop 44 en sluit de boel af.

Ben ik iets vergeten te plaatsen?

Ik kan ook de velden koppelen, bijvoorbeeld if en or then, maar ik wil voor ieder veld een aparte melding en verwijzing naar dat veld.

wie weet de oplossing.

alvast bedankt.

mvrg
Daneron

Private Sub Knop44_Click()
On Error GoTo Err_Knop44_Click
If IsNull([VoornaamEerst]) Then
MsgBox "U moet een Personeelsnummer opgegeven.", vbExclamation, "Bericht kan niet worden verzonden !"
DoCmd.GoToControl "Personeels nr"

Hier loopt het al fout.

Vervang "Personneels nr" door "VoornaamEerst".
Voor een mooiere programatie, vervang de DoCmd regel door Me![VoornaamEerst].Set Focus
 
Even op het oog...

Alle IF loops worden correct doorlopen. Dat is op zich dus goed. Alleen worde de code bij "Exit_Knop44_Click" altijd uitgevoerd doordat deze code ALTIJD wordt uitgevoerd. Je moet dus op het punt dat je weet welke melding er moet verschijnen nog "Exit Sub" toevoegen. Dan wordt de code die na die statement zou moeten worden uitgevoerd niet meer uitgevoerd en blijft het veld dat je actief wilt ook actief en wordt het formulier niet gesloten.

Verder is inspringen (zoals Kay.nl al meldde) een vereiste om de code leesbaar te houden.


Grtz,
 
Hier heb ik de verbeterde versie (hoop ik)

Ik heb het laatste bericht nog niet toegepast ( regel afbreken)

hier de code:

Private Sub Knop64_Click()
On Error GoTo Err_Knop64_Click
If IsNull(Me![Personeels nummer]) Or Len(Me![Personeels nummer]) < 1 Then
MsgBox "U heeft geen personeelsnummer opgegeven !", vbExclamation, "Bericht kan niet worden verzonden !"
Me![Personeels nummer].SetFocus

Else
If IsNull(Me![Ingangs datum 1]) Or Len(Me![Datum]) < 1 Then
MsgBox "U heeft geen Ingangsdatum opgegeven !", vbExclamation, "Bericht kan niet worden verzonden !"
Me![Ingangs datum 1].SetFocus

Else
If IsNull(Me![Tijd]) Or Len(Me![Tijd]) < 1 Then
MsgBox "U heeft geen Tijd opgegeven bij ingangsdatum !", vbExclamation, "Bericht kan niet worden verzonden !"
Me![Tijd].SetFocus

Else
If IsNull(Me![Chef1]) Or Len(Me![Chef1]) < 1 Then
MsgBox "Bij welke Ploegchef is de persoon werkzaam !", vbExclamation, "Bericht kan niet worden verzonden !"
Me![Chef1].SetFocus

Else
If IsNull(Me![Dienstdoende Chef]) Or Len(Me![Dienstdoende Chef]) < 1 Then
MsgBox "Dienstdoende Ploegchef ?", vbExclamation, "Bericht kan niet worden verzonden !"
Me![Dienstdoende Chef].SetFocus

Else
If Me.Dirty Then DoCmd.RunCommand acCmdSaveRecord
DoCmd.SendObject acReport, "Rziekmeldingtel", "Momentopname-indeling(*.snp)", "emailadres", "", "", "Ziekmelding ", "Bijlage is toegevoegd aan bericht !", False, ""

End If
End If
End If
End If
End If

Exit_Knop64_Click:
MsgBox " Bericht is verzonden ! dit document wordt nu gesloten. ", vbInformation, "Attentie!"
DoCmd.Close acForm, "Fziekmelding"
Exit Sub

Err_Knop64_Click:
MsgBox "Bericht is geannuleerd. ", vbInformation, "Attentie !"

End Sub
 
Wijzig de code als volgt:

Private Sub Knop64_Click()
On Error GoTo Err_Knop64_Click
If IsNull(Me![Personeels nummer]) Or Len(Me![Personeels nummer]) < 1 Then
MsgBox "U heeft geen personeelsnummer opgegeven !", vbExclamation, "Bericht kan niet worden verzonden !"
Me![Personeels nummer].SetFocus
exit sub
end if

If IsNull(Me![Ingangs datum 1]) Or Len(Me![Datum]) < 1 Then
MsgBox "U heeft geen Ingangsdatum opgegeven !", vbExclamation, "Bericht kan niet worden verzonden !"
Me![Ingangs datum 1].SetFocus
exit sub
end if

If IsNull(Me![Tijd]) Or Len(Me![Tijd]) < 1 Then
MsgBox "U heeft geen Tijd opgegeven bij ingangsdatum !", vbExclamation, "Bericht kan niet worden verzonden !"
Me![Tijd].SetFocus
exit sub
end if

If IsNull(Me![Chef1]) Or Len(Me![Chef1]) < 1 Then
MsgBox "Bij welke Ploegchef is de persoon werkzaam !", vbExclamation, "Bericht kan niet worden verzonden !"
Me![Chef1].SetFocus
exit sub
end if

If IsNull(Me![Dienstdoende Chef]) Or Len(Me![Dienstdoende Chef]) < 1 Then
MsgBox "Dienstdoende Ploegchef ?", vbExclamation, "Bericht kan niet worden verzonden !"
Me![Dienstdoende Chef].SetFocus
exit sub
end if

If Me.Dirty Then DoCmd.RunCommand acCmdSaveRecord
DoCmd.SendObject acReport, "Rziekmeldingtel", "Momentopname-indeling(*.snp)", "emailadres", "", "", "Ziekmelding ", "Bijlage is toegevoegd aan bericht !", False, ""
exit sub
end if


Exit_Knop64_Click:
MsgBox " Bericht is verzonden ! dit document wordt nu gesloten. ", vbInformation, "Attentie!"
DoCmd.Close acForm, "Fziekmelding"
Exit Sub

Err_Knop64_Click:
MsgBox "Bericht is geannuleerd. ", vbInformation, "Attentie !"

End Sub

Je kunt de exit subs eventueel vervangen door:

goto Exit_Knop64_Click
 
Alvast bedankt, zal het is wijzigen in uw code.

Nu heb ik de foutafhandeling eruit gehaald en iets anders erin gepland wat op zich goed werkt ( zit nu niet achter m'n pc dus kan niet de code geven). Alleen kan ik geen melding creeren als er op "nee" wordt gedrukt bij het versturen.

mvrg
Daneron
 
MsgBox kan ook als functie gebruikt worden.

Select case msgbox("Vraag", vbyesno)
case vbyes
Doe iets leuks voor het ja antwoord
case vbno
Doe iets leuks voor het nee antwoord
end select
 
Geplaatst door Bartuls
MsgBox kan ook als functie gebruikt worden.

Select case msgbox("Vraag", vbyesno)
case vbyes
Doe iets leuks voor het ja antwoord
case vbno
Doe iets leuks voor het nee antwoord
end select

Nee, helaas, zo'n soortgelijke functie had ik al eens eerder gebruikt. Als de verzending wordt geannuleerd dan zou er een melding mogen komen "wilt u teruggaan naar het hoofdmenu" ( ja of nee ). Maar deze ja/nee functie mag niet komen als het verzenden niet wordt geannuleerd ( succesvol verstuurt) . Hij moet immers teruggaan naar het hoofdmenu. Krijg ik de melding "wilt u teruggaan naar het hoofdmenu" ( ja of nee ), dan kan de record worden overschreven, bij het opnieuw verzenden klopt de Id waarde niet meer en wordt het oude rapport verzonden wat succesvol was verzonden.

Heb de code toegevoegd als bijlage.
alvast bedankt.

mvrg
Daneron
 
Zet achter elke setfocus regel een exit sub. Zoals ik al eerder heb gemeld spring je daarmee uit de code. Alles wat daarna wordt gedaan wordt niet meer uitgevoerd.


Grtz,
 
Je hebt de boodschap voor annuleren onder het volgende label geplaatst:

Err_Knop44_Click:
MsgBox "Bericht is geannuleerd ", vbInformation, "Attentie !"

Deze code wordt alleen uitgevoerd als er ergens in de overige code een onvoorziene fout optreed.

Ik neem aan dat je voor het annuleren een aparte knop op je formulier hebt staan.
Alle code die je wilt uitvoeren bij annuleren zul je dus onder die knop moeten plaatsen.
 
Bedankt voor de informatie, morgen zal ik het een en ander is aanpassen.

mvrg
Daneron
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan