vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Aktuellen Datensatz in neuen Formular übernehmen 
Autor: Surfine2001
Datum: 06.03.03 17:05

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.

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Aktuellen Datensatz in neuen Formular übernehmen449Surfine200106.03.03 17:05
Juhu, es geht doch mit Modul 235Surfine200107.03.03 11:22

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel