ADODC Steuerelement und einfügen

dot-paul

Grünschnabel
Hallo,

Ich habe folgendes Problem bei VB6:

Mit einem Adodc (Name ist Abteilungen) greife ich auf eine Tabelle in einer Accessdatenbank zu. Die Tabelle besteht aus: Primärschlüssel "ID" und Abteilungsname.
Mit dem unten stehenden Code füge ich eine neue ID hinzu am Ende der Tabelle, der Name bleibt frei. Dann soll zum letzten Datensatz gesprungen werden. Da soll dann das gebundene Textfeld als leer erscheinen und ich kann den neuen Namen eingeben.

Das funktioniert auch soweit, allerdings nur wenn ich das Frame schließe und dann wieder öffne. Und dann ist der neue Datensatz nicht am Ende der Liste, sondern am Anfang.

Wie kann ich nun den Refresh der Daten erzwingen, und wie kann der Datensatz am Ende eingefügt werden?

Vielen Dank.


Code:
Private Sub Command2_Click()
    With Abteilungen
        .Recordset.MoveLast
        Dim lastId As Integer
        lastId = .Recordset("ID")
        lastId = lastId + 1
        .Recordset.MoveLast
        .Recordset.AddNew
        .Recordset("ID") = lastId
        .Recordset.Update
        .Refresh
        .Recordset.MoveLast
    End With
End Sub
 
Hallo Dot-Paul,

Private Sub Command2_Click()
With Abteilungen
.Recordset.MoveLast
Dim lastId As Integer
lastId = .Recordset("ID")
lastId = lastId + 1
.Recordset.MoveLast --> kannst du weg lassen
.Recordset.AddNew
.Recordset("ID") = lastId
.Recordset.Update
Call Sleep(250) --> versuche mal ne Pause einzubauen
.Recordset.Refresh --> bin mir sicher ob es die Methode gibt,
.Refresh müsste aber
.Recordset.MoveLast
End With
End Sub

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Hinweis:
Zum schnellen Testen ist das ADODC Control nicht schlecht aber
in einer stabil laufenden DB Anwendung sollte man darauf verzichten.
Es nimmt dir jegliche Möglichkeiten des Debuggings und vor allem
fehlt einem das Verständnis was eigentlich passiert.

Eine Verbindung kann auch aufbauen

Dim cn as ADODB.Connection
Set cn = New ADODB.Connection


With cn
.Properties("Data Source") = Datenbank
.Properties("User ID") = "Admin"
.Properties("Jet OLEDB:Database Password") = Passwort
.Cursorlocation = adUseClient
.Mode = adModeShareDenyNone
.Open
End With

Das öffen eines Recordsets könnte so aussehen

Dim rs as ADODB.Recordset
set rs = new ADODC.Recordset

with rs
rs.Source ="Select Spalte from Tabelle"
rs.ActiveConnection = cn
rs.CursorType = adOpenStatic
rs.LockType = adLockOptimistic
rs.Open

..................................

rs.close
end with

Das ganze lässt sich auch wunderbar in Klassen
oder Functionen packen, so das der Schreibaufwand
nicht viel höher ist.

Gruß
Jens
 

Neue Beiträge

Zurück