Ereignisprozedur auslösen Wechsel des Datensatzes

Hallo liebe Accessler,

ich habe ein Formular mit Registerkarten, an denen Unterformulare angebunden sind.(Kunden und deren Details).

In einer bestimmten Registerkarte will ich eine Neuberechnung der Daten auslösen. Dank des Tips von Reinhard habe ich das auch hingekriegt, dass beim Klicken auf die entsprechende Registerkarte die Daten aktualisiert werden.

Nun kommt mein neues Problem. Ich bin auf der Registerkarte (Unterformular) und blättere dann weiter mit den Navigationselementen auf einen neuen Kunden, da ich bereits im Unterformular bin, wird nun natürlich keine Neuberechnung ausgelöst, dies kann ich derzeit nur erreichen, indem ich auf eine andere Registerkarte klicke und dann wieder auf die „richtige“ Registerkarte.

Meine Idee ist: Ereignissprozedur auslösen, wenn ein neuer Kunde gewählt wird und (!!) die kritische Registerkarte angezeigt wird. Und (!!) deshalb, weil bei den anderen Karten keine Neuberechnung ausgelöst werden muss.
Bloss keine Ahnung, wie ich das erreichen kann.

Verständlich? und jemand eine Idee?

Danke im Voraus für Eure Antworten

Peter

Hallo Peter,

ich habe ein Formular mit Registerkarten, an denen
Unterformulare angebunden sind.(Kunden und deren Details).

Wenn ich dich richtig verstanden habe:
Du hast ein Hauptformular (ohne Tabellenbindung)?
Auf dem Hauptformular befinden sich UFOs mit Kundendaten zur Auswahl?
D.h. du verwendest ein Ufo um die Firma/ den Kunden auszuwählen?

Mein Vorschlag: binde das Hauptformular an die Kundentabelle.
Nutze den ersten Registerkarten-Reiter (TAB) um die Kundendaten anzuzeigen.
Nutze ein Kombi-Feld für die Auswahl/Suche.(z.B. im Formularkopf)
Die UFOs mit den anderen Kundendaten werden - bei richtiger Verknüpfung mit dem Hauptformular - automatisch aktualisiert.

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

Ich würde - wenn überhaupt - generell alle Unterformulare neu berechnen, ob sichtbar oder nicht, sonst verwirrst du dich in einem Knäuel von Fallunterscheidungen.

Ansonsten steht und fällt das Ganze damit, wie du deine Unterformular jeweils filterst oder positionierst. Wenn das z.B. ein Formularfilter ist, musst du den Filter halt jeweils neu setzen, wenn du im Kunden-(Unter-)formular auf einen neuen Datensatz gehst (FormCurrent-Ereignis).

Ohne deine Konstruktion konkret vorliegen zu haben, kann man dazu aber nur schwer etwas sagen. Generell würde ich dir aber wie Wolfgang raten, eher mehr auf die Standardkonstruktionen von Access (also: Haupt-/Unterformular entsprechend einer 1:n-Beziehung) abzustellen, als da eine eigene Funktionalität zu basteln. Erfahrungsgemäß hakt so etwas alle Naslang (z.B. dann, wenn jemand per Menü einen eigenen Filter definiert oder die Filter weglöscht…)

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)

Hallo liebe Accessler,

sorry, in der Beschreibung zu unpräzise gewesen.
In dem Unterformular ist eine Tabelle eingebettet, deren Daten zunächst gelöscht werden müssen und dann komplett neu (per Programm) berechnet werden, dann kommt ein FormRefresh und alles ist gut.
Wie gesagt das funktioniert hervorragend mit dem Reiter, bloss wenn das Unterformular schon offen ist, und ich dann auf dem Hauptformular den Datensatz wechsele, passiert natürlich nichts, weil das UFo offen ist und ich nicht auf den Reiter geklickt habe.
Also brauche ich eine Ereignisprozedur, die ausgelöst wird, wenn ich im Hauptformular den Datensatz wechsele.
Zweiter Schritt wäre dann, das Ganze noch so einzuschränken, dass die Ereignisprozedur nur abgearbeitet wird, wenn das entsprechende UFo offen ist.

Und das habe ich dann so gelöst:

Hauptformular Eigenschaften beim Anzeigen

Private Sub Form_Current()
'Check ob Unterformular offen (Register = 8)
If Me.RegisterStr1.value = 8 Then
'Prozedur des Registerelementes ausführen
Call RegisterStr1_Change
End If
End Sub

Danke trotzdem für Eure Antworten.

Peter