online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon NochEinGast vom 22.04.2020, 09:49 Options

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

Ähnliche Themen

abfrage
jasper111  19.01.2007 - 153 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026