Toon posts:

[ACCESS] Macro errorrespond

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een access database gemaakt waar dmv een macro een selectievakje op 'ja'wordt gezet. Maar als deze al op ja staat dan krijg ik een foutmelding dat de macro niet kan worden uit gevoerd.

Nu heb ik de volgende code gebruikt om de foutmelding af te vangen maar hij werkt niet.

Private Sub Keuzelijst_met_invoervak56_AfterUpdate()
' De record zoeken die overeenkomt met het besturingselement

Dim rs As Object
On Error GoTo Alaanwezig
Set rs = Me.Recordset.Clone
rs.FindFirst "[Schoolpasnummer] = '" & Me![Keuzelijst met invoervak56] & "'"
Me.Bookmark = rs.Bookmark
stDocName = "Aanwezig"
DoCmd.RunMacro stDocName
Response = dataerrorcontinue
Exit Sub
Alaanwezig: MsgBox "Leerling is al aanwezig!"
End Sub

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

OZ-Gump

terug van weggeweest

Heb je al eens een break gezet op je code om eens te kijken wat er precies gebeurt? Waar gaat het fout en wat is de (volledige en letterlijke) foutmelding die je krijgt? Enne... waarom doe je dit met een macro? Je kunt toch ook gewoon vanuit je code dat selectievakje zetten?
code:
1
Me.CheckBox18 = True
bijvoorbeeld
edit:
Zou natuurlijk zo moeten: if NOT me.CheckBox18 then me.CheckBox18 = True, dan check je of hij al aanstaat (anders beetje nutteloos)

[ Voor 19% gewijzigd door OZ-Gump op 24-02-2003 12:23 . Reden: verduidelijking ]

My personal website


Verwijderd

Topicstarter
Mhz, ik zal eens kijken met dat if NOT me.CheckBox18 then me.CheckBox18 = True

  • Bu588
  • Registratie: Maart 2000
  • Laatst online: 22-12-2025
Als je je errormeldingen wilt laten werken, zul je wat moeten veranderen aan je programmeervolgorde, een 'standaard-layout' van een procedure is als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub chkAanwezig_Click
On Error goto Err_chkAanwezig_Click

[Wat er moet worden uitgevoerd...]

Exit_chkAanwezig_Click:
      [Wat eventueel altijd moet worden uitgevoerd aan het eind
      van de procedure, Recordsets sluiten e.d.]
      Exit Sub

Err_chkAanwezig_Click:
      [Foutafhandeling]
      Resume Exit_chkAanwezig_Click
End Sub

2 andere tips:
  • Geef je besturingselementen een goede naam
    Laat dus niet "Keuzelijst met invoervak56" staan, maar noem hem "cboLeerlingID". Gebruik 'cbo' voor een combobox, 'inp' voor een tekstvak, 'lst' voor een keuzelijst, 'cmd' voor een command button en 'chk' voor een aanvinkvak (checkbox). Daarachter zet je een naam voor het element, meestal de naam van het veld waar hij aan gekoppeld is. Dan weet je in 1 oogopslag welk veld het is, en wat voor besturingselement het betreft.

    Ook kun je er veel makkelijker verwijzen, nu moet je maar onthouden dat "Keuzelijst met invoervak56" het veld is waar b.v. het lokaal in staat. Als je hem cboLokaal noemt, kun je dat veel makkelijker onthouden en wordt je programmeercode ook nog eens veel duidelijker.
  • Gebruik tabs om in te springen
    Dat maakt je code véél overzichtelijker. Zeker als je met If... Then... Else... of Select Case gaat werken is dit erg nuttig.

Nothing is fool-proof to a sufficiently talented fool...


Verwijderd

Topicstarter
Hey Remy thanx voor je tips.
Nu heb ik nog een vraagje (ja ben niet echt goed in Access en kan er vrij weinig over vinden in de boeken die ik heb)

Ik heb dus nu die code van OZ-Gump

code:
1
If Not Me.Aanwezig Then Me.Aanwezig = True Else MsgBox "Leerling is al aanwezig!"
_/-\o_

maar nu wil ik voor dat ie naar deze If Not gaat eerst iets anders gecontroleerd wordt. Ik dacht met de volgende regel:
code:
1
If Me.Toegangsbewijs Then Me.Toegangsbewijs = True Else MsgBox "Leerling heeft geen toegangsbewijs!"
:?

maar dat werkt dus niet. Wat ik dus wil is dat ie eerst een checkbox controleert of die op True staat. Zoniet exit sub en foutmeldig. Zowel door gaan met die If Not Me.Aanwezig 8)7

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

OZ-Gump

terug van weggeweest

Kijk goed wat je doet... je kijkt of me.toegangsbewijs true is, en als dat zo is, zet je hem op true! Anders komt de melding. Dat lijkt me niet de manier om het op te lossen. Als toegangsbewijs false is moet er een melding komen en de sub ge-exit worden. Dan wordt het zoiets.....:
code:
1
2
3
4
If NOT Me.Toegangsbewijs Then
  MsgBox "Leerling heeft geen toegangsbewijs!"
  Exit sub
end if

[ Voor 63% gewijzigd door OZ-Gump op 26-02-2003 10:15 . Reden: verduidelijking ]

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op 26 February 2003 @ 10:12:
Kijk goed wat je doet... je kijkt of me.toegangsbewijs true is, en als dat zo is, zet je hem op true! Anders komt de melding. Dat lijkt me niet de manier om het op te lossen. Als toegangsbewijs false is moet er een melding komen en de sub ge-exit worden. Dan wordt het zoiets.....:
code:
1
2
3
4
If NOT Me.Toegangsbewijs Then
  MsgBox "Leerling heeft geen toegangsbewijs!"
  Exit sub
end if
Te gek OZ-GUmp het werkt.

Hier de volledige code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Keuzelijst_met_invoervak56_AfterUpdate()
    ' De record zoeken die overeenkomt met het besturingselement
    
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Schoolpasnummer] = '" & Me![Keuzelijst met invoervak56] & "'"
    Me.Bookmark = rs.Bookmark
    If Me.Toegangsbewijs Then
  Me.Toegangsbewijs = True
Else
  MsgBox "Leerling heeft geen toegangsbewijs!"
  Exit Sub
End If

If Not Me.Aanwezig Then Me.Aanwezig = True Else MsgBox "Leerling is al aanwezig!"
    

End Sub


Omdat leerlingen natuurlijk ook foto's hebben gebruik om bij het veranderen van de gegevens ook de foto te laten veranderen. Misschien hebben andere personen hier wat aan dus hierbij de code:
code:
1
2
3
4
5
6
Private Sub Form_Current()
On Error GoTo GeenFoto
Me.Foto.Picture = "C:\sis\afbeeldingen\pasfotos\" & Schoolpasnummer & ".jpg"
Exit Sub
GeenFoto: Me.Foto.Picture = "C:\sis\afbeeldingen\pasfotos\GeenFoto.jpg"
End Sub
(8>

En dan komt nu mijn laatste vraag. ;)
Hoe kun je controleren of een tekstvak (voor meerdere regels) een invoer bevat?!
Zodat je bijvoorbeeld op een 'blacklist' vermelding kunt controleren. })


Jongens alvast heel erg bedankt voor de goede antwoorden! Ik hoop dat ik niet te lastig was met deze vragen! _/-\o_

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

OZ-Gump

terug van weggeweest

Trevi, tof dat het werk en dat je daar even voor bedankt, maar ik krijg een beetje het gevoel dat je niet mijn volledige laatste post hebt gelezen. Ik geef daar namelijk ook al aan dat je door dit te doen:
code:
1
2
3
4
5
6
If Me.Toegangsbewijs Then
  Me.Toegangsbewijs = True
Else
  MsgBox "Leerling heeft geen toegangsbewijs!"
  Exit sub
end if
een stukje code hebt gemaakt, wat niet nuttig is. Je kijkt namelijk of een veld de waarde true heeft, en als dat zo is, zet je hem op true...
In het kader van zuinig programmeren indien mogelijk: alle overtollige code opschonen! En dus zou dit optimaler zijn:
code:
1
2
3
4
If NOT Me.Toegangsbewijs Then
  MsgBox "Leerling heeft geen toegangsbewijs!"
  Exit sub
end if
Wat betreft je laatste vraag: die snap ik niet helemaal. Wil je kijken of en zo ja hoeveel vermeldingen in een MultiLine tekstvak staan? Da's namelijk heel makkelijk te doen met een array. En als je dan de Split-functie gebruikt om dat array te vullen ben je al een heel eind. Zoek daar maar eens op...!

My personal website


Verwijderd

Topicstarter
Wat ik wil proberen is eigenlijk dus kijken naar een multiline tekstvak en dan kijken of daar ook maar iets van een waarde in staat. Dus 1 woord 1 letter maakt niet uit.

Ik heb al eens hier gekeken:
http://www.experts-exchan...=1&nxt=206&len=50&typ=3#3
En via google en yahoo maar ik kan net niet vinden wat ik wil.

Ik krijg of geen zoekresultaten of ik krijg er teveel. :'(

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

OZ-Gump

terug van weggeweest

Ehm... zo ff uit mijn hoofd, dus ik beloof niks. ;) Maar ik deed dan altijd:
code:
1
2
3
4
5
If IsNull(me.tekstvak) then
  msgbox "Het tekstvak is leeg"
else
  msgbox "Het tekstvak is NIET leeg"
end if

My personal website

Pagina: 1