Record navigatie in gefilterd formulier

Status
Niet open voor verdere reacties.

danny88

Gebruiker
Lid geworden
14 apr 2011
Berichten
70
Heb een doorlopend formulier met mijn debiteuren.
Als ik op een record dubbelklik, wordt van deze debiteur de debiteurenkaart geopend.

Nu staat deze code onder mijn knop op mijn debiteurenkaart

Code:
Private Sub cmdVorige_Click()
Dim lngResult As Long
    If Me.Dirty Then
        lngResult = MsgBox("Wilt u de wijzigingen opslaan?", vbYesNo, "Opslaan?")
        If lngResult = vbNo Then
            Me.Undo
        End If
    End If
Me.FilterOn = False
DoCmd.GoToRecord , , acPrevious

End Sub

Graag wil ik op de debiteurenkaart naar een volgend of vorige klant toe kunnen in plaats van eerst naar mijn debiteurenoverzicht en vervolgens weer naar een nieuwe klant.

Alleen omdat het formulier (debiteurenkaart) gefilterd is, werkt DoCmd.GoToRecord , , acPrevious niet.
Heb het volgende toegevoegd Me.FilterOn= False, nu wordt het filter wel opgeheven, alleen begint hij bij het begin van de record.

En ik wil graag als ik bij debnr 1016 ben dat hij naar 1015 of 1017 gaat.
Iemand een idee om dit op te lossen?
Alvast Bedankt!
 
Laatst bewerkt:
Je zou dus, voordat je het filter uitzet, eerst het huidige recordnummer moeten opslaan in een variabele, vervolgens het filter uitzetten, en daarna het record weer opzoeken. Daarna kun je Previous en Next doen.
 
Als het goed is onthoud hij nu het debiteurID met de onderstaande code.
TempVars.Add "Klantnr", Me.DebiteurID

Alleen hoe kom je dan weer in het record van het onthouden debiteurid?
Met DoCmd.GoToRecord kan je volgens mij niet naar een specifiek record toe.
 
Je kunt i.p.v. de 'debiteurenkaart' te openen via het Where argument, het OpenArgs argument gebruiken. Daarna in de Onopen-gebeurtenis van de 'debiteurenkaart' het betreffende 'DebiteurID' opzoeken. De recordset van de 'Debiteurenkaart' wordt daardoor niet gefilterd, en kun je zonder meer naar een vorig of volgend record.
In het bijgaande voorbeeld zie je hoe er zoiets zou kunnen uitzien. Voor de code onder de navigatieknoppen kun je eigen code gebruiken.
 

Bijlagen

  • dbNav.zip
    25,4 KB · Weergaven: 57
Laatst bewerkt:
Bedankt voor je reactie, heb het toegepast en het werkt.

Alleen snap ik de code niet helemaal, kan je daarover iets meer uitleggen.
Wat ik begrijp:
Je plaatst het debiteurID van het debiteurenoverzicht in het geheugen (OpenArgs).

(Debiteurenkaart)
If Nz(Me.OpenArgs, 0) > 0 Then Als de waarde groter is dan nul, dan
With Me.RecordsetClone Graag stukje uitleg
.FindFirst "DebiteurID=" & Me.OpenArgs Graag stukje uitleg, DebiteurID=het nummer uit het geheugen
Me.Bookmark = .Bookmark Graag stukje uitleg
End With
End If


OctaFish, wil je me misschien nog wat op weg helpen met jouw oplossing?
Wil graag begrijpen wat ik doe, in plaats van kopieeren en plakken.
 
De door mij gebruikte code is standaard, en wordt in Access VBA-help prima uitgelegd.
Ik kan dat hier dunnetjes overdoen met wat wollige taal, maar ik verwijs toch liever naar de uitleg van Microsoft:
Recordset:
OpenArgs:
Bookmark:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan