Abfrage schließen
Hallo,
kann mann auf Schließen einer Abfrage reagieren? Ich möchte, dass beim Starten einer Abfrage alle geöffneten Formulare minimiert werden (funktioniert soweit) und beim Schließen der Abfrage wieder maximiert werden.
Vieleicht noch eine Zusatzfrage: Wie kann ich überprüfen, welche Formulare bereits geöffnet sind?
Hat jemand eine Lösung für mich. Danke
Antwort schreiben
Antwort 1 von Marie vom 23.04.2020, 03:39 Options
SELECT MSysObjects.Name
FROM MSysObjects
WHERE (((MSysObjects.Type)=-32768) AND ((MSysObjects.Flags)=0))
ORDER BY MSysObjects.Name;
Diese Abfrage liefert Dir alle Formularnamen. Die kannste jetzt mit ner Schleife durchlaufen
If fkt_isFormOpen("DeinFormular") Then
Public Function fkt_isFormOpen(StrName As String) As Boolean
fkt_isFormOpen = (SysCmd(acSysCmdGetObjectState, acForm, StrName) > 0)
End Function
nur in Formularen kannst Du auf Änderungen reagieren, in
Abfragen nicht. Du kannst jedoch ein Formular in der Datenblattansicht
darstellen, das sieht genauso aus wie eine Abfrage.
Gruß Marie
Antwort 2 von NochEinGast vom 24.04.2020, 15:14 Options
Danke Marie,
Deine Tipps sind super. Nur bin ich jetzt auf ein weiteres Problem gestoßen: Die Abfrage, auf der mein Formular basiert, wird zur Laufzeit mit unterschiedlicher Anzahl an Feldern erstellt und gespeichert. D.h. das Formular muss immer wieder an eine neue Abfrage angepasst werden.
Ich habe eine Weile rumexperimentiert, leider ohne positiven Ergebnisse (Wie macht das eigentlich der "Formular-Assistent").
Hat jemand vieleicht dafür eine Lösung
Danke im Voraus
Antwort 3 von Marie vom 26.04.2020, 23:13 Options
Deine Frage verstehe ich jetzt nicht wirklich. Mach mal ein konkretes Beispiel.
Zitat:
D.h. das Formular muss immer wieder an eine neue Abfrage angepasst werden.
Was Du damit meinst hab ich nicht kapiert.
Die einzelnen Felder einer Abfrage kann man auch auslesen, bzw den SQL der gesamten Abfrage. Ich müsste nur erst genau verstanden haben was Du wozu brauchst.
Gruß Marie
Antwort 4 von NochEinGast vom 29.04.2020, 08:34 Options
Hallo Marie,
meine Abfrage wird per VBA-Code immer neu erzeugt, der Anwender kann entscheiden was angezeigt werden soll. Das bedeutet, dass die Abfrage einmal z.B. aus zwei Feldern besteht(Kundenname, Kundenvorname) beim nächsten Mal drei (Kundenname, Kundenvorname, Telefonnummer). D.h ich muss einmal den Formular haben, der zwei Spalten hat, später mit drei und dann vielleicht mit 5.
Ich hoffe, dass ich mich jetzt verständlicher ausgedrückt habe
Gruß NochEinGast
Antwort 5 von Marie vom 30.04.2020, 02:12 Options
Dann machst Du ein Formular wo alle hundert Felder drin sind, alle ausgeblendet, und in dem Moment wo der Benutzer auswählt was er sehen will merkst Du dir die Felder und blendest die ein in dem Formular. Ereignis beim Laden: visible = true
Gruß Marie
Antwort 6 von NochEinGast vom 30.04.2020, 12:19 Options
Hallo Marie,
wie immer eine perfekte Lösung von Dir. Nur in der Datenblattansicht muss man anstatt Visible eine ColumnHidden-Eigenschaft verwenden
Vielen Dank