Verplicht invoer veld

Status
Niet open voor verdere reacties.

Marcotica

Gebruiker
Lid geworden
20 sep 2007
Berichten
83
Hallo allen,

Ik weet niet meer wat ik nu fout doe, maar helaas heb ik even jullie hulp nodig.

Ik wil in het formulier opnemen dat in het bepaald veld "altijd" een waarde ingevoerd moet worden (een 0 t/m ........).
Het zou dus zo moeten zijn dat wanneer ik in het veld niets invoer dat dan een msgbox wordt getoond.
Hieronder het script waarmee ik worstel:

Code:
Private Sub Ren_WaarvanNietGedekt_Extern_Exit(Cancel As Integer)

    If IsEmpty("Ren_WaarvanNietGedekt_Extern") Then
        
        MsgBox "Het veld:" & vbCr & "Aantal niet gedekte externezaken is niet gevuld." & vbCr & vbCr & "Hier moet een getal in staan (0-255)", vbDefaultButton1, "Veld niet gevuld"
    
    Cancel = True
    End If



End Sub

Wie kan mij vertellen hoe ik het moet oplossen. Ik denk dat deze niet echt moeilijk is. Maar toch.

Groet

Marco
 
Hiermee:
Code:
If Nz(Me.Ren_WaarvanNietGedekt_Extern, "") = "" Then
 
He Hallo OctoFish (Michel geloof ik),

Helemaal SUPER!!! Doet het meteen.
Geweldig. If NZ kende ik ook niet.
Weer hartelijk bedankt voor je snelle hulp in deze.

Gr. Marco

Hiermee:
Code:
If Nz(Me.Ren_WaarvanNietGedekt_Extern, "") = "" Then
 
Hoi Octo,

Ik loop helaas wel tegen een ander probleempje aan.
Wanneer ik bij het laatste record ben, en dan door tab of scrol met de muis wordt altijd een nieuwe invoer weergegeven.
Als ik dan weer terug tab of scrol zegt ie uiteraard dat het verplichte veld niet is ingevuld.
Ik weet dat er een script is zodat ie niet naar de lege records kan gaan.
Het is iets dergelijk als hieronder, maar ik weet niet precies of dit in een module of iets anders moet worden gezet.

Code:
Sub AlleenGevuld()

Dim rs As Recordset


'Set db = DBEngine.Workspaces(0).OpenDatabase("U:\Mijn documenten\Acces\DASPAS\Kopie van DASPAS.mdb")


    Set rs = New Recordset
    rs.Open "tbl_02_Rendement", CurrentProject.Connection

Do Until rs.EOF

    rs.MoveFirst
    
rs.Close

Set rs = Nothing
    

End Sub

Ik hoop dat jij (en ik denk het wel) hier een eenvoudige oplossig voor hebt.

Groetjes Marco


He Hallo OctoFish (Michel geloof ik),

Helemaal SUPER!!! Doet het meteen.
Geweldig. If NZ kende ik ook niet.
Weer hartelijk bedankt voor je snelle hulp in deze.

Gr. Marco
 
Is het niet simpeler om er een
Code:
If Me.NewRecord Then
check in te zetten?
 
Ik kan hiervandaan je probleem niet helemaal goed inschatten, omdat ik niet weet wat er allemaal op je formulier gebeurt, en op welk moment je bepaalde acties wilt laten uitvoeren. Normaal gesproken vul je een veld in als je op een nieuw formulier staat, en die status kun je dus checken met Me.NewRecord.

Ik vermoed dat je wilt voorkomen dat de msgbox verschijnt als per ongeluk naar een nieuw record gaat, en daarna weer terug naar het vorige record. Op welk moment de msgbox dus afgaat, want dat veld is leeg...
Probeer het hier eens mee?
Code:
Private Sub Ren_WaarvanNietGedekt_Extern_Exit(Cancel As Integer)
If Me.NewRecord And Me.Dirty = False Then
    Me.Undo
Else
    If Nz(Me.Ren_WaarvanNietGedekt_Extern, "") = "" Then
        MsgBox "Het veld:" & vbCr & "Aantal niet gedekte externezaken is niet gevuld." & vbCr & vbCr & "Hier moet een getal in staan (0-255)", vbDefaultButton1, "Veld niet gevuld"
    Cancel = True
    End If
End If
End Sub
 
Michel Bedankt. het werkt zeker! het is alleen een oplossing om de melding niet te krijgen als je per abuis naar een nieuw record scrolled of tabt.
Wat ik zou willen is eigenlijk dat wanneer je bij het laatste record bent (dmv. een query of niet) dat je dan gewoon niet naar een leeg record kan gaan. Snap je me? Beetje criptisch denk.
Wanneer je van een tabel een formulier maakt, en je komt bij het laatste record en je tabt dan worden lege velden getoond om in te vullen. Dit laatste mag niet gebeuren. Dus hij mag niet van het laaste record naar een leeg record gaan, en dan bijv. zeggen dat je al bij het laaste record bent.
Snap je? ik hoop het.

Gr. Marco

Ik kan hiervandaan je probleem niet helemaal goed inschatten, omdat ik niet weet wat er allemaal op je formulier gebeurt, en op welk moment je bepaalde acties wilt laten uitvoeren. Normaal gesproken vul je een veld in als je op een nieuw formulier staat, en die status kun je dus checken met Me.NewRecord.

Ik vermoed dat je wilt voorkomen dat de msgbox verschijnt als per ongeluk naar een nieuw record gaat, en daarna weer terug naar het vorige record. Op welk moment de msgbox dus afgaat, want dat veld is leeg...
Probeer het hier eens mee?
Code:
Private Sub Ren_WaarvanNietGedekt_Extern_Exit(Cancel As Integer)
If Me.NewRecord And Me.Dirty = False Then
    Me.Undo
Else
    If Nz(Me.Ren_WaarvanNietGedekt_Extern, "") = "" Then
        MsgBox "Het veld:" & vbCr & "Aantal niet gedekte externezaken is niet gevuld." & vbCr & vbCr & "Hier moet een getal in staan (0-255)", vbDefaultButton1, "Veld niet gevuld"
    Cancel = True
    End If
End If
End Sub
 
Dat is een stuk simpeler: de eigenschap van het formulier aanpassen. Op het tabblad <Gegevens> zet je de eigenschap <Toevoegingen toestaan> op Nee.
 
Die had ik ook al gevonden ja. Alleen wanneer ik het formulier dan open met:
Code:
Private Sub KnopNaarNweBerekening_Click()

    DoCmd.OpenForm "Frm_01_DasPas", acNormal, , , acFormAdd

End Sub

Dan behoud ie de instellingen <toevoegingen toestaan - op Nee> ook. Dan kan ik niet nieuwe data invoeren.



Dat is een stuk simpeler: de eigenschap van het formulier aanpassen. Op het tabblad <Gegevens> zet je de eigenschap <Toevoegingen toestaan> op Nee.
 
Daarom gebruik ik de formuliereigenschappen nooit op die manier. Ik stel tegenwoordig de formuliereigenschappen in als ik het formlier open via een knop. Je krijgt dan:
Code:
[Formuliernaam].Form.AllowAdditions = True
Daarbij open ik een formulier altijd vanuit het hoofdformulier, dat ik vervolgens verberg. Bij het sluiten van het tweede formulier wordt het eerste formulier weer zichtbaar gemaakt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan