Ich möchte gerne von einer Userform Informationen einen neuen Eintrag in eine Access-DB machen, was nicht funktioniert. Ich zeige erstmal, wie ich bestehende Daten abrufe, was auch funktioniert:
Option Explicit
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Public Sub Daten_aus_DB_holen()
Dim i As Integer
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\_Privat\HOLZZZWERK\Büro\ _
Holzzzwerk ERP\HOLZZZWERK_ERP.mdb;Persist Security Info=False;"
Set rs = cn.Execute("SELECT * FROM tKunden")
i = 1
Do While Not rs.EOF
lstAuswahlFirma_KV.AddItem rs.Fields("fKdFirmenname")
lstAuswahlNachname_KV.AddItem rs.Fields("fKdNachname")
lstAuswahlVorname_KV.AddItem rs.Fields("fKdVorname")
lstAuswahlOrt_KV.AddItem rs.Fields("fKdOrt")
rs.MoveNext
i = i + 1
Loop
cn.Close
End Sub
Auf dieselbe Art einen Eintrag machen, geht nicht. Ich habe folgenden Code:
Public Sub Daten_In_DB_schreiben()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim dbpath
Dim x As Long
Dim i As Long
Set cnn = New ADODB.Connection
cnn.Open "provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\_Privat\HOLZZZWERK\Büro\ _
Holzzzwerk ERP\HOLZZZWERK_ERP.mdb"
Set rst = New ADODB.Recordset
With rst
.Source = "SELECT * FROM tKunden"
.Open
.AddNew
.Fields("fKdNummer") = "KD-00003"
.Fields("fKdKategorie") = "Privatkunde"
.Fields("fKdNachname") = txtNachname_KV.Text
.Fields("fKdVorname") = txtVorname_KV.Text
.Fields("fKdOrt") = txtOrt_KV
.Update
End With
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
End Sub
Was mich interessieren würde:
1. Wo liegt der Fehler beim Setzen eines neuen Eintrags in die DB?
2. Wie müßte es aussehen, wenn man keinen neuen Eintrag machen möchte, sondern nur aktualisieren?
3. Wo ist es sinnvoll, die Deklarationen zu setzen (... as new ADO.Connection; Recordset, etc.)?
4. Ab wann ist es sinnvoll, diese wieder zu schließen? Sofort oder bei Programmende?
5. Ab wann ist es sinnvoll, diese Objekte auf Nothing zu setzen? Gleich, wie bei 4. ?
6. Wie kann ich hier Quellcode posten, der dann auch angezeigt wird, wie Quellcode im VBA, anstatt als Text?
Danke im Voraus für ein paar Tips und Tricks.
Gruß Ronald