Recordset .delete geeft foutmelding

Status
Niet open voor verdere reacties.

johhnnyboy

Gebruiker
Lid geworden
18 nov 2007
Berichten
142
Hoi,

Onderstaande code staat mij niet toe de .delete actie uit te voeren. Kan iemand mij uitleggen waarom niet?

Code:
strSQL = "SELECT * FROM tbl"            
                
           Set rsImportTable = dbs.OpenRecordset(strSQL, dbOpenDynaset)

     RecCount = FindRecordCount(rsImportTable)
    
    rsImportTableOpen = True
    
    If RecCount > 0 Then
    
    Set rsTable = dbs.OpenRecordset(Vartbl, dbOpenDynaset, dbAppendOnly)
                    
        rsTableOpen = True
                    
        Set TableDef = dbs.TableDefs(Vartbl)

        With rsImportTable
        
            Do While Not rsImportTable.EOF
            
                rsTable.AddNew
                
                rsTable("Administratienummer").Value = rsImportTable("Administratienummer").Value

rsTable.Update
                    
                CounterSucces = CounterSucces + 1
                    
                'rsImportTable.Delete
             
                rsImportTable.MoveNext
                
            Loop
            
        End With

    End If

De Vars in de code kloppen allemaal alleen loopt de code dus vast op regel rsImportTable.Delete. Zonder comma out werkt het.
De foutmelding die ik krijg is dat het object alleen lezen is.

Voor de zekerheid nog de functie FindRecordCount

Code:
Function FindRecordCount(rstRecords As DAO.Recordset) As Long
    On Error GoTo Err_FindRecordCount

    If rstRecords.EOF Then
    
        FindRecordCount = 0
        
    Else
    
        rstRecords.MoveLast
        FindRecordCount = rstRecords.RecordCount
        rstRecords.MoveFirst
        
   End If

Exit_FindRecordCount:

Exit Function


Err_FindRecordCount:
   
   Call fnc_logerror(Err.Number, Err.Description, "FindRecordCount()", "", False)
   Resume Exit_FindRecordCount
   
End Function
 
Ik zie dat je gek bent op lege regels; ik niet, want nu moet ik nodeloos scrollen voor een stukkie code dat makkelijk in het standaardvenster had gepast zonder die lege regels. Bovendien maakt het de leesbaarheid er niet beter op.
Je gebruikt een techniek die met de grootst mogelijke hoeveelheid code een hele simpele actie uitvoert. Het kan een behoorlijk stuk simpeler:

Code:
    Vartbl = "tblImport"
    tbl = "tbl"
    strSQL = "INSERT INTO " & Vartbl & " ( Administratienummer ) SELECT [Administratienummer] FROM " & tbl
    CurrentDb.Execute strSQL, dbFailOnError
    strSQL = "DELETE FROM " & tbl
    CurrentDb.Execute strSQL, dbFailOnError
En dan kun je ook nog behoorlijk wat lege regels toevoegen ;)
 
Hoi,

Heb je oplossing geprobeerd en gaat prima!
Zal me code even herschrijven naar jouw oplossing.

Dank!
 
Overigens doet jouw code het verder prima.... ik krijg althans geen foutmeldingen, en het record wordt gewoon verwijderd. Al blijft het een nogal gecompliceerde werkwijze :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan