Formular aktualisieren... schon wieder

Hallo,

bezug nehmend auf meinen letzten Artikel poste ich hier schon wieder, da ich es leider noch nicht hinbekommen habe. Ich habe mir auch schon die Artikel im Archiv angesehen, brachte mir jedoch auch nichts.

Problem: Ich habe drei Tabellen, [Astro], [Player] und [Guild].
[Guild] hat nur zwei Spaltem, [ID] und [Name].
[Player] hat drei Spalten, [ID], [Name] und [Guild]. Über [Guild] ist [Player] mit [Guild].[ID] verknüpft.
[Astro] hat neben anderen Spalten die Spalte [belongs_to], welche [Astro] mit [Player].[ID] verknüpft.

Ich habe nun ein Formular erstellt. [Astro]! In diesem Formular kann ich Daten in ALLE DREI Tabellen eintragen.
Trage ich die Position eines neuen Astro ein, kann ich über ein KombiFeld einen Player auswählen. Ist der Player noch nicht vorhanden, kann ich im selben Formular eine neue Player.ID und einen Namen eintragen, sowie die Guild über ein Kombi-Feld auswählen. Hier wieder das gleiche: Ist die Guild nicht vorhanden, kann ich eine neue im selben Formular eingeben. Schließe ich jetzt das Formular und öffne es wieder, sind dem neu eingegebenen Astro der neue Player mit neuer Guild zugewiesen. Wenn ich jedoch das Formular geöffnet lasse und nur auf den Button „Neuer Datensatz“ klicke, werden die KombiFelder belongs_to und is_in nicht aktualisiert.

Nun habe ich schon folgendes versucht:
Ich habe mir die Eigenschaften des Feldes [Player_ID] anzeigen lassen und dort bei „Bei Focusverlust“ folgendes eingetragen, „Forms!Astro!belongs_to.Requery“
Trage ich nun eine neue Player-ID ein bekomme ich die Meldung: Access kann das Makro ‚Forms!Astro!belongs_to‘ nicht finden.

Was mache ich da falsch?
Vielen Dank für die Hilfe.

MfG,
Rogge

Hallo Rogge,

Nun habe ich schon folgendes versucht:
Ich habe mir die Eigenschaften des Feldes [Player_ID] anzeigen
lassen und dort bei „Bei Focusverlust“ folgendes eingetragen,
„Forms!Astro!belongs_to.Requery“

Du solltest diesen VBA-Code bei den Feldern nutzen, in denen du Einträge vornimmst, also da wo du z.B. den Playernamen eingibst.

Trage ich nun eine neue Player-ID ein bekomme ich die Meldung:
Access kann das Makro ‚Forms!Astro!belongs_to‘ nicht finden.
Was mache ich da falsch?

Bei Fokusverlust: Ereignisprozedur […]

  • dort auf die drei Punkte klicken
  • dann bist du im Code-Generator (VBA Editor)
  • trage nun ME.belongs_to.requery ein
  • schließe den Code-Generator (VBA-Editor)

Me. = aktuelles Formular

Trägst du an Stelle von Ereignisprozedur etwas anderes ein, „denkt“ Access du willst ein Makro mit diesem Namen aufrufen.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Laufzeitfehler
Hallo Wolfgang,

irgendetwas funktioniert damit nicht ganz. Wenn ich das an die richtige Stelle eintrage, wie von dir beschrieben, bekomme ich einen Laufzeitfehler, sobald ich bei Playernamen etwas eintrage oder einfach nur der Curser in dem Feld ist. Klicke ich dann auf „Weiter“ oder auf ein anderes Feld, bekomme ich den Laufzeitfehler 424, „Objekt erfordferlich“. Wenn ich auf „Beenden“ klicke, kann ich ganz normal weiterarbeiten.

Mein VBA-Code:

Option Compare Database

Private Sub Player\_ID\_LostFocus()
Astro.belongs\_to.Requery
End Sub

Private Sub Player\_Name\_LostFocus()
Astro.belongs\_to.Requery
End Sub

MfG,
Rogge

Hallo Rogge,

irgendetwas funktioniert damit nicht ganz.

Richtig!

Astro.belongs_to.Requery

Wenn du auf dein Formular das gerade geöffnet ist verweisen willst, bietet Access dafür ein Kürzel an: ME.

Ich vermute mal dein Formularname ist ASTRO?
Den brauchst du nicht eingeben!!! Nutze dafür einfach ME.

ME.belongs_to.Requery

Wenn du unbedingt den Formularnamen angeben willst, muß du das Access auch „sagen“:

Forms!Astro.belongs_to.Requery

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)