2 Fragen zu Access 97

Hallo,

  1. Frage: Ist es möglich, eine globale Variable als
    Kriterium für eine Abfrage anzugeben? Wenn ja, in welcher
    Form muss diese Variable dort erscheinen?

  2. Frage: Mit welcher Methode/Eigenschaft kann man abfragen, ob ein
    Formular geöffnet ist?

Für Eure Infos vielen Dank.

  1. Frage: Ist es möglich, eine globale Variable als
    Kriterium für eine Abfrage anzugeben? Wenn ja, in welcher
    Form muss diese Variable dort erscheinen?

In „Abfrage“ als DB-Objekt wohl nicht.
In VBA dann aber z.B.:
dim rs as recordset
set rs = currentdb.openrecordset(„SELECT … WHERE ID=“ & GlobalVariable & „;“)

In den Klammern also das SQL-Statement Deiner Abfrage, wobei in der WHERE-Klausel Deine globale Variable zum Einsatz kommt.

  1. Frage: Mit welcher Methode/Eigenschaft kann man abfragen,
    ob ein
    Formular geöffnet ist?

Diese Funktion z.B. als Modul hinterlegen:

Function IsOpenForm(FormName As String) As Boolean
IsOpenForm = IIf(SysCmd(acSysCmdGetObjectState, acForm, FormName) = acObjStateOpen, True, False)
End Function

An zu prüfender Stelle dann:
If IsOpenForm(„DeinForm“) then
'mach was
End If

Gruß
Stephan

http://www.it-werkstatt.com/helpline.html

  1. Frage: Ist es möglich, eine globale Variable als
    Kriterium für eine Abfrage anzugeben? Wenn ja, in welcher
    Form muss diese Variable dort erscheinen?

In „Abfrage“ als DB-Objekt wohl nicht.

Geht doch und zwar indem man die Variable in einer Funktion abfragt
und diese dann als Kriterium in der Abfrage benutzt:

In einem Modul:

Public Function fMeineVariableAbfrage ()
fMeineVariableAbfrage=gvarMeineGlobaleVariable
End Function

wobei natürlich gvarMeineGlobaleVariable der Name der Variable ist.

In der Abfrage dann als Kriterium =fMeineVariableAbfrage eingeben.

Viel Erfolg
Stefan

Hallo Stefan,
danke für Deinen Tipp, den ich ausprobiert habe.
Bei Eingabe des Kriteriums (aus Deinem Beispiel) „=fMeineVariableAbfrage“ in der Abfrage
wird jedoch nach dem Wort „fMeineVariableAbfrage“ gesucht.
Wie kann ich dies verhindern bzw. wie kann
ich die Funktion aufrufen?

Ups

muss natürlich
…In der Abfrage dann als Kriterium fMeineVariableAbfrage() (ohne = Zeichen und mit dem Klammerpaar)eingeben…
heissen.

fMeineVariableAbfrage ist übrigens ein willkürlich gewählter begriff der natürlich durch irgendwas anderes ersetzt werden kann (überall wo er vorkommt)

Viel Erfolg

Hallo Stefan,
danke für den neuen Hinweis, den ich befolgt habe.
Es erfolgt zwar jetzt ein Versuch, die Funktion aufzurufen, jedoch
erscheint die Fehlermeldung

Undefinierte Funktion „fMeineVariableAbfrage“ in Ausdruck.

Die Funktion habe ich unter Module/Allgemein gespeichert.
Ist diese Funktion möglicherweise woanders einzugeben?
Danke für Tipps. MfG.

Hallo Arnold
na dann nochmal von vorne.

Was folgt ist der Inhalt eines Moduls (egal wie das heisst; nennen wir es mal einfach „mdlGlobaleVariable“ das

  1. Eine globale Variable definiert
    und
  2. diese in einer Funktion abfragt

…schnipp…
Option Compare Database
Option Explicit

Global gvarBenutzerID As Integer

Public Function gfgvarBenutzerID()
gfgvarBenutzerID = gvarBenutzerID
End Function
…schnapp…

Global gvarBenutzerID As Integer
kann im Zweifel auch
Global gvarBenutzerID
sein, dann ist er Wert ein Variant
usw.

Das entsprechende Kriterium in der Abfrage ist dann natürlich

…schnipp…
gfgvarBenutzerID()
…schnapp…

Voraussetzung für das Funktionieren ist natürlich, dass irgendwo in den unendlichen Weiten der Datenbank der Variablen ein Wert zugewiesen wurde (in der Art: gvarBenutzerID=Me!MeinFeldMitDerIDDesBenutzers )
und dass der Datentyp stimmt.

Hilfts ?
Stefan

Hallo Stefan,

für die nochmaligen Infos besten Dank.

Deine Infos sind für mich nachvollziehbar.

Der entsprechende Erfolg blieb jedoch leider aus,
obwohl ich meines Erachtens alles genauestens
befolgt habe.

Es erscheint, bei dem Versuch die Abrage oder das
entsprechende Formular zu öffnen, der Hinweis:

Undefinierte Funktion xxx in Ausdruck.

Ich habe keine Erklärung dafür, dass der Funktionsaufruf nicht erfolgt.

Was könnte ich übersehen haben?

Vielleicht stimmen auch deine Verweise nicht (http://www.donkarl.com FAQ 7.10)…

Läßt sich dein Code kompilieren?!

Um welche Access-Version geht es überhaupt?

Schreib mal „Public“ anstelle von „Global“, „Global“ ist obsolet…

Gruß aus dem Norden
Reinhard Kraasch
(http://www.kraasch.de - Access Tipps & Tricks)

Was könnte ich übersehen haben?

keine Ahnung
den Beispielcode habe ich aus einer meiner eigenen (funktionierenden) DBs rauskopiert.

Vielleicht mailst du mir mal die DB
[email protected]
Stefan

Hallo,

habe das Problem inzwischen gefunden und bereinigt. Es lag daran, dass
ich das Klammernpaar als Bezeichnung der Funktion (im Register
Module) nicht angegeben hatte.

Es klappt jetzt wunderbar.

Vielen Dank nochmal für Eure Hilfe.