|  
                                             
	Hallo, 
	ich habe ein Problem. Ich will mit DAO ein Recordset füllen, die Daten ändern und sie in die Datenbank mit Update schreiben. Dazu suche ich erst den Datensatz, verändere ihn und schreibe ihn zurück. Bei der suche hängt es schon, dabei nehme ich die suche die schon funktioniert und füge praktisch nur den änderungspart an. 
	  
Sub aendern()
    Dim db As DAO.Database
    Dim db_rs As DAO.Recordset
    Dim db_rs_suche As DAO.Recordset
    Dim sqlQuery As DAO.QueryDef
    Dim db_name As String
    Dim suchPara As String
    Dim i As Integer
    Dim j As Integer
    
    tbl = ThisWorkbook.Sheets("DMS").cboxTbl.Value
    tbl = Right(tbl, Len(tbl) - InStrRev(tbl, " "))
    
    db_name = ThisWorkbook.Path + "\" + "FestnetzDB"
    Set db = DAO.OpenDatabase(db_name)
    
    Set db_rs = db.OpenRecordset(tbl, dbOpenDynaset)
    
    With ActiveWorkbook.Sheets("DMS")
        For i = 3 To 30
            If .Cells(3, i).Value <> "" And .Cells(4, i).Value <> "" Then
                suchPara = suchPara & .Cells(3, i).Value & " "
                If .Cells(4, i).Value <> "" Then
                    If suchPara = "ID " Then
                        suchPara = suchPara & "= " & .Cells(4, i).Value & " AND "
                    Else
                        suchPara = suchPara & "LIKE '*" & .Cells(4, i).Value & "*' AND "
                    End If
                End If
            End If
        Next
    End With
    
    suchPara = Left(suchPara, Len(suchPara) - 5)
   
    Set db_rs_suche = db_rs.OpenRecordset
    
    For Each existQuery In db.QueryDefs
        If existQuery.Name = "spezSuche1" Then
            db.QueryDefs.Delete "spezSuche1"
            Exit For
        End If
    Next existQuery
    
    Set sqlQuery = db.CreateQueryDef("spezSuche1", "SELECT * FROM " & tbl & " WHERE " & suchPara)
    Set db_rs_suche = sqlQuery.OpenRecordset()
    MsgBox db_rs_suche(2)
    
    'Bis hier stimmt er komplett überein mit der normalen suche also "SELECT * FROM tblMa WHERE ID = 2" o.ä.
    'und dort klappt es auch alles. das recordset in in der suche normal gefüllt und muss nur ausgelesen werden
    db_rs_suche.MoveFirst
    Do While Not db_rs_suche.EOF
        db_rs_suche.Edit
        db_rs_suche!Name = Sheets("DMS").Range("D4")
        db_rs_suche!Nachname = Sheets("DMS").Range("E4")
        db_rs_suche!A_kennung = Sheets("DMS").Range("F4")
        db_rs_suche!Email = Sheets("DMS").Range("G4")
        db_rs_suche!C_kennung = Sheets("DMS").Range("H4")
        db_rs_suche!Ma_nr = Sheets("DMS").Range("I4")
        db_rs_suche!Vp_nr = Sheets("DMS").Range("J4")
        db_rs_suche!Vo_nr = Sheets("DMS").Range("K4")
        db_rs_suche!Segment = Sheets("DMS").Range("L4")
        db_rs_suche!Teamleiter = Sheets("DMS").Range("M4")
        db_rs_suche!Rechte = Sheets("DMS").Range("N4")
        db_rs_suche.Update
        
    Loop
    'close the objects
    db.QueryDefs.Delete "spezSuche1"
    db_rs_suche.Close
    db_rs.Close
    sqlQuery.Close
    db.Close
    
    'destroy the variables
    Set db_rs = Nothing
    Set db_rs_suche = Nothing
    Set sqlQuery = Nothing
    Set db = Nothing
    
    
End Sub
	  
	  
	die Fehlermeldung die hier erscheint sobald ich auf das db_rs_suche zugreifen möchtge lautet: "Kein aktueller Datensatz" 
	  
	  
     |