Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Button in einem anderen Formular per Kontrollkästchen aktivieren

Begonnen von mad, Oktober 30, 2019, 09:18:28

⏪ vorheriges - nächstes ⏩

DF6GL

#15
Hallo,

die DB geht nicht mit den Codebeispielen und den bisherigen Beschreibungen konform...  >:(

Wenn formularübergreifende Referenzen auf Steuerelemente, bzw Daten erforderlich sind, sind globale Variablen (oder Tempvars-, Collections-Auflistung oder der Gebrauch des Openargs-Argumentes vorzuziehen. Diese sind vor der ersten Verwendung natürlich zu initialisieren, bzw. zu setzen.


Das ungebundene Feld  "UsernameGlobal" ist beim Laden des Forms noch nicht gesetzt (--> NULL) und demnach nicht brauchbar an dieser Stelle:

Private Sub Form_Load()
  If DLookup("KK_Allg_personal", "tabPWUsergruppe_Allg", "Klarname = '" & Me.UsernameGlobal & "'") = True Then
                Me!btn_Personal.Enabled = True
       End If
....


Wenn schon so, dann so:

ZitatPrivate Sub Form_Load()
  If DLookup("KK_Allg_personal", "tabPWUsergruppe_Allg", "Klarname = '" & Forms!formNeuesPWUsergruppe_Allg!Klarname & "'") = True Then
                Me!btn_Personal.Enabled = True
       End If
.
.
.

'''''''''''''''''''''''''''''''''''''''''''''''''bzw. besser:

Private Sub Form_Load()

Me!btn_Personal.Enabled = DLookup("KK_Allg_personal", "tabPWUsergruppe_Allg", "Klarname = '" & Forms!formNeuesPWUsergruppe_Allg!Klarname & "'")   

.
.
.


wobei hier ein evtl. anders ausgewähltes Form in "formNeuesPWUsergruppe_Allg"  nicht berücksichtigt ist.

Sollten die Einstellungen dynamisch erfolgen müssen, dann muss "nach Aktualisierung" des Forms "formNeuesPWUsergruppe_Allg" eine korrekte Referenzierung auf das (geöffnete) Ziel-Formular erfolgen:



Private Sub Form_AfterUpdate()

Forms!UG_frm_Formauswahl_Allg!btn_Personal.Enabled = DLookup("KK_Allg_personal", "tabPWUsergruppe_Allg", "Klarname = '" & Me!Klarname & "'")
.
.
.
.
End Sub



(Vorschläge an die Code-Konstruktion angepasst!)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mad

Hallo,

habe versucht mit folgendem Code zu arbeiten,
Private Sub Form_Load()
Me!btn_Personal.Enabled = DLookup("KK_Allg_personal", "tabPWUsergruppe_Allg", "Klarname = '" & Forms!formNeuesPWUsergruppe_Allg!Klarname & "'")
...
...
...

Dann bekomme ich aber den Laufzeitfehler 2450 "..kann das Formular "formNeuesPWUsergruppe_Allg".. nicht finden.

Habe auch folgendes versucht, und zwar "Me!UsernameGlobal = globalerBearbeiter" vom Ende des Codes nach oben verlegt.
Private Sub Form_Load()
   Me!UsernameGlobal = globalerBearbeiter
  If DLookup("KK_Allg_personal", "tabPWUsergruppe_Allg", "Klarname = '" & Me.UsernameGlobal & "'") = True Then
                Me!btn_Personal.Enabled = True
...
...


Aktuell funktioniert das auch.

Würde es aber trotzdem gerne optimieren wollen wie von DF6GL beschrieben.
Private Sub Form_Load()
Me!btn_Personal.Enabled = DLookup("KK_Allg_personal", "tabPWUsergruppe_Allg", "Klarname = '" & Forms!formNeuesPWUsergruppe_Allg!Klarname & "'")
...
...
...


Was übersehe ich?


Gruss
mad

DF6GL

Hallo,


Zitat
Was übersehe ich?

Die angegebenen Formulare müssen zwingend geladen sein....

Diese Systematik mit Dlookup und Formverweisen ist eher Flickwerk und beinhaltet latente Fehlersituationen.


Deshalb mein Hinweis, dass man besser (Public)-Variablen statt Form-Referenzen benutzen sollte....

Es wäre auch möglich, das einzustellende Form an die Steuertabelle zu binden und dann auf die Einstellungsfelder direkt zuzugreifen.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mad

Hallo,
ZitatDie angegebenen Formulare müssen zwingend geladen sein....
geht leider nicht, denn das Formular "formNeuesPWUsergruppe_Allg" ist dem Admin vorbehalten. Sonst könnte jeder Anwender selbst seine Voreinstellungen vornehmen.

Habe es dann wie folgt ausprobiert,
Public Sub Form_Load()
  Me!UsernameGlobal = globalerBearbeiter
    Me!btn_Personal.Enabled = DLookup("KK_Allg_personal", "tabPWUsergruppe_Allg", "Klarname = '" & Me!UsernameGlobal & "'")

dann bekomme ich einen Laufzeitfehler 2465  ...kann das angesprochene Feld "UsernameGlobal" nicht finden.

Gruss
mad

trebuh

Hallo Mad,

was willst Du den eigentlich genau machen?
Soll jetzt jeder User bestimmte Dinge nicht machen dürfen, oder geht es eigentlich nur darum, das bestimmte Steuerelemente
nur für den Administrator vorenthalten sind?

In einem Beitrag hast Du geschrieben, daß es jetzt funktioniert.
ZitatHallo Zusammen,
habe was zu DCount gefunden und somit mein Problem in den Griff bekommen.

Code: [Auswählen]

Private Sub Form_Load()
    If DCount("KK_kdt_personal", "tabFormAdministrator_Buttons", _
               "[KK_kdt_personal]= True")  Then
   
        Me!btn_Personal.Enabled = True
        Else
       Me!btn_Personal.Enabled = False

    End If
End Sub


Danke an alle.
...

Und nur beim anhängen des nächsten Buttons wieder nicht.


ZitatSo,
jetzt habe ich mich zu früh gefreut. Ich dachte ich brauche jetzt nur den nächsten Button mit dranhängen und es funktioniert.
Pustekuchen.

Code: [Auswählen]

Private Sub Form_Load()
  If DCount("KK_kdt_personal", "tabFormAdministrator_Buttons", _
               "[KK_kdt_personal]= True") Then
                Me!btn_Personal.Enabled = True
       End If
   If DCount("KK_kdt_grund", "tabFormAdministrator_Buttons", _
               "[KK_kdt_grund]= True") Then
                Me!btn_Grundeinstellung.Enabled = True
    End If
End Sub


Hätte doch noch jemand einen Tipp?
...

der Unterschied an dem beiden Code´s ist die fehlende "ELSE"- Bedingung.

Gruß
Hubert


DF6GL

Halo,

Zitatgeht leider nicht, denn das Formular "formNeuesPWUsergruppe_Allg" ist dem Admin vorbehalten

Wie schon gefragt: Was willst Du denn überhaupt genau machen (Bedienungsablauf)?

Zitat aus meinem vorangehenden Beitrag:
ZitatDiese Systematik mit Dlookup und Formverweisen ist eher Flickwerk und beinhaltet latente Fehlersituationen

Du solltest Dir zunächst ein besseres und funktionierendes Konzept überlegen.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

trebuh


mad

Hallo Zusammen,

was ist mein Ziel:
Über das Formular "formNeuesPWUsergruppe_Allg" möchte ich verschiedene User anlegen und darüber steuern welche Buttos im Formular "UG_frm_Formauswahl_Allg" für den jeweiligen User aktiviert sind. Das Formular "formNeuesPWUsergruppe_Allg" soll aber nicht geöffnet sein um die Buttons auf dem Formular "UG_frm_Formauswahl_Allg" entsprechend zu aktivieren.

Zur Info:
Das öffnen des Formulars "formNeuesPWUsergruppe_Allg" ist bereits definiert und wie gesagt nur dem Admin vorbehalten. Nur in der  Beispiel-DB "PW_NEU_TEST.zip" ist es ohne PW möglich.


Gruss
mad


mad

Ja,
so hätte ich mir das vorgestellt.
Allerdings ohne das UF im HF. Aber habe gesehen das es auch ohne funktioniert.

Jetzt habe ich allerdings die Anregung von GF6GL
ZitatDiese Systematik mit DLookup und Formverweisen ist eher Flickwerk und beinhaltet latente Fehlersituationen
noch nicht berücksichtig, da auch Du die "DLookup" verwendest.

Gruss
mad

trebuh

Die Tabelle im Formular dient nur zum Vergleichen, welche Buttons aktiv sind.

Wie Du es jetzt in Deine Anwendung umsetzt, überlasse ich Dir.
Wie Du siehst ist es kein Pustekuchen  ;D
Gruß Hubert

MzKlMu

Hallo,
Zitatgeht leider nicht, denn das Formular "formNeuesPWUsergruppe_Allg" ist dem Admin vorbehalten.
man kann eine Formular auch unsichtbar (acHidden) öffnen.
Gruß Klaus

DF6GL

Hallo,

den ganzen Thread könnte man verkürzen und zum Ziel kommen, wenn mein Vorschlag zum gebundenen Form realisiert würde...


Habe Dir mal die Fleißarbeit abgenommen. 

(Tabellen sind wegen Vereinfachung der Tests in das FE importiert)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mad

Vielen vielen Dank für die Unterstützung.

Werde die Kurzform in meine Original-DB einbauen.


Danke nochmals
mad