Hallo zusammen,
ich weiß einfach nicht mehr weiter. Problem mit VB6 und Access 2000, Datenbank in Access 97 konvertiert
Folgendes:
habe zwei Formulare
Formular A: Liest den Datensatz ein. Habe dieses Formular in dem Eigenschaftsfenster schreibgeschützt. Auf dem Formular A befindet sich eine Combobox und 6 Textboxen. Soweit so gut. Blättern kann ich in dem Datensatz auch schon.
Formular B: Liest auch den Datensatz ein, aber nicht den aktuellen, welchen ich in Formular A schon lesen kann, sondern liest immer den ersten ein.
An was könnte es liegen und wie kann ich es beheben?
Hier mein Code von Formular A:
Public ADOcn As ADODB.Connection
Public ADOrs As ADODB.Recordset
Public oBC As MSBind.BindingCollection
Private Sub Form_Load()
'Datenbank connect
Set ADOcn = New ADODB.Connection
' Setzen eines neuen Recordsets
Set ADOrs = New ADODB.Recordset
Set rstEigentuemer = New ADODB.Recordset
Set rstAnrede = New ADODB.Recordset
' Setzen einer neuen BindingCollection
Set oBC = New BindingCollection
Dim DBPfad As String
' Für SQL-Abfrage
Dim sSqlEigentuemer As String
Dim sSqlAnrede As String
' Datenbankpfad
DBPfad = App.Path & "\Haus.mdb"
' Provider auswählen + Datenbankpfad
With ADOcn
.CursorLocation = adUseClient
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
DBPfad
.Open
End With
'Recordset für die Tabelle Eigentümer
With ADOrs
.ActiveConnection = ADOcn
.Source = "Eigentuemer"
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open
End With
' BindingCollection der Textboxen
With oBC
Set .DataSource = ADOrs
.Add text1(0), "text", "Vorname"
.Add text1(1), "text", "Nachname"
.Add text1(2), "text", "Strasse"
.Add text1(3), "text", "HausNr"
.Add text1(4), "text", "PLZ"
.Add text1(5), "text", "Ort"
' und hier die anderen Felder, wenn noch welche vorhanden
End With
' Anrede aus Tabelle Eigentuemer auslesen
sSqlEigentuemer = "SELECT Anrede FROM Eigentuemer"
With rstEigentuemer
'Recordset-Objekt vom Typ sSqlEigentuemer öffnen.
.Open Source:=sSqlEigentuemer, _
ActiveConnection:=ADOcn, _
CursorType:=adOpenKeyset, _
LockType:=adLockOptimistic, _
Options:=adCmdText
' Kombinationsfeld: 1. Zeile wird mit Anredetext gefüttert (Tabelle
' Eigentümer) bevor draufgeklickt wird
Combo1.Text = rstEigentuemer.Fields(0)
End With
' Spalte Anrede aus Tabelle Anrede
sSqlAnrede = "SELECT Anrede FROM Anrede"
With rstAnrede
' Recordset-Objekt vom Typ sSqlAnrede öffnen.
.Open Source:=sSqlAnrede, _
ActiveConnection:=ADOcn, _
CursorType:=adOpenKeyset, _
LockType:=adLockOptimistic, _
Options:=adCmdText
' Schleife über alle Datensätze
Do Until .EOF
'1-spaltige Combobox füllen
With Combo1
' Eintrag hinzufügen
.AddItem rstAnrede.Fields(0).Value
End With
' Ab zum nächsten Datensatz
.MoveNext
Loop
End With
' Speicher freigeben
If Not rstAnrede Is Nothing Then rstAnrede.Close: Set rstAnrede = Nothing
If Not rstEigentuemer Is Nothing Then rstEigentuemer.Close: Set _
rstEigentuemer = Nothing
' zentriert auf dem Bildschirm
frmEigentuemer.Left = Screen.Width / 2 - frmEigentuemer.Width / 2
frmEigentuemer.Top = Screen.Height / 2 - frmEigentuemer.Height / 2
lblStatus.Caption = "Datensatz: " & CStr(ADOrs.AbsolutePosition)
End Sub und Button "Bearbeiten" (Formular A)
Private Sub cmdEdit_Click()
EigentuemerEdit.Show
ADOrs!Anrede = Combo1
ADOrs!Vorname = text1(0)
ADOrs!Nachname = text1(1)
ADOrs!Strasse = text1(2)
ADOrs!HausNr = text1(3)
ADOrs!PLZ = text1(4)
ADOrs!Ort = text1(5)
'ADOrs.Update
'Unload Me
End Sub Formular B sieht genauso aus, ist aber nicht schreibgeschützt, denn dort sollen Eingaben erfolgen.
Kann es daran liegen, weil ich ADOrs immer als New Recordset setze?
Wie kann ich es anders machen, hab sogar mit Modul probiert, ging auch nicht bzw. ich habs net geschafft.
Ich danke schon mal für eure Hilfe
Gruss
Agnes
------------------------------------
Wenn wir heut gemeinsam starten
und wir alle viel erwarten,
denken wir an jedem Tag daran,
dass man es nur schaffen kann,
wenn wir fest zusammen stehen
und den Weg gemeinsam gehen. |