AW: Access-Daten in Excel-Listenfeld
20.08.2003 17:14:29
Todo
Daten von Access in Excel-Sheet:
Sub DBVerbMA()
' Anbindung an eine Access Datenbank für Mitarbeiteranzeige
Dim dbverbindung As New Connection
Dim rs As New Recordset
Dim mitarb As Worksheet
Dim sql As String
Dim i As Integer
Dim dbname As String
Dim path As String
path = Application.ActiveWorkbook.path
dbname = "APPlan.mdb"
Set mitarb = ThisWorkbook.Worksheets(RegMitarb)
dbverbindung.Open _
"provider = microsoft.jet.oledb.4.0;" _
& "Data Source = " & path & "\" & dbname
sql = "SELECT Mitarbeiter, Kurzzeichen, Name FROM Mitarbeiter ORDER BY Mitarbeiter"
rs.Open sql, dbverbindung
While Not rs.EOF
i = i + 1
mitarb.[A2].Offset(i - 1, 0) = rs!Mitarbeiter
mitarb.[A2].Offset(i - 1, 1) = rs!Kurzzeichen
mitarb.[A2].Offset(i - 1, 2) = rs!Name
rs.MoveNext
Wend
rs.Close
dbverbindung.Close
End Sub
Daten von Excel-Sheet in ListBox der UserForm:
Private Sub UserForm_Initialize()
'Füllen des List-Feldes für Mitarbeiterauswahl
Dim anzMA As Integer
Dim i As Integer
Dim mtext As String
DBVerbMA
Sheets("Mitarbeiter").Activate
Sheets("Auswahl").Select
i = ActiveSheet.UsedRange.Rows.Count
With frmMitarbeiterVerwalten.lstExistMitarbeiter
.ColumnCount = 3
.ColumnHeads = True
.RowSource = "Mitarbeiter!A2:C" & i
.ColumnWidths = "1cm;2cm;3cm"
End With
End Sub
Und speichern der verwalteten Daten von UserForm direkt in Access-Tabelle:
Private Sub cmdSpeichern_Click()
'Felder in Datenbank schreiben
Dim ADOC As New ADODB.Connection
Dim DBS As New ADODB.Recordset
Dim Dia As UserForm
Dim s As String
Dim path As String
Dim dbname As String
path = Application.ActiveWorkbook.path
dbname = "APPlan.mdb"
ADOC.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & "\" & dbname
DBS.Open "Mitarbeiter", ADOC, adOpenKeyset, adLockOptimistic
Set Dia = frmMitarbeiterVerwalten
s = Dia.txtMitarbeiter.Value
s = "Mitarbeiter = '" & s & "'"
On Error GoTo Fehler
DBS.Find s
With Dia
DBS!Mitarbeiter = txtMitarbeiter.Value
DBS!Kurzzeichen = txtKurzzeichen.Value
DBS!Name = txtName.Value
DBS.Update
End With
DBS.Close
ADOC.Close
Unload Me
MsgBox "Datensatz geändert!"
Sheets("Auswahl").Select
Exit Sub
Fehler:
DBS.AddNew
With Dia
DBS!Mitarbeiter = txtMitarbeiter.Value
DBS!Kurzzeichen = txtKurzzeichen.Value
DBS!Name = txtName.Value
DBS.Update
End With
DBS.Close
ADOC.Close
Unload Me
MsgBox "Datensatz neu eingefügt!"
Sheets("Auswahl").Select
Exit Sub
End Sub
In dem Zusammenhang noch die Frage:
Wie schaffe ich es, einen in der UserForm gewählten Datensatz direkt in der Access-Tabelle zu löschen?
Danke schon mal für die Hilfe!!
Gruß
Torsten