Neuigkeiten:

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

Mobiles Hauptmenü

Beim schließen eines Berichts Schaltfläche in anderem Formular ansprechen

Begonnen von Bernd Sowa, November 05, 2024, 16:08:28

⏪ vorheriges - nächstes ⏩

Bernd Sowa

Hallo zusammen,

ich möchte gerne beim Schließen eines Berichtes eine Schaltfläche in einem geöffneten Formular angesprochen wird.(der User hat die Wahl zwischen Drucken und Abbruch - Bei Abbruch soll es ausgelöst werden)

Ich habe es probiert mit

Call Forms.frm_Arbeitsblatt_RT_Auf.cmdAbbruch_Click

Brachte aber leider nicht den gewünschten Effekt.
Kann mir jemand helfen?
Geht das überhaupt aus einem Bericht heraus?

Liebe Grüße
Bernd

MzKlMu

Gruß
Klaus

Bernd Sowa

Ja, ich habe auf dem Formular einen Button den ich ansprechen möchte.

Beaker s.a.

Hallo Bernd,

Formular- oder Control-Event ruft man nicht von aussen auf.

Schreibe den Code, der im Click-Event steht in eine öffentliche Sub.
Diese kannst du dann im Click-Event des Buttons und beim Close-Event des
Reports aufrufen.
Beachte, dass es dort dort kein Me. gibt. Du musst also evtl. eine Referenz
auf das Form an die Sub übergeben.

gruss ekkehard
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderen geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut.
Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams)

markusxy

Zitat von: Beaker s.a. am November 05, 2024, 16:40:24Schreibe den Code, der im Click-Event steht in eine öffentliche Sub.

Wozu soll das gut sein, noch dazu ohne zu wissen worum es geht?

Ich würde vermutlich (aber das ist auch abhängig vom Zweck) eine öffentliche Methode im Formular erstellen und die sowohl vom Event als auch von 'außen' aufrufen.
Damit ist dann ein sauberes Error Handling möglich - eh ein Fremdwort für die meisten - sowohl inhaltlich als auch logisch - leider.
Es spricht aber auch nichts dagegen eine öffentliche Sub zu verwenden, wenn das ein wieder verwendbarer Code sein soll.


knobbi38

Hallo Bernd,

Zitatich möchte gerne beim Schließen eines Berichtes eine Schaltfläche in einem geöffneten Formular angesprochen wird.
Was genau ist damit gemeint? Möchtest du Eigenschaften des Buttons verändern oder dessen Ereignisroutine aufrufen. Letzteres wäre "Bad Practice".



Bernd Sowa

Ja, vielleicht war ich ein wenig sparsam mit den informationen.
Im Formular (Endlos) werden durch filtern und setzen von Häkchen bestimmte Datensätze markiert.
Durch einen Klick auf eine Schaltfläche werden
1. Daten in die ausgewählten Datensätze geschrieben (aktuelle Zeit und ein weiteres Häkchen).
2. Die ausgewählten Datensätze an den Bericht übergeben.
Wenn der Bericht ausgedruckt wird ist alles so wie es soll.
Wenn der Benutzer aber nicht ausdruckt sondern vielleicht im letzten Moment bemerkt, dass er die falschen Datensätze markiert hat wird er den Druckvorgang abbrechen.
In dem Fall müssen die vorher gemachten Einträge (aktuelle Zeit und ein weiteres Häkchen in den vorher gewählten Datensätzen) wieder entfernt werden. Das kann diese Schaltfläche die ich ansprechen möchte.
Pauschal beim Schließen geht ja nicht weil mal ist gut und mal muss gelöscht werden...

knobbi38

Hallo Bernd,
Zitat von: Bernd Sowa am November 06, 2024, 08:19:31Das kann diese Schaltfläche die ich ansprechen möchte.
Du hast dein Vorhaben jetzt besser erklärt, aber genau den Kern der Sache ausgelassen. Wieso kann das die Schaltfläche?



Bernd Sowa

Die Schaltfläche hat eine Ereignisprozedur die mit einem Loop an allen vorher markierten Datensätzen die neuen Einträge wieder entfernt.




knobbi38

Ok, diese Ereignisprozedur gehört als "normale" Public Sub in das Endlosformular und kann dann von überall aus aufgerufen werden. Das war aber schon Thema in #3 und #4.


Bernd Sowa

Hallo
jo, ich habe es etwas ignoriert weil ich nicht so recht wusste wie es geht.
Nun habe ich es einfach (haha) mal probiert und es geht tatsächlich.

Ich kann die public sub aus dem Bericht abrufen mit
Call Forms.frm_Arbeitsblatt_RT_Auf.Abbrechen

Danke sehr

knobbi38

Hallo Bernd:

noch einen kleinen Tip am Rande: bevor du auf das Formular zugreifst, solltest du prüfen, ob es überhaupt geladen ist. So etwas macht eine Anwendung stabiler. Wenn du mit Logging arbeitest, könnte man das dann noch im Fehlerfall um einen Logeintrag erweitern.

Gruß
Knobbi38