Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Anzeigeproblem zwischen UFO's nach DS-Löschung

Begonnen von cyorps, September 22, 2014, 14:37:55

⏪ vorheriges - nächstes ⏩

cyorps

Hallo Leute,

ich habe zwei Unterformulare (Endlos), die über eine ID mit dem Hauptformular verknüpft sind. Im UFO1 werden Daten eingegeben und im UFO2 werden Berechnungen durchgeführt, deren Basis eine Abfrage aus zwei Tabellen ist, wovon eine Tabelle die Daten aus dem UFO1 sind. Das Anlegen von neuen DS läuft problemlos ab. Im UFO1 wird ein neuer DS angelegt und die Berechnung auf Basis des neuen DS ist im UFO2 sofort sichtbar.

Wenn ich im UFO1 einen DS lösche, hat das nur insofern auf UFO2 Auswirkungen, dass die Felder mit den Daten aus UFO1 mit dem Gelöscht-Hinweis versehen sind. Doch eigentlich soll der ganze DS aus dem UFO2 ebenfalls verschwinden. Das passiert erst, wenn man nach dem Löschen des DS im UFO1, an eine andere Stelle im HFO springt und sich danach das UFO2 erneut anzeigen lässt. Hat es etwas damit zutun, dass die DS-Basis für UFO2 eine Verknüpfung aus zwei Tabellen ist? Wie kann ich dieses Problem lösen?

Gruß
Mario
- Peripherie: Win XP Prof; Office 2000
- VBA Copy&Paste; ansonsten Dummy

MaggieMay

Hallo Mario,

du könntest Ufo2 nach Löschung im Ufo1 per VBA-Befehl aktualisieren:Me.Parent.UF2.Form.Requery
Freundliche Grüße
MaggieMay

cyorps

Danke für deinen Tip, den ich ausprobiert habe. Doch leider bringt dieser Ansatz nicht den gewünschten Effekt.

Bei der Fehlersuche ist mir jetzt noch folgendes aufgefallen. Wenn ich mich in der Formularansicht per Hand zum Abfrage-Generator vom UFO2 durchklicke, mir das Abfrageergebnis anschaue (und somit aktualisiere) und wieder zum Formular zurückkehre, verschwindet der komplette DS ebenfalls, sobald UFO2 den Fokus erhält. Bislang dachte ich, dass genau das ein requery macht. Ausgehend von diesen Lösungsansatz habe ich mir angeschaut, welche Aktualisierungsfunktionen es noch gäbe. Ein repaint oder refresh haben auch keinen Effekt und recalc bewirkt, einen Wechsel ins HFO, sodass der Benutzer die UFOs wieder neu aufrufen müsste.

- Peripherie: Win XP Prof; Office 2000
- VBA Copy&Paste; ansonsten Dummy

DF6GL

Hallo


WIE genau wird der DS denn gelöscht? Und ist sichergestellt, dass das Requery NACH dem Löschen passiert?

MaggieMay

Zeig doch bitte mal den VBA-Code mit dem du das umgesetzt hast und nenne auch das Ereignis dazu.
Freundliche Grüße
MaggieMay

cyorps

Da man im UFO1 den DS nur per Button löschen kann, ist das Ereignis der Klick. Der Code im UFO1 sieht dann so aus:
DoCmd.RunCommand acCmdDeleteRecord
Forms.HF.UF.Form.UF1.Form.UFO2.Form.Refresh

Des Weiteren hatte ich auch versucht, ob sich etwas ändert, wenn der Refresh über das Form_Delete-Ereignis ausgelöst wird.
- Peripherie: Win XP Prof; Office 2000
- VBA Copy&Paste; ansonsten Dummy

MaggieMay

Ich würde es beim Ereignis "Nach Aktualisierung" und mit "Requery" versuchen.
Und dann würde ich es auf die von mir vorgeschlagene Art mit der relativen Adressierung von Ufo2 machen.
Zitatich habe zwei Unterformulare (Endlos), die über eine ID mit dem Hauptformular verknüpft sind.
Woher kommt jetzt plötzlich das dritte Ufo "UF"?!   ???
Freundliche Grüße
MaggieMay

DF6GL

Hallo,

ich würde das so schreiben:

Me.Parent!UFO2_Steuerelementname.Form.Requery
anzeigt, ersetzt werden muss.

wobei UFO2_Steuerelementname durch den Namen des UFO-Steuerelementes, das das zweite (Unter-)Formular anzeigt, ersetzt werden muss

cyorps

Die Idee von Franz anders zu Referenzieren hat geholfen! Jetzt werde ich mich damit beschäftigen, warum das so ist. Denn ich bislang dachte, dass es (mit Ausnahme von mehr Schreibarbeit) egal ist, ob ich bei der Referenz im Hauptformular starte oder mich nur auf das übergeordnete Formular beziehe. Ich danke euch beiden für eure Hilfe.

@MaggieMay
Wenn du genau hinschaust, siehst du, dass oberhalb von den UFO1 und 2 sogar drei Formulare existieren. Damit du ein Bild von der Datenbank vor Augen hast, erläutere ich kurz die Funktion: Es handelt sich dabei um eine DB zur Erfassung von Dienstreisen und deren Abrechnung.

HF = Such&Auswahl-GUI der Mitarbeiter und Dienstreise
UF = Detailinfo über ausgewählten Mitarbeiter & Dienstreise
UF1 = Erfassungsmaske für allgemeine Dienstreiseabrechnungsdaten
UFO1 & UFO2 = Festsetzung des Tagesgeldes (UFO1) sowie deren Berechnung via "Tagegeld - Verpflegungskostenabzug" (UFO2)

Gruß
Mario
- Peripherie: Win XP Prof; Office 2000
- VBA Copy&Paste; ansonsten Dummy

MaggieMay

@cyorps:
Zitatich habe zwei Unterformulare (Endlos), die über eine ID mit dem Hauptformular verknüpft sind.
Für mich ist das eine eindeutige Aussage, nämlich dass Ufo1 und Ufo2 direkt im HF enthalten und mit ihm verknüpft sind.
Auf die Existenz weiterer, gar zwischengeschalteter, Ufos weist in deinem ersten Beitrag absolut nichts hin.
ZitatDie Idee von Franz...
Im übrigen war es mein Vorschlag, die Referenz auf Ufo2 über das Parent anzugehen.
Wie deine Steuerelemente tatsächlich heißen solltest du wohl selbst am besten wissen.
Freundliche Grüße
MaggieMay