Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: mad am April 14, 2023, 20:19:03

Titel: Feld sichtbar (Visible) wenn
Beitrag von: mad am April 14, 2023, 20:19:03
Hallo Zusammen,

ich habe in einem Formular (Personalstammdaten) das Textfeld "A_IBAN" das standartmäßig beim öffnen der Formulars nicht sichtbar ist.
Nun soll es,
wenn der Inhalt des Textfeldes "UsernameGlobal" im Formular "UG_frm_Formauswahl_Allg" gleich ist mit dem Feld "NameP" der Abfrage  "abf_IBAN_Kdten",
sichtbar werden.

Das Formular "UG_frm_Formauswahl_Allg" ist immer geöffnet!
Die Abfrage "abf_IBAN_Kdten" soll nicht geöffnet werden, sondern nur im Hintergrund (temporär) herangezogen werden.

Wenn ich den "NameP" "Max Huber" vorgebe, wie im nachfolgenden Code:
Me!A_IBAN.Visible = [Forms]![UG_frm_Formauswahl_Allg]![UsernameGlobal] = "Max Huber"dann funktionierts erstmal wie gewünscht.

Nun wär die Frage, wie kann ich "Max Huber" ersetzen so das auf die Abfrage "abf_IBAN_Kdten" zugegriffen wird.
Über Unterstützung würde ich mich sehr freuen.


Gruss
mad
Titel: Re: Feld sichtbar (Visible) wenn
Beitrag von: mad am April 15, 2023, 04:37:41
Hallo Zusammen,

habe mal die halbe Nacht im Internet gestöbert und bin auf die Funktion "DLookup" gestoßen.

Habe diese wie folgt in meinen Code eingebaut:
Me!A_IBAN.Visible = [Forms]![UG_frm_Formauswahl_Allg]![UsernameGlobal] = DLookup("[NameP]", "abf_IBAN_Kdten")
Leider funktioniert dies nur bediengt. Habe dann noch gelesen das "DLookup" nur den ersten Wert (Zeile) aus der Abfrage verwendet. Meine Abfrage hat aber bis zu drei Werte (Zeilen).


Gruss
mad
Titel: Re: Feld sichtbar (Visible) wenn
Beitrag von: PhilS am April 15, 2023, 09:50:25
Zitat von: mad am April 15, 2023, 04:37:41Habe dann noch gelesen das "DLookup" nur den ersten Wert (Zeile) aus der Abfrage verwendet. Meine Abfrage hat aber bis zu drei Werte (Zeilen).
Die Dlookup-Funktion hat das Criteria-Argument mit dem Filterkriterien, wie in einer Abfrage, angaben kannst, um den Rückgabewert genau(er) zu bestimmen.
Du musst dir nur überlegen, welche deiner drei Datensätze in deiner Abfrage der relevante ist, und dann auf diesen Datensatz filtern.
Titel: Re: Feld sichtbar (Visible) wenn
Beitrag von: mad am April 15, 2023, 16:44:01
Danke für den Tipp.

Habe den Code jetzt wie folgt geändert:
Me!A_IBAN.Visible = [Forms]![UG_frm_Formauswahl_Allg]![UsernameGlobal] = DLookup("[NameP]", "abf_IBAN_Kdten", "[NameP] = [Forms]![UG_frm_Formauswahl_Allg]![UsernameGlobal]")
Jetzt funktionierts wenn einer der drei Personen die das Feld "A_IBAN" sehen dürfen angemeldet ist.

Wenn jemand anders als diese drei Datensätze angemeldet ist läuft es auf einen
ZitatLaufzeitfehler: 13; Typen unverträglich

Wie muß ich den Code erweitern/ändern wenn jemand anders als diese drei Personen/Datensätze angemeldet ist und das Feld "A_IBAN" eben nicht sichtbar sein soll. So was wie "IS NULL".


Gruss
mad
Titel: Re: Feld sichtbar (Visible) wenn
Beitrag von: PhilS am April 15, 2023, 17:04:02
Zitat von: mad am April 15, 2023, 16:44:01Wie muß ich den Code erweitern/ändern wenn jemand anders als diese drei Personen/Datensätze angemeldet ist und das Feld "A_IBAN" eben nicht sichtbar sein soll. So was wie "IS NULL".
Schau dir generell mal die NZ-Funktion (https://support.microsoft.com/de-de/office/nz-funktion-8ef85549-cc9c-438b-860a-7fd9f4c69b6c) an.

Dein Code erzielt zwar das richtige Ergebnis, aber die Prüfung auf Usernamen ist doppelt.
Etwas einfacher und nebenbei ohne das NULL-Problem kannst du es auch so schreiben:

Me!A_IBAN.Visible = DCount("*", "abf_IBAN_Kdten", "[NameP] = [Forms]![UG_frm_Formauswahl_Allg]![UsernameGlobal]") >0
Titel: Re: Feld sichtbar (Visible) wenn
Beitrag von: mad am April 15, 2023, 19:33:00
Danke,

habe mich mit der NZ-Funktion befaßt und meinen Code wie folgt geändert:

Me!A_IBAN.Visible = [Forms]![UG_frm_Formauswahl_Allg]![UsernameGlobal] = Nz(DLookup("[NameP]", "abf_IBAN_Kdten", "[NameP] = [Forms]![UG_frm_Formauswahl_Allg]![UsernameGlobal]"), "")funktioniert soweit.

Danke für Deine optimierte Variante.


Gruss
Manfred