Thema Datum  Von Nutzer Rating
Antwort
Rot recordset bleibt leer
19.09.2015 08:35:05 d9C
Solved

Ansicht des Beitrags:
Von:
d9C
Datum:
19.09.2015 08:35:05
Views:
1140
Rating: Antwort:
 Nein
Thema:
recordset bleibt leer

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"

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot recordset bleibt leer
19.09.2015 08:35:05 d9C
Solved