Naar vorig bekeken record

Status
Niet open voor verdere reacties.

gregortman

Gebruiker
Lid geworden
30 nov 2005
Berichten
148
Beste mensen,

Ben al een half uurtje aan het zoeken maar kan het niet vinden.

Ik heb een 2003 acces klanten db, nu heb ik het volgende:

Als ik bezig ben met een klant: bijv gegevens van klant "H" en klant "q" belt mij met een vraag over zijn gegevens, dan zoek ik klant "q" op en handel de vraag af.

Vervolgens moet ik dus via de "keuzelijst met invoervak" weer zoeken naar klant "H" en dan weer verdergaan met deze klant.

Is er een manier of code om te zorgen dat ik direct terugga naar de laatst behandelde record??.

Ik bedoel dus niet :

Code:
Private Sub Volgende_klant_Click()
On Error GoTo Err_Volgende_klant_Click

    DoCmd.GoToRecord , , acNext

Exit_Volgende_klant_Click:
    Exit Sub

Err_Volgende_klant_Click:
    MsgBox Err.Description
    Resume Exit_Volgende_klant_Click
    
End Sub

Deze twee varianten voor vooruit en achteruit heb ik in mijn database zitten maar, voldoen niet aan mijn vraag.

Moet ik hiervoor een aparte tabel maken die opslaat welke records ik heb bezocht of .........

Ik hoor het graag van jullie

Met vriendelijke groet

Gregor
 
Laatst bewerkt:
Je kunt de recordID van de huidige klant wegzetten in een variabele, en die vullen bij de keuzelijst (of hoe je dan ook het andere record opzoekt). Vervolgens gebruik je dezelfde code om de vorige klant weer op te zoeken. Een voorbeeldje:

Code:
Private Sub cboZoekKlant_AfterUpdate()
' De record zoeken die overeenkomt met het besturingselement
Dim rs As Object

    iHuidig = Me.KlantID
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[KlantID] = " & Me![cboZoekKlant]
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    Me.cboZoekKlant = ""
End Sub

Code:
Private Sub cmdVorigeRecord_Click()
' De record zoeken die overeenkomt met het besturingselement
Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[KlantID] = " & iHuidig
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
 
terug naar eerder gekozen record

Beste Octafish,

heb gedaan wat je hebt doorgeven maar krijg de volgende fout melding:

Code:
Private Sub Achternaam_zoeken_AfterUpdate()
     ' De record zoeken die overeenkomt met het besturingselement
Dim rs As Object
    
    iHuidig = Me.ID
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[ID] = " & Me![Achternaam zoeken]
    Me.Bookmark = rs.Bookmark
    Me.Achternaam_zoeken = ""
End Sub

Private Sub Achternaam_zoeken_DblClick(Cancel As Integer)
Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[ID] = " & iHuidig ( deze regel is geel en dus zit hier de fout)
    Me.Bookmark = rs.Bookmark
End Sub

Ik heb beide opdrachten in de keuzevak geplaatst onder after update en dubbelklick(ook geprobeerd bij click en enter).

Heb ik de code op de verkeerde plaats gezet??

ik hoor het graag

Groet

Gregor
 
Laatst bewerkt:
Ik was één (cruciaal) woordje vergeten in mijn antwoord: algemeen. De eerste zin had moeten luiden: "Je kunt de recordID van de huidige klant wegzetten in een algemene variabele".
Daarom zie je in de codevoorbeelden ook geen declaratie van de variabele iHuidig. Je moet bovenin je code venster deze regels opnemen:

Code:
Option Compare Database
Dim iHuidig As Long

De eerste regel staat er als het goed is al, want dat doet Access automatisch op een modulepagina. Door de variabele aan het begin van de pagina te zetten, kun je hem in de ene procedure vullen, en in een andere weer uitlezen. Als je een variabele binnen een procedure zelf declareert (of niet, zoals jij waarschijnlijk gedaan hebt) dan verliest die variabele zijn waarde als de procedure wordt afgesloten. Roep je de variabele in een andere variabele weer aan, dan is hij leeg, en krijg je een foutmelding.

Excuses derhalve voor de verwarring :)
 
naar vorige record

Beste Octafish,

halve weekend bezig geweest om het aan de praat te krijgen, het is me alleen niet gelukt

wat ik tot nu toe heb gedaan is het volgende:

in de keuze lijst onder afterupdate en dubbelclik :

Code:
Public Sub Achternaam_zoeken_AfterUpdate()
     ' De record zoeken die overeenkomt met het besturingselement
Dim rs As Object

    iHuidig = Me.ID
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Id] = " & Me![Achternaam zoeken]
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    Me.Achternaam_zoeken = ""
End Sub

Public Sub Achternaam_zoeken_DblClick(Cancel As Integer)
Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Id] = " & iHuidig( deze geeft hij als fout , dus hij kan de variabele niet vinden )
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Vervolgens een module aangemaakt met de volgende code:

Code:
Option Compare Database

Dim iHuidig As Long
Dim rs As Object

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

    iHuidig = Me.ID
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Id] = " & Me![Achternaam zoeken]
    Me.Bookmark = rs.Bookmark
    Me.Achternaam_zoeken = ""
End Sub

Sub Vorige_record()

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Id] = " & iHuidig
    Me.Bookmark = rs.Bookmark
End Sub

Ben er 2 jaar niet meer gesleuteld aan mijn database, dus ik moet weer ff op de rails gezet worden.

Ik hoor het graag van je

Met vriendelijke groet

Gregor
 
Laatst bewerkt:
Zou je (liefst met terugwerkende kracht op de vorige berichten) je code willen opmaken met de CODE knop (knop #) Niet alleen is een halve meter code op deze manier niet zo jofel lezen, mijn muisje begint ervan te stomen ;)
Wat betreft je probleem: volgens mij ben je iets te enthousiast aan het kopiëren geweest; het declareren van de algemene variabele doe je op dezelfde module als waar de gebeurtenissen van de knop en de keuzelijst staan. Ook daar staat bovenin Option Compare Database. Het herhalen van de code in een nieuwe module geeft alleen maar extra problemen, omdat je in een losse module geen ME kunt gebruiken; ME slaat namelijk op het actieve object, i.c. het formulier waar de objecten op staan. Je kunt met ME dus alleen objecten van het formulier waar de code op staat aanspreken. De module kan dus weg.
 
Naar vorige record gaan

beste octafish,

helemaal toppie,
precies wat ik wilde het werkt, scheelt weer een hoop getik

Thanks:d
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan