Toon posts:

[ACCESS] validatieroutine bij "on unload" subform

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een form met daarop twee subformulieren. Hierop staat data die aangepast kan worden. Om te valideren dat de gebruiker de juiste waarden in heeft gevuld moet ik dit controleren.

Als er een lege waarde is, of een die niet aan de eisen voldoet moet de focus op dit record gezet worden, en moet er een messagebox gegeven worden. :)

Deze functie werkt, maar het event waardoor hij getriggerd wordt niet. Ik heb gekozen voor "on unload", maar hierbij kan de focus niet verzet worden.

Hoe krijg ik dit werkend? On lost focus werkt niet, en de anderen zijn niet geschikt.....

Het lijkt een klein probleempje, maar het komt vele malen voor in mn db 8)

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Op de onExit van de textbox waar de waarde in staat? Gebruik anders de validation rules die je in Access hebt, die zijn daar voor...!!!

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op 09 May 2003 @ 08:42:
Op de onExit van de textbox waar de waarde in staat? Gebruik anders de validation rules die je in Access hebt, die zijn daar voor...!!!
Die beide gevallen zijn mogelijk, maar wat als er een nieuw record wordt aangemaakt, en een van de velden blijft leeg.... geen foutmelding!

Het gaat erom dat het linker subform de menusturing is, en het rechter subform het menu. Als er een menu geopend is in het rechter subform en er wordt op een optie geklikt in het linker dan moeten de validaties uitgevoerd worden, en het gevraagde form geopend worden.

Bij On unload werkt het goed, maar na de foutmelding wordt het nieuwe form direct geopend. Na de foutmelding het oude form weer openen geeft een loop openen/valideren 8)7

Verwijderd

Topicstarter
Hier de code die de validatie aanroept:
De foutopsporing etc ziojn voor de leesbaarheid verwijderd >:)

code:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Form_Unload(Cancel As Integer)
'controleer of alle gegeven juist zijn ingevoerd

If ControleerInvulling = True Then
    'de gegevens zijn juist, open instellingenscherm
        Load ("Beheer")
Else
    'de gegevens zijn niet juist!
        MsgBox "Voer de gegeven goed in!"
End If

End Sub


Hieronder staat de functie:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Function ControleerInvulling() As Boolean
'Deze functie controleerd of alle benodigde gegevens zijn ingevuld.
  
'declareer de variabelen
    Dim Rs As DAO.Recordset
    Dim Recordnummer

'populeer de recordset
    Set Rs = Me.RecordsetClone
 
'ga naar eerste record, en stel recordnummer in
    Rs.MoveFirst
    Recordnummer = 1

'doorloop de recordset
    Do While Not Rs.EOF
    
    'kijk of alle velden een waarde hebben
        If IsNull(Rs!UserName) Or IsNull(Rs!PersoonsNaam) 
        Or IsNull(Rs!Paswoord) Or IsNull(Rs!PermissieID) Then
            'een of meerdere van de velden zijn niet gevuld,
            
            'ga naar dit record
                DoCmd.GoToRecord , , acFirst
                DoCmd.GoToRecord , , , Recordnummer - 1     

            'zet de focus op het lege record
                If IsNull(UserName) Then
                    Me.UserName.SetFocus
                ElseIf IsNull(PersoonsNaam) Then
                    Me.PersoonsNaam.SetFocus
                ElseIf IsNull(Paswoord) Then
                    Me.Paswoord.SetFocus ;) 
                End If
                
            'geef aan als output dat de controle gefaald heeft
                ControleerInvulling = False
            
            'sluit functie
                Exit Function
                
        Else
            'ga naar volgende record, en hoog recordnummer met 1 op
                Rs.MoveNext
                Recordnummer = Recordnummer + 1
        End If
    'begin de loop opnieuw
        Loop
    
'alle record zijn succesvol gecontroleerd! Stelde output in
    ControleerInvulling = True
    
Exit Function

End Function

[ Voor 6% gewijzigd door Verwijderd op 09-05-2003 09:26 . Reden: foutje... ]


  • Boss
  • Registratie: September 1999
  • Laatst online: 14:24

Boss

+1 Overgewaardeerd

En nu?

Je kan toch de ingebouwde validatie gebruiken, en de waarden verplicht maken in de achterliggende tabel?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Vaudtje
  • Registratie: April 2002
  • Niet online
Volgens mij is de Cancel parameter van de form_unload by reference. Als je die op een waarde zet die aangeeft dat unload niet door moet gaan, dan wordt het form niet geUnload. Of zie ik dat verkeerd?
[disclaimer]Vaudtje heeft even geen VBA (help file) bij de hand[/disclaimer]
Kijk ff naar iets dergelijks:
Visual Basic .NET:
1
2
3
Private Sub Form_Unload(Cancel As Integer)
  Cancel=VB_CANCEL
End Sub

In deeze zin staan drie fauten

Pagina: 1