Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Abfrage schließen





Frage

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 1 von Marie

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

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

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

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

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

Hallo Marie,

wie immer eine perfekte Lösung von Dir. Nur in der Datenblattansicht muss man anstatt Visible eine ColumnHidden-Eigenschaft verwenden
Vielen Dank

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: