Update een tabel met de naam van de tabel in een variabele

Status
Niet open voor verdere reacties.

Sytse1

Gebruiker
Lid geworden
9 aug 2007
Berichten
584
Office versie
miDer
Een tabel wordt gemaakt krijgt de naam van een medewerker.
Deze tabel moet naderhand geupdated met een getal die van een form wordt gehaald.
De tabel die is gemaakt werkt uitstekend.
In de vba update zit een fout. Wellicht dan iemand mij vertellen waar de fout zit.
B.v.d.
Sytse
Code:
    Dim dbs As Database
    Dim rst As Recordset
    Dim strSQL As String
    Dim NmTbl As String
    NmTbl = Forms!F_mw!Naam                  [U]'In de variabele NmTbl wordt de naam van de tabel geplaatst[/U]
        Set dbs = CurrentDb()
    strSQL = "Select [IdMw] from [NwTbl]"   [U]'Volgens mij gaat het hier fout de variabele NwTbl wordt niet uitgelezen met de naam van de tabel[/U]
    Set rst = dbs.OpenRecordset(strSQL)     [U]'De foutmelding van Acces komt van deze regel[/U]
       While (Not (rst.EOF))
       rst.Edit
        rst!IdMw = [Formulieren]![F_mw]![IdMw]
         rst.Update
           rst.MoveNext
     Wend
 
Je kunt met heel wat minder variabelen af.
Code:
Dim rst As DAO.Recordset
    
    Set rst = CurrentDb.OpenRecordset("Select [IdMw] FROM " & Me.Naam)
    With rs
        If Not .EOF = .BOF Then
            Do While Not .EOF
                .Edit
                !IdMw = Me.IdMw
                .Update
                .MoveNext
            Loop
        End If
    End With
 
OctaFish weer geweldig bedankt voor deze vereenvoudiging.
Het werkt alleen er wordt niet geupdated.
Het veld IdMw blijft leeg.
Vanaf If Not .EOF = .BOF Then
Gaat het meteen naar end if en wordt er niet geupdated.
Ik heb de If Not .EOF = .BOF en end if weggehaald en nu wordt er wel geupdated.
Is If Not .EOF = .BOF wel noodzakelijk?
Sytse
 
Laatst bewerkt:
Waarschijnlijk wordt de recordset niet correct ingelezen, dat gebeurt wel eens bij DAO. Access weet pas hoeveel records er in een recordset zitten, als de cursor eerst op het eind is geweest. Meestal doe ik dan ook dit:
Code:
    Set rst = CurrentDb.OpenRecordset("Select [IdMw] FROM " & Me.Naam)
    With rst
        .MoveLast
        .MoveFirst
        If Not .EOF Then
            Do While Not .EOF
                .Edit
                !IdMw = Me.IdMw
                .Update
                .MoveNext
            Loop
        End If
    End With
 
Laatst bewerkt:
Wederom bedankt.
Voor degene die ook je code gebruikt nog een kleine correctie. Achter With rs moet nog een t.
 
Heb je gelijk in, ik gebruik de twee (rs en rst) nog wel eens tegelijk. Of dan de één, dan de ander. Mits consequent, is er niks aan de hand :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan