doorlopende nummering

Status
Niet open voor verdere reacties.
Ik ben nog even aan het zoeken geweest in andere onderwerpen en forums en kwam ik het één en ander tegen over het benoemen van een recordset en .movelast. Naar aanleiding daarvan heb ik mijn code als volgt uitgebreid, maar je raad het al, hij werkt nog steeds niet zoals ik wil. Kan iemand mij vertellen waar de fout zit?

Private Sub Factureren_Click()

Dim iCount As Integer
Dim qdf As QueryDef
Dim rst As Recordset

Do
DoCmd.SetWarnings (WarningsOff)
DoCmd.OpenQuery "Factureren1", , acEdit
DoCmd.SetWarnings (WarningsOn)

Set qdf = Projectdatabase.QueryDef("Factureren1_voorlquery")
Set rst = qdf.OpenRecordset(dbOpenDynaset)
rstFacturen.MoveLast
iCount = rst.RecordCount
DoCmd.Close

Loop While iCount > 0

End Sub
 
Hier misschien:

rstFacturen.MoveLast --> rst.MoveLast
 
Ja, dat is er in ieder geval één, was ik nog vergeten aan te passen
Maar als ik de code laat lopen, stopt hij al bij de regel:

Set qdf = Projectdatabase.QueryDef("Factureren1_voorlquery")

Moet ik misschien eerst de database nog apart benoemen, of heeft het iets te maken met dat ik er DAO recordset van moet maken, ben ik ook een aantal keer tegengekomen?
 
Probeer deze eens:
Set qdf = CurrentDB.QueryDef("Factureren1_voorlquery")

Of:
Private Sub Knop3_Click()
Dim sTabel As String
sTabel = "[Naam van de tabel]"
MsgBox AdoRecordsetCount(sTabel)
End Sub

Code:
Function AdoRecordsetCount(Tabel As String) As Long
Dim rs As New ADODB.Recordset
Dim strSql As String
    
    strSql = "SELECT * FROM " & Tabel
    rs.Open strSql, CurrentProject.Connection, adOpenStatic
    rs.MoveFirst
    rs.MoveLast
    AdoRecordsetCount = rs.RecordCount
    rs.Close
    Set rs = Nothing
End Function
 
Met het vervangen van projectdatabase door CurrentDB en het toevoegen van een s aan QueryDefs ben ik weer één stapje verder gekomen. Nu komt hij tot de volgende stap, waar hij dan met de melding komt dat hij de query niet uit kan voeren vanwege ambiguous outer joins. En dat vind ik dus heel gek, want als ik in de code zet DoCmd.OpenQuery "Factureren1_voorlquery", , acEdit dan opent hij gewoon.

Dit is trouwens iets wat vaker tegenkom sinds ik Office 2007 gebruik, dat hij als ik vanuit de ontwerpmodus een query draai deze foutmelding geeft, terwijl hij dat niet doet als ik de query start vanuit het navigation pane.
En voor zover ik kan zien is er in deze query ook geen sprake van ambiguous outer joins. Het zijn twee tabellen die via twee velden allebei dezelfde kant op aan elkaar gelinkt zijn.
 
Yes, het werkt!!

Oké, probleem van de ambiguous outer joins opgelost, ik heb de joins een keer verwijderd en opnieuw gemaakt in de query en nu doet hij het wel.

Bleef hij echter weer steken op de volgende stap rst.MoveLast, wat komt doordat de RecordCount = 0, maar ook dat probleem heb ik alweer op weten te lossen door de stap rst.MoveLast er tussen uit te halen, want in mijn geval doet het er helemaal niets hoeveel records er zijn, ik wil alleen maar weten dat er minimaal 1 record is. En nu werkt het dus, hieronder nog even de volledige code:

Private Sub Factureren_Click()

Dim iCount As Integer
Dim qdf As QueryDef
Dim rst As Recordset

Do
Set qdf = CurrentDb.QueryDefs("Factureren1_voorlquery")
Set rst = qdf.OpenRecordset(dbOpenDynaset)
iCount = rst.RecordCount
Set rst = Nothing

DoCmd.SetWarnings (WarningsOff)
DoCmd.OpenQuery "Factureren1", , acEdit
DoCmd.SetWarnings (WarningsOn)

Loop While iCount > 0

End Sub

Zowel Octafish en Tardis bedankt voor het meedenken en ondanks dat ik nog steeds denk dat jullie beide mij een panklare oplossing hadden kunnen bieden, ben ik blij dat jullie dat niet gedaan hebben, want er is weer een stukje van mijn "Waar-te-beginnen-in-VBA-fobie afgebrokkeld. Achter de schermen heb ik namelijk ook een aantal andere stukjes codes ontwikkeld adhv van jullie antwoorden. So Spanks!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan