VBA ADO - Problem mit dem Recordset

TaylorDorton

Mitglied
Hallo,

nun Ihr habt mich alle überzeugt,
DAO zu vergessen und mich auf ADO zu Konzentrieren.
Der Vorteil wird mir so langsam aber sicher klar.
Nun bin ich inzwischen so weit, eine Connection zu erstellen,
und auch tatsächlich zu Verstehen was ich dort tue.
Ist mir Lieber als blind zu Kopieren.

Jetzt tue ich mich aber ein wenig schwer mit dem Recordset,
ich befürchte das dort der Fehler liegt und mein Recordset leer ist.
Vielleicht könnt Ihr mir noch einmal Helfen und mir erläutern,
warum meine Variable strEintrag die einen Eintrag im Recordset darstellt leer ist?

Greetz Taylor

Code:
Sub DBConnection()
    Dim con As New ADODB.Connection
    Dim RS As ADODB.Recordset
    Dim strEintrag As String
    Dim conStr As String

'Verbindung Erstellen
    conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=M:\DATEN\test\db1.mdb"
    con.Open conStr
    
'Recordset erstellen & Zugriff auf Tabelle
    Set RS = New ADODB.Recordset
    RS.Open "TVH", con, adOpenDynamic, adLockOptimistic
    
' Problemstelle?!
    RS.MoveFirst
    RS!VO.Value = strEintrag
    MsgBox strEintrag
        
End Sub
 
füge mal folgende funktion ein

Code:
Public function ResIsEmpty (rs as adodb.recordset) as boolean
ResIsEmpty = (rs.eof and rs.bof) 
end function

und vor deinem Rs.moveFirst
Code:
if resisempty (rs) = false then
RS.MoveFirst
    RS!VO.Value = strEintrag
    MsgBox strEintrag
endif

gruß bb
 
Zuletzt bearbeitet:
Hallo,

so geschrieben sieht das doch besser aus um ein Recordset zu öffnen :)

'Recordset erstellen & Zugriff auf Tabelle
Set RS = New ADODB.Recordset

With RS
.ActiveConnection = con
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Source = "THV"
.Open
End With

aber hier liegt nicht das Problem,
sondern hier:

RS!VO.Value = strEintrag
MsgBox strEintrag

Der String strEintrag ist ja leer und diesen weißt
du der Recordsetspalte VO zu, demzufolge ist diese
dann auch leer. In der Datenbank wird das aber
erst nach einem RS.Update übernommen.

Ich denke das ganze ist nur nen Tipfehler und sollte
so heißen.

strEintrag = RS!VO.Value
MsgBox strEintrag

Aber brainbyte hat auch einen sehr hilfreichen Tip für dich
gegeben denn du musst immer prüfen ob rs.eof oder rs.bof nicht True
sind.

Jens
 
Danke,

bin gestern als ich wieder Zuhause war,
beim drüberschauen, selbst drauf gekommen.
Natürlich, habe ich mich dann vor dem Spiegel gestellt und
mich selbst Ausgelacht ;-)

War tatsächlich ein Dreher.

greetz Taylor
 
Zurück