Access Formulardaten mit VBA in Tabelle schreiben

Igäl

Erfahrenes Mitglied
Werte Gemeinde

Nach einiger Zeit Programmierabstinenz (Berufswechsel, Kind- und Kegel, was halt so dazwischen kommt) wage ich mich wiedereinmal an ein neues Projekt. Meine Kenntnisse in PHP / Mysql sind einigermassen profund, was mir beim Einstieg in VBA für Access hilft. Doch gibt es den einen oder anderen Stolperstein auf meinem Weg. Und einen davon habe ich nun bereits am Anfang schon. Verzeiht, falls das schon besprochen wurde, aber auch die Parametrisierung meiner Suche wird sich erst mit mehr Kenntnissen verfeinern :)

Folgende Ausgangslage zu Testzwecken:
Ich habe zwei Tabellen ("tblCity" / "tblKanton"). In "tblKanton" gibt es nur den Primärschlüssel als AutoWert und den Namen des Kantons. In der Tabelle "tblCity" gibt es den Primärschlüssel als AutoWert, den Namen der Stadt ("txtCityName") und "intKantonID" als Fremdschlüssel.

Meine erste, vermeintlich einfache Aufgabe: Ich möchte mittels Formular eine neue Stadt in die Tabelle "tblCity" eintragen (ohne Dropdown mit Kantonsnamen, Buttons etc. sondern via Direktfenster im VBA-Editor).

Dafür gibt es zwei Textfelder, die die Werte enthalten. In einer Testtabelle, mit nur einem Textfeld hat mein Codesnipet gut funktioniert. Der Wert eines Textfeldes wurde in die Tabelle eingetragen.

Bei zwei Textfeldern habe ich aber nun das Problem, dass folgende Debug-Meldung kommt: "Sie können auf die Eigenschaften oder Methoden eines Steuerelements nur verweisen, wenn das Steuerelement den Fokus hat". Wenn der Fokus im Formular auf dem ersten Textfeld liegt, zeigt mir der Debugger die Zuweisung des Wertes des zweiten Textfeldes an und vice versa.

Ich übersehe hier wohl ein grundlegendes Prinzip. Weil es liegt ja in der Natur der Sache, dass nur eines (oder später mit Buttons gar keines) der Felder den Fokus hat.

Darum meine Frage:
- Wie ist es möglich, die Werte aus allen Textfeldern in die verschiedenen Spalten der entsprechenden Tabelle zu schreiben?

Codesnipet:

Visual Basic:
Sub doInsert()
    Dim City As String
    Dim Canton As Integer
    Dim Wofueristdas As String
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
      
    City = Form_formAddCity.txtAddCityName.Text
    Canton = Form_formAddCity.txtAddKantonID.Text
  
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblCity", dbOpenDynaset)
  
    rs.AddNew
    rs!txtCityName = City
    rs!intCantonID = Canton
    rs.Update

    Wofueristdas = MsgBox("Successful", 0)
End Sub

Danke für die Geduld und die eventuelle Hilfe.

Gruss, dä Igäl
 
Lösung
Click-Event:
Den Event direkt im VBA hinter dem Formular Abfangen. Am einfachsten im Formularentwurf in den Eigenschaften in dem Klick-Event gehen. Ereignissprozedure auswählen und dann auf den Knopf mit den 3 Punkten klicken.
1675865622583.png
So... habe mich wieder rangesetzt und es funktioniert. Für etwaige Leute, die das hier nachlesen, meinen Fehler, den ich gemacht habe:

Den Code für btn_Click() habe ich im Modul eingefügt. Als ich, wie mir von Yaslaw mitgeteilt, via Eigenschaftenfenster (...) eingestiegen bin und die Funktion in das aufpoppende Fenster geschrieben habe, hat es funktioniert.

Danke euch zwei für die Starthilfe. Ich komme vermutlich - leider - bald mit weiteren Fragen.
 
Zurück