Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Erst beim Speichern Daten in Tabellen übernehmen

Empfohlene Antworten

Veröffentlicht

Guten Morgen,

ich habe da leider ein Problem mt meiner Access Datenbank. Ich habe fertige Tabellen und ein fertiges Formular. Diese sind noch nicht miteinander verknüpft. In diesem Formular sind Textfelder, die vom Benutzer ausgefüllt werden müssen. Wenn dann der Benutzer fertig ist und auf einen gewissen Speicherbutton im Formular drückt, sollen die Daten der Textfelder in den einzelnen Tabellen abgespeichert werden. Wie kann ich es im Visual Basic Code schreiben, dass erst beim Drücken des Speicherbuttons die Daten in die entsprechende Tabellen geschrieben werden? Und wie kann ich dies alles verknüpfen? Muss ich für jedes Textfeld einen Code schreiben und wie funktioniert es dann, dass die Daten auch wirklich erst beim Speichern in die Tabellen geschrieben werden?

Hoffe habe mich einigermaßen klar ausgedrückt :)

Wäre für Hilfe dankbar.

Ciao fishy

Also, ich glaube, Dich verstanden zu haben.

Zunächsteinmal gehe auf die Eigenschaften des "Speichern"-Buttons und wähle bei "Ereignis" beim Ereignis "Beim Klicken" die Ereignisprozedur aus. Dann drücke die ...-Taste.

So ähnlich müßte der Code aussehen:


Private Sub Speichern_Click

  Dim db as Database

  Dim rst as Recordset


  Set db = Currentdb

  Set rst = db.Openrecordset ("Meine Tabelle",dbOpenDynaset)


  If Textfeld1.Value <> "" And Not isNull (Textfeld1.Value) Then

    rst.Addnew

    rst![Feldname1] = Textfeld1.Value

    rst.Update

  Else

    MsgBox "Das Textfeld1 ist leer!!! Schreiben Sie was rein!!!"

  End if

  rst.Close

End Sub

So ähnlich müßte die Prozedur dann aussehen.

Hoffe, geholfen zu haben.

JayN

Hi, erstmal danke :)

Aber irgendwas läuft da noch nich wirklich. Also ich erklärs mal bissel genauer. Hab eine Tabelle namens "tblPersonen" und darin sind 2 Felder "Name" und "Vorname". Hab auch ein Formular "Formular1" wo zwei Textfelder drinne sind die auch als Bezeichnung "Name" und "Vorname" haben.

Den Code habe ich jetzt eingegeben:

______________________________________________

Private Sub Befehl112_Click()

Dim db As Database

Dim rst As Recordset

Set db = CurrentDb

Set rst = db.OpenRecordset("tblPersonen", dbOpenDynaset)

If Name.Value <> "" And Not IsNull(Name.Value) Then

rst.AddNew

rst![Name] = Name.Value

rst.Update

Else

MsgBox "Das Textfeld Name ist leer!!! Schreiben Sie was rein!!!"

End If

rst.Close

End Sub

_______________________________________________

Beim Kompilieren kommt dann die Fehlermeldung "Ungültiger Bezeichner" und der folgende Teil wird makiert:

If Name.Value <> "" And Not IsNull(Name.Value) Then

rst.AddNew

rst![Name] = Name.Value..................

...............

...............

Woher weiß die Aktion überhaupt, dass sie auf das Feld "Name" aus dem Formular zugreifen soll? *grübel*

kannste nochmal versuchen mir zu helfen?

:confused:

Dankeeeeeeee

Haben das Textfeld "Name" als Bezeichnung oder als Name? Wenn nur als Bezeichnung, dann klick auf das Textfeld im Entwurfsmodus, öffne die Eigenschaft, gehe auf den Reiter "Daten" und da siehst Du den Namen mit dem Du das Textfeld ansprichst! Dann kannst Du es auf "Name" ändern.

JayN

Unter dem Reiter "Andere" steht als Name: Name.

Heißt die Fehlermeldung nicht, dass er keine Verbindung zum Formular hat, wo des Feld "Name" enthalten ist?

trotzdem danke :)

Aaaaaaaaaaaahhhhh... jetzt weiß ich, woran das liegt, glaub ich jedenfalls....

Ich glaube nämlich, dass Du "Name" nicht als Bezeichner vergeben kannst, dass es eine Eigenschaft namens "Name" gibt... versuch es mal mit was anderem.

JayN

Ahhhhhhhhhhhh, klasse, es klappt!!!!!!!!! :bimei :bimei :bimei

Danke dir!!!! :) Suuuuuuper nett!

Allerdings wenn ich (für die anderen Felder jetzt) die gleiche Prozedur mache, schreibt der z.B. den Vornamen in den nächsten Datensatz :( Kann man das irgendwie hinbekommen, dass alles in eine Reihe geschrieben wird? Mit ner ID oder sowas?

Original geschrieben von fisheye

Ahhhhhhhhhhhh, klasse, es klappt!!!!!!!!! :bimei :bimei :bimei

Danke dir!!!! :) Suuuuuuper nett!

Allerdings wenn ich (für die anderen Felder jetzt) die gleiche Prozedur mache, schreibt der z.B. den Vornamen in den nächsten Datensatz :( Kann man das irgendwie hinbekommen, dass alles in eine Reihe geschrieben wird? Mit ner ID oder sowas?


Private Sub Speichern_Click

  Dim db as Database

  Dim rst as Recordset


  Set db = Currentdb

  Set rst = db.Openrecordset ("Meine Tabelle",dbOpenDynaset)


  If Name123.Value <> "" And Not isNull (Name123.Value) Then

    If Vorname.Value <> "" And Not isNull (Vorname.Value) Then

    rst.Addnew

    rst![Name123] = Name123.Value

    rst![Vorname] = Vorname.Value

    rst.Update

    Else

        MsgBox "Vorname ist leer!!! Schreiben Sie was rein!!!"

    End if

  Else

    MsgBox "Name123 ist leer!!! Schreiben Sie was rein!!!"

  End if

  rst.Close

End Sub

Mit Addnew legst Du einen neuen Datensatz an, danach kannst Du alle möglichen Felder füllen.... mit Update schließt Du den neuen Datensatz ab, die Tabelle wird upgedatet.

Nicht vergessen die Tabelle zu schließen -> Close!!! Sonst könnten Daten verloren gehen!

JayN

Hey, lieb von dir *freu*

Und wie sieht es aus, wenn ein Feld nicht unbedingt ausgefüllt werden muss, andere aber schon!?!?

also das dann gar nix passiert (kein Wert übernommen wird)wenn da nichts drinne steht.

Original geschrieben von fisheye

Hey, lieb von dir *freu*

Und wie sieht es aus, wenn ein Feld nicht unbedingt ausgefüllt werden muss, andere aber schon!?!?

Na ja, wenn Du die nicht ausfüllen mußt, dann kannst Du es halten, wie Du willst. Wenn Du aber ein Feld ausfüllen mußt und es nicht ausfüllst, wird er bei Update meckern, denke ich.

JayN

Bekomm das scho irgendwie hinne.

Danke erstmal für die vielen Infos.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.