Andreas Dunstheimer
Erfahrenes Mitglied
Hi,
ich bin gerade dabei, eine kleine Datenbankanwendung zu programmieren.
Zuerst öffne ich im Formular frmHaupt die Verbindung zur DB:
Die Daten aus dem Recordset zeige ich dann in frmHaupt an:
Nun will ich diese Daten in einem zweiten Formular dlgEditkunde bearbeiten und Änderungen direkt in die DB schreiben.
Dummerweise habe ich, da ich nun ja in einem anderen form bin, die Verbindung zur DB und auch das Recordset nicht mehr.
Kann ich diese Werte irgendwie übergeben, oder muss ich die Verbindung neu machen?
Und gleich noch eine Frage zu DB-Verbindungen:
muss man mit .open gemachte auch wieder schliessen? Ich vermute mal, dass das das Programm beim Beenden selbst macht, aber solange ich im Programm bin und immer wieder Verbindungen öffne könnte dies irgendwann zu einem Problem werden?
Dunsti
ich bin gerade dabei, eine kleine Datenbankanwendung zu programmieren.
Zuerst öffne ich im Formular frmHaupt die Verbindung zur DB:
Code:
Private Sub Form_Load()
Cn.Provider = "Microsoft.Jet.OLEDB.4.0"
Cn.ConnectionString = "Data Source=D:\vb_projekte\xxx\kundendatei.mdb"
Cn.CursorLocation = adUseClient
Cn.Open
With RsT
.ActiveConnection = Cn
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.Source = "SELECT * FROM Kunden ORDER BY Name,Vorname"
.Open
.MoveFirst
For i = 0 To .RecordCount - 1
cboKundenauswahl.AddItem (.Fields("Name") + ", " + .Fields("Vorname"))
.MoveNext
Next i
End With
End Sub
Die Daten aus dem Recordset zeige ich dann in frmHaupt an:
Code:
Private Sub cmdKundenauswahl_Click()
If cboKundenauswahl.ListIndex >= 0 Then
With RsT
.MoveFirst
.Move (cboKundenauswahl.ListIndex)
If IsNull(.Fields("Name")) And IsNull(.Fields("Vorname")) Then lblName.Caption = "" Else lblName.Caption = " " + .Fields("Vorname") + " " + .Fields("Name")
If IsNull(.Fields("Strasse")) Then lblStrasse.Caption = "" Else lblStrasse.Caption = " " + .Fields("Strasse")
If IsNull(.Fields("Postleitzahl")) And IsNull(.Fields("Ort")) Then lblOrt.Caption = "" Else lblOrt.Caption = " " + .Fields("Postleitzahl") + " " + .Fields("Ort")
If IsNull(.Fields("Telefon")) Then lblTelefon.Caption = "" Else lblTelefon = " " + .Fields("Telefon")
If IsNull(.Fields("Mobil")) Then lblMobil.Caption = "" Else lblMobil = " " + .Fields("Mobil")
If IsNull(.Fields("Email")) Then lblEmail.Caption = "" Else lblEmail = " " + .Fields("Email")
If IsNull(.Fields("Bemerkung1")) Then lblBemerkung1.Caption = "" Else lblBemerkung1 = " " + .Fields("Bemerkung1")
If IsNull(.Fields("Bemerkung2")) Then lblBemerkung2.Caption = "" Else lblBemerkung2 = " " + .Fields("Bemerkung2")
If IsNull(.Fields("Bemerkung3")) Then lblBemerkung3.Caption = "" Else lblBemerkung3 = " " + .Fields("Bemerkung3")
End With
Else
i = MsgBox("Bitte einen Kunden zum Anzeigen auswählen!", vbCritical, "Hinweis")
End If
End Sub
Nun will ich diese Daten in einem zweiten Formular dlgEditkunde bearbeiten und Änderungen direkt in die DB schreiben.
Dummerweise habe ich, da ich nun ja in einem anderen form bin, die Verbindung zur DB und auch das Recordset nicht mehr.
Kann ich diese Werte irgendwie übergeben, oder muss ich die Verbindung neu machen?
Und gleich noch eine Frage zu DB-Verbindungen:
muss man mit .open gemachte auch wieder schliessen? Ich vermute mal, dass das das Programm beim Beenden selbst macht, aber solange ich im Programm bin und immer wieder Verbindungen öffne könnte dies irgendwann zu einem Problem werden?
Dunsti