[Access 2002] GoTo next record bij verwijderen record

Pagina: 1
Acties:
  • 302 views sinds 30-01-2008
  • Reageer

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Mijn probleem klinkt misschien heel eenvoudig, maar toch kom ik er niet uit.

Ik heb een verwijderknop gemaakt op een formulier (gewoon via de wizard). Als ik een record verwijder, lukt dit prima. Alleen krijg ik na de verwijdering de melding 'No current record' en vervolgens zijn alle velden leeg. Ik moet dan met een previous of next knop naar een bestaande record navigeren.

Wat ik wil, is dat je na het verwijderen van een record automatisch naar de volgende of vorige record gaat, maar dat wil om de een of andere reden niet lukken.

Basiscode:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Button_VerwijderOnderwerp_Click()
On Error GoTo Err_Button_VerwijderOnderwerp_Click

    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
        
Exit_Button_VerwijderOnderwerp_Click:
    Exit Sub

Err_Button_VerwijderOnderwerp_Click:
    MsgBox Err.Description
    Resume Exit_Button_VerwijderOnderwerp_Click
    
End Sub

Ik heb o.a. geprobeerd de volgende dingen erachter te plakken, zonder resultaat:
code:
1
2
3
DoCmd.GoToRecord , , acNext (of Previous, Last etc)
Me.Requery
Recordset.MoveNext

Ook heb ik de verwijdercode vervangen door
code:
1
DoCmd.RunCommand acCmdDeleteRecord

Maar het lijkt wel alsof alles wat na de verwijderopdracht staat, genegeerd wordt! Ook als ik bijv.
code:
1
2
3
4
    DoCmd.SetWarnings False
    DoCmd.RunCommand acCmdDeleteRecord
    Me.Requery
    DoCmd.SetWarnings True
doe, dan krijg ik nog steeds de melding 'no current record' en blijven de velden leeg.
Wat doe ik fout??

  • Force
  • Registratie: Januari 2000
  • Laatst online: 31-07-2023

Force

Kan iemand ff me neus afvegen?

Je hebt inderdaad een vreemd probleem. Ik heb even wat dingen getest, en bij mij gaat hij al naar het volgende record voordat ik op ja geklikt heb om het te bevestigen. Hij is zelfs zo slim om bij het laatste record naar de vorige te gaan. Kies ik nee dan gaat hij terug naar het record dat zichtbaar was op het moment van het klikken op de verwijder knop.

Ik heb hier geen 2002, maar in 97 en 2000 werkt het zonder iets aan te passen, zoals jij zou willen. Ik heb het geprobeerd met als recordsource een tabel en query, doorlopend en enkelvoudig formulier. Eigenlijk heb ik elke optie van het form wel gewijzigd, maar het blijft werken. Ik kan je situatie niet nabootsen.

Kijk eens onder extra->opties->bewerken/zoeken. Ik kan daar instellen wat er bij enter e.d. gebeurd. Misschien dat in 2002 ook ingesteld kan worden wat er gebeurd na verwijderen.

Leven is als een pijpkaneel, iedereen zuigt eraan en krijgt zijn deel.


  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Vaag hoor...

Onder dat menuitem is bij mij geen mogelijkheid om aan te geven wat er bij enter gebeurt; ik kan alleen aanvinken welke bevestigingsschermpjes ik wil krijgen.

De recordsource van mijn formulier is overigens
SELECT * FROM Onderwerpen ORDER BY Datum;
Misschien dat dat iets uitmaakt?

[edit]
Ik heb net wat verder getest: als ik een nieuw onderwerp aanmaak en dat vervolgens weer verwijder, krijg ik lege velden. Verwijder ik een record dat tussen andere records in staat, dan gaat hij wel naar de volgende. Blijkbaar gaat hij hier dus niet automatisch naar de vorige record als hij aan het einde van de lijst is. Maar hoe dan ook krijg ik in ALLE gevallen de melding 'no current record' :?

[ Voor 41% gewijzigd door Millennyum op 09-03-2005 09:46 ]


  • Mystiqes
  • Registratie: Juli 2002
  • Laatst online: 26-12-2022
Na het stukje code van verwijderen direct een MoveFirst? (eerste record)

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Mystiqes schreef op woensdag 09 maart 2005 @ 10:05:
Na het stukje code van verwijderen direct een MoveFirst? (eerste record)
Nee, hij lijkt gewoon alle commando's te negeren die ik na de verwijdercode plaats.

  • Mystiqes
  • Registratie: Juli 2002
  • Laatst online: 26-12-2022
Millennyum schreef op woensdag 09 maart 2005 @ 10:10:
[...]

Nee, hij lijkt gewoon alle commando's te negeren die ik na de verwijdercode plaats.
In je code staat

[code]
Err_Button_VerwijderOnderwerp_Click:
MsgBox Err.Description
Resume Exit_Button_VerwijderOnderwerp_Click[
/code]

Hij gaat er dus heen wanneer iets fout gaat. Met F8 kan je debuggen, dus zien waar hij fout loopt. Kijk even waar hij precies fout gaat.

Gaat alles goed, maar gaat hij er toch telkens heen, dan zou ik die error message eruit halen of vervangen door MsgBox 'Verwijdering geslaagd'.

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Ik ben vast heel dom, want ik snap niet hoe ik kan beginnen met debuggen... :|

Maar goed, als hij vraagt of ik echt de record wil verwijderen en ik klik op 'annuleren', dan krijg ik ook die 'no current record'-melding... misschien zit de fout wel heel ergens anders?

  • Mystiqes
  • Registratie: Juli 2002
  • Laatst online: 26-12-2022
Millennyum schreef op woensdag 09 maart 2005 @ 11:51:
Ik ben vast heel dom, want ik snap niet hoe ik kan beginnen met debuggen... :|

Maar goed, als hij vraagt of ik echt de record wil verwijderen en ik klik op 'annuleren', dan krijg ik ook die 'no current record'-melding... misschien zit de fout wel heel ergens anders?
In de balk voor een actie kan je een rondje plaatsen door er simpel weg in die balk te klikken. Wanneer hij langs die procedure komt schiet hij in de code en kan je door middel van F8 stappen maken en zien wat er gebeurd.

Bekijk daar even waar hij heen gaat als je op annuleren klikt.

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Oh dan deed ik het dus toch goed. Maar als ik een rondje voor de code plaats (volledige code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Button_VerwijderOnderwerp_Click()
On Error GoTo Err_Button_VerwijderOnderwerp_Click

    DoCmd.RunCommand acCmdDeleteRecord
            
Exit_Button_VerwijderOnderwerp_Click:
    Exit Sub

Err_Button_VerwijderOnderwerp_Click:
    MsgBox Err.Description
    Resume Exit_Button_VerwijderOnderwerp_Click
    
End Sub
)

dan gaat hij wel aangeven op welke stap hij zit, maar ik kan dan niet meer terug naar mijn formulier om te zien of er een messagebox is en om vervolgens op ja of nee te klikken. Als ik met F8 alle stappen doorloop dan gaat hij via het commando opdracht verwijderen naar de error description en vervolgens gaat hij terug naar het formulier en krijg ik de melding "de opdracht of actie record verwijderen is momenteel niet beschikbaar"... dat is dus niet echt het reproduceren van de fout denk ik? Ik krijg ook geen melding over 'no current record' meer en er wordt dan ook niets verwijderd.

[ Voor 7% gewijzigd door Millennyum op 09-03-2005 13:15 ]


  • Mystiqes
  • Registratie: Juli 2002
  • Laatst online: 26-12-2022
Hmm, apart, weet ik zo niet. De standaard verwijderen functie van Access werkt ook niet:?

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Nee, dat geeft hetzelfde resultaat...

  • Force
  • Registratie: Januari 2000
  • Laatst online: 31-07-2023

Force

Kan iemand ff me neus afvegen?

heb het ook even geprobeerd met als recordsource SELECT * FROM......... en ook dan geen probleem.

probeer dit eens om te kijken hoe hij door de code loopt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub Button_VerwijderOnderwerp_Click()
On Error GoTo Err_Button_VerwijderOnderwerp_Click

    msgbox "ik ga verwijderen"

    DoCmd.RunCommand acCmdDeleteRecord

    msgbox "ik heb zojuist verwijderd"        

Exit_Button_VerwijderOnderwerp_Click:
 msgbox "exit button, dus exit sub"   
 Exit Sub

Err_Button_VerwijderOnderwerp_Click:                                
    msgbox "error code word uitgevoerd"

    MsgBox Err.Description
    Resume Exit_Button_VerwijderOnderwerp_Click
    
End Sub


welke boodschappen krijg je allemaal ?

Of haal alles inclusief err_button tot end sub eens weg (end sub laten staan natuurlijk). En regel 2 on_error ook.

[ Voor 18% gewijzigd door Force op 09-03-2005 20:40 ]

Leven is als een pijpkaneel, iedereen zuigt eraan en krijgt zijn deel.


  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Als ik klik op de verwijderbutton zie ik achtereenvolgens de volgende meldingen:

"ik ga verwijderen"
"weet u zeker dat... blabla" -> ja
"error code word uitgevoerd"
"no current record"
"exit button, dus exit sub"
De record is nu toch verwijderd.

Als ik het error-handling stukje verwijder, dan geeft hij een runtime error met ook de mededeling 'no current record'. Bij de foutopsporing wordt dan de regel "DoCmd.RunCommand acCmdDeleteRecord" gehighlight.

  • Force
  • Registratie: Januari 2000
  • Laatst online: 31-07-2023

Force

Kan iemand ff me neus afvegen?

Wat gebeurd er als je met deze code verwijderd, welke regel geeft dan de fout?

code:
1
2
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

Leven is als een pijpkaneel, iedereen zuigt eraan en krijgt zijn deel.


  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
De tweede.

Ik kon overigens nergens in de helpfile een lijst vinden van waar deze cijfers precies naar verwijzen...

[ Voor 13% gewijzigd door Millennyum op 11-03-2005 13:32 ]


  • Ecto2002
  • Registratie: Juni 2002
  • Laatst online: 01-06 14:13
Ik heb hier even aan het testen geweest en krijg net hetzelfde in Access2002, maar enkel wanneer ik het laatste record van de recordset verwijder.

Blijkbaar een bugje in Access2002.

Beste wat ik je kan voorstellen is een klein trukje programmeren om het probleem te vermijden :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Command3_Click()
On Error GoTo err_xx

    DoCmd.RunCommand acCmdDeleteRecord

exit_xx:
    Exit Sub

err_xx:
    If Err.Number = 3021 Then
        DoCmd.GoToRecord acActiveDataObject, , acPrevious
    Else
        MsgBox Err.Number & " : " & Err.Description
    End If
    Resume exit_xx

End Sub


Effe niet letten op het slordige programmeerwerk aub ;)

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Ja, dat is wel een oplossing die ik in gedachten ga houden.
Het probleem is alleen dat ik de melding ook krijg wanneer het record dat ik verwijder niet het laatste record is. Ik wil eerst zeker weten dat het een bug is en niet een probleem vanwege een fout van mijn kant, voordat ik de foutmelding onderdruk...

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
*KICK*

Force & co hebben het blijkbaar opgegeven... iig bedankt voor de hulp jongens! Ik word er nu zelf ook een beetje moedeloos van :'(

Iemand die nog ideeën heeft?

[ Voor 4% gewijzigd door Millennyum op 15-03-2005 08:09 ]


  • Boss
  • Registratie: September 1999
  • Laatst online: 19:01

Boss

+1 Overgewaardeerd

Aan de hand van de code hier kan ik er niet helemaal uitkomen wat er mis zou kunnen gaan. Wordt er nog andere code uitgevoerd in het formulier?

Kan je me anders even een (gestripte, leeggemaakte) versie van je db mailen, dan kan ik er even mee spelen?

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.


  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Done.. alvast ontzettend bedankt voor de moeite!

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Overigens kwam ik net ook het volgende probleem tegen: ik kan geen gebeurtenisprocedure aanmaken die volgt op het wisselen tussen records... Volgens de helpfile en deze link zou ik de gebeurtenisprocedure Exit / Verlaten voor een formulier moeten kunnen gebruiken. Maar die komt dus niet in het lijstje in het eigenschappenvenster voor. Zou dit misschien met mijn probleem samenhangen? 'Bij aanwijzen' staat er wel gewoon bij.

[ Voor 5% gewijzigd door Millennyum op 15-03-2005 16:16 ]


  • Boss
  • Registratie: September 1999
  • Laatst online: 19:01

Boss

+1 Overgewaardeerd

Bij het aanwijzen van een nieuw record vindt de gebeurtenis 'Bij aanwijzen' plaats.
- als er wijzigingen zijn in het record dat je verlaat vindt eerst nog 'voor bijwerken' en 'na bijwerken' plaats.

Heb net even naar je database gekeken. Ik kan de fout hier thuis niet reproduceren onder Access 2003. Zal morgen even onder 2002 testen, kijken wat 'ie daar doet.
Wat ik heb gedaan: paar nieuwe records aangemaakt in het onderwerpen formulier en in het stukken formulier. Daarna via de knoppen weer verwijderd. Ik krijg geen foutmeldingen, behalve de 'weet u zeker dat ...' waarschuwing. Welke stappen volg jij (vanaf het opstarten van de database) voordat je de fout krijgt?

Overigens nog wel wat andere tips voor je database:
- zet alle opzoekwaarden (bijvoorbeeld afdeling) in aparate tabellen met 2 kolommen: 1 ID kolom (autonummer) en 1 kolom met de omschrijving. Het nummer sla je op in je 'hoofdtabel' en dat koppel je dan aan de lookup-tabel. Is qua data wat efficienter en als je een keer een nieuwe afdeling wilt aanmaken hoef je niet alle formulieren aan te passen, maar alleen die opzoektabel.
- gebruik geen spaties, ? ! @ # etc in veldnamen. Kan problemen geven bij het maken van queries.
- Gebruik maskers op datumvelden, zodat het voor de gebruiker duidelijk is wat voor data hij moet invoeren. Is nl niet overal duidelijk dat er een datum in een veld moet.

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.


  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Boss schreef op dinsdag 15 maart 2005 @ 22:51:
Bij het aanwijzen van een nieuw record vindt de gebeurtenis 'Bij aanwijzen' plaats.
- als er wijzigingen zijn in het record dat je verlaat vindt eerst nog 'voor bijwerken' en 'na bijwerken' plaats.
Dat weet ik, maar volgens de help zou er tevens het volgende moeten gebeuren:
U verplaatst de focus naar een andere record:
VoorBijwerken (formulier) ? NaBijwerken (formulier) ? Verlaten (besturingselement2) ? FocusVerloren (besturingselement2) ? Verlaten (formulier) ? Aanwijzen (formulier)
Dus ook de event 'Verlaten'.
Heb net even naar je database gekeken. Ik kan de fout hier thuis niet reproduceren onder Access 2003. Zal morgen even onder 2002 testen, kijken wat 'ie daar doet.
Wat ik heb gedaan: paar nieuwe records aangemaakt in het onderwerpen formulier en in het stukken formulier. Daarna via de knoppen weer verwijderd. Ik krijg geen foutmeldingen, behalve de 'weet u zeker dat ...' waarschuwing. Welke stappen volg jij (vanaf het opstarten van de database) voordat je de fout krijgt?
Start database > blader wat in de onderwerpen records > klik op nieuwe record > blader al dan niet wat in de onderwerpen records > klik op de verwijder record knop
Misschien toch een bug in Access 2002 dan?
Overigens nog wel wat andere tips voor je database:
- zet alle opzoekwaarden (bijvoorbeeld afdeling) in aparate tabellen met 2 kolommen: 1 ID kolom (autonummer) en 1 kolom met de omschrijving. Het nummer sla je op in je 'hoofdtabel' en dat koppel je dan aan de lookup-tabel. Is qua data wat efficienter en als je een keer een nieuwe afdeling wilt aanmaken hoef je niet alle formulieren aan te passen, maar alleen die opzoektabel.
- gebruik geen spaties, ? ! @ # etc in veldnamen. Kan problemen geven bij het maken van queries.
- Gebruik maskers op datumvelden, zodat het voor de gebruiker duidelijk is wat voor data hij moet invoeren. Is nl niet overal duidelijk dat er een datum in een veld moet.
Ga ik doen! Thnx!! :*

[ Voor 5% gewijzigd door Millennyum op 16-03-2005 11:30 ]


  • Boss
  • Registratie: September 1999
  • Laatst online: 19:01

Boss

+1 Overgewaardeerd

Start database > blader wat in de onderwerpen records > klik op nieuwe record > blader al dan niet wat in de onderwerpen records > klik op de verwijder record knop
Misschien toch een bug in Access 2002 dan?
Heb het hier zojuist gedaan in Access 2002. Geen probleem, geen meldingen gekregen. Heb je alle service packs erop staan? Ook de laatste JET drivers?
Dus ook de event 'Verlaten'.
Dit is geen event van het formulier, maar van een element (textbox bijvoorbeeld).

[ Voor 6% gewijzigd door Boss op 16-03-2005 14:49 ]

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.


  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Boss schreef op woensdag 16 maart 2005 @ 14:48:
[...]

Heb het hier zojuist gedaan in Access 2002. Geen probleem, geen meldingen gekregen. Heb je alle service packs erop staan? Ook de laatste JET drivers?
Ik zit hier op mijn werk, dus ik mag aannemen dat onze systeembeheerder wel SP's heeft geinstalleerd... Wat zijn JET drivers?
Access wordt hier overigens vanaf een centrale server geopend.

Ik zal mijn database vanavond eens naar huis mailen, kijken wat ik daar voor versie heb en of ik daar ook een foutmelding krijg.
Dit is geen event van het formulier, maar van een element (textbox bijvoorbeeld).
Ja dat leek mij ook, maar in de helpfile staat dat het ook voor een formulier geldt. Kijk maar eens, erachter staat tussen haakjes waar de event betekking op heeft.
Maar goed, misschien is het ook gewoon een fout in de help-file :X

[ Voor 9% gewijzigd door Millennyum op 16-03-2005 15:24 ]


  • Boss
  • Registratie: September 1999
  • Laatst online: 19:01

Boss

+1 Overgewaardeerd

hey, verrek! ook een verlaten bij formulier... zal wel een foutje zijn!

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.


  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Niet te geloven... bij mij thuis heb ik zo te zien ook Access 2002 en daar krijg ik GEEN foutmelding met exact dezelfde database... :? |:(

Dus blijkbaar is er iets mis met de installatie op mijn werk ofzo?
Wat waren die JET drivers nou voor iets?

  • Boss
  • Registratie: September 1999
  • Laatst online: 19:01

Boss

+1 Overgewaardeerd

JET is de driver 'achter' het Access data-formaat. Daarin worden dingen als record locking, replicatie en queries afgehandeld. Hoewel ik niet denk dat dat hier het probleem is.

Begrijp ik nu goed dat je via een soort thin-client werkt? Je hebt dus niet echt Access op je computer staan, maar werkt vanaf een server?

Bestaat de mogelijkheid om eens kijken wat er gebeurt als je het programma op de server zelf start, dus niet op je client? Daar zouden nl ook best rare dingen door kunnen gebeuren...

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.


  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Ja, idd een thin-client. Ik weet er verder niet veel vanaf, maar ik kan de ICT-dude wel eens lastig gaan vallen.
Er zijn inderdaad wel vaker problemen hier met het netwerk; Access hangt regelmatig vast en ook Perfect View (onze database met contactinfo / voor postregistratie, schijtprogramma overigens) loopt niet geheel lekker.

In ieder geval iedereen bedankt voor alle moeite _/-\o_ , ik kan weer rustig slapen nu ik weet dat het geen domme fout van mij is en mijn database ook niet al te rampzalig was opgezet ;)
Het is nu een probleem van mijn werk geworden... als ze de database willen gaan gebruiken moeten ze ook maar het systeem op orde krijgen :)

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Heb even wat getest met onze ICT functionaris en hij heeft het met twee versies van Access 2002 geprobeerd (op zijn eigen compu, als administrator). Bij de ene (10.6501.6626 SP3) kwam de foutmelding en de andere (lagere, iets van 10.2... SP2) niet. Blijkbaar een heel specifiek probleempje, ik ga er maar vanuit dat het een bug is en ga de foutmelding onderdrukken.

Overigens vond ik het volgende in de Microsoft Knowledge base over het niet beschikbaar zijn van OnRecordExit, terwijl het wel in de helpfile vermeld staat: http://support.microsoft....6477&spid=1266&sid=global
Pagina: 1