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 ⏩

mad

Hallo Zusammen,

ich würde gerne in einem Formular "FormAdministrator" per setzen eines Häckchens im "Kontrollkästchen89" in einem anderen Formular "frm_Formauswahl_Kdt" den Button "btnPersonal" auf "Aktiviert" umstellen.

Dazu habe ich folgenden Code angesetzt:
Private Sub Kontrollkästchen89_AfterUpdate()
If Me.Kontrollkästchen89 = -1 Then
Forms.frm_Formauswahl_Kdt.btnPersonal.Enabled = True
Else
Forms.frm_Formauswahl_Kdt.btnPersonal.Enabled = False
End If
End Sub

leider kommt jetzt aber die Fehlermeldung wie im Anhang zu sehen.

Könnte mir jemand einen Tipp geben wo der Fehler liegt?

Gruss
mad

silentwolf

Hallo,
die Form muß geöffnet sein dann sollte es funktionieren.
Wenn Du aber die Form geschlossen hast dann würde es so funktionieren.

Private Sub Kontrollkästchen0_Click()
    If Me.Kontrollkästchen0 = -1 Then
        ShowButtonForm
        Forms.frmButton.btnEnabled.Enabled = True
    Else
        ShowButtonForm
        Forms.frmButton.btnEnabled.Enabled = False
    End If
   
End Sub

Sub ShowButtonForm()
    DoCmd.OpenForm "frmButton"
End Sub


gibt vielleicht noch bessere Möglichkeiten aber so hab ich es mal probiert und geht.

HTH

mad

Hallo silentwolf,

danke für die superschnelle Antwort. Habe es ausprobiert und es funktioniert.

Gibt es auch eine Möglichkeit ohne das dass Formular geöffnet ist bzw. geöffnet wird?
So das dass im Hintergrund abläuft.


Gruss
mad

silentwolf

Hallo mad,

ZitatGibt es auch eine Möglichkeit ohne das dass Formular geöffnet ist bzw. geöffnet wird?
So das dass im Hintergrund abläuft.

hmm kann sein aber das weiß ich leider nicht.. aber wenn es im Hintergrund passieren soll dann ist es ja gar nicht zu kontrollieren was passiert ausser natürlich Du lässt eine Msgbox erscheinen das nun die Prozedur ausgeführt worden ist oder dergleichen.
Warum möchtest Du denn das? Was ist denn der Hintergrund Deines Vorhabens?

Gruß
Albert

mad

Hallo,

habe jetzt festgestellt das die Umstellung des Buttons nur so lange aktiv ist, solange das Formular "frm_Formauswahl_Kdt" offen ist.

Was ist mein Vorhaben:
Ich möchte das ich als Admin entsprechende Buttons auf Formularen aktivieren oder deaktivieren kann, so daß der Anwender nur die aktiven Buttons ausführen kann. Das will ich über mein "FormAdministrator" für verschiedene Formulare und Buttons definieren.
Da ist aber Voraussetzung das die Aktivierung im entsprechende Formular bestehen bleibt bis der Button eventuell wieder deaktiviert wird.

Vielleicht sollte ich noch erwähnen das dass Kontrollkästchen aus der Tabelle "tabFormAdministrator_Buttons" kommt bzw. gespeichert wird.

Gruss
mad

PhilS

Zitat von: mad am Oktober 30, 2019, 11:02:27
Vielleicht sollte ich noch erwähnen das dass Kontrollkästchen aus der Tabelle "tabFormAdministrator_Buttons" kommt bzw. gespeichert wird.
Dein Admin-Formular ist für die Ausführung bei den einzelnen Usern ziemlich irrelevant. Du musst immer die Werte aus der o.g. Tabelle lesen wenn von einem User ein Form geöffnet wird.

Schau dir mal den Download zu Karl Donaubauers "20 Tipps"-Vortrag von der letzten AEK an. Da gibt es genau dafür ein Beispiel.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

trebuh

Hallo mad,

wenn Du das Kontrollkästchen in einer Tabelle gespeichert hast, dann brauchst Du ja nur beim öffnen des Formulars per VBA abfragen, ob das das Kontrollkästchen wahr oder falsch ist.

Dann kannst Du ja entsprechend ein oder mehrere Buttons und auch andere Steuerelemente gezielt aktivieren, einblenden etc.

Diese Abfrage musst Du dann halt in alle notwendigen Formulare einbauen.

Gruß
Hubert

mad

Hallo trebuh,

das hört sich ja einfach an, habe es wie folgt versucht, will aber nicht funktionieren.
Wahrscheinlich liegt wieder an einer Kleinigkeit.

Hier mein aktueller Code:
Private Sub Form_Load()
  If tabFormAdministrator_Buttons.KK_kdt_peronal = 1 Then
  Forms.frm_Formauswahl_Kdt.btn_Personal.Enabled = True
    End If
End Sub


Bei der Anregung von PhilS bin ich noch am durchsehen.


Gruss
mad

mad

Hallo Zusammen,
habe was zu DCount gefunden und somit mein Problem in den Griff bekommen.

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.


Gruss
mad

mad

So,
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.

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?


Gruss
mad

PhilS

Zitat von: mad am Oktober 30, 2019, 16:12:43Pustekuchen.
Warum Pustkuchen?

Zitat von: mad am Oktober 30, 2019, 16:12:43Hätte doch noch jemand einen Tipp?
Schau dir das oben angeführte Beispiel an. - Dauert erstmal einen Moment, aber insgesamt dürftest du damit Zeit sparen.

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

emmoticon

Hallo mad,

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


An dem Code fehlt a) der Personenbezug und b) die Bedingung selbst.
Den Personenbezug kannst du herstellen, indem du im Formular beispielsweise ein Feld namens txbMitarbeiter reinschreibst. Wenn sich dann ein entsprechender User einloggt, wird dort sein Name hinterlegt. Diesen Namen kannst du dann verwenden um die Bedingung fuer die DomaeneFunktion zu machen.

Beispiel:
If Dlookup("[KK_kdt_personal]", "tabFormAdministrator_Buttons", "Mitarbeitername = '" & me.txbMitarbeiter & "'") = True then
  Me!btn_Personal.Enabled = True
End if
Gruß, Smiley mit Rechtschreibfehler

mad

Hallo,

den Hinweis von emmoticon nehme ich gerne auf.

Aber vorher hätte ich noch eine Frage an PhilS, bin ich im Code vom "frmHorEndlos_sfrm" richtig?
Bin mir nicht ganz sicher.


Gruss
mad

PhilS

#13
Zitat von: mad am Oktober 31, 2019, 20:31:48
Aber vorher hätte ich noch eine Frage an PhilS, bin ich im Code vom "frmHorEndlos_sfrm" richtig?
Bin mir nicht ganz sicher.
Äh, nein, sorry. - Ich habe offenbar die Vorträge verwechselt. Das Beispiel zum Ausblenden und Sperren von Steuerelementen kam im DSGVO-Vortrag vor und nicht bei "20 Tipps". - Leider gibt es das Demo dazu nicht zum Download.

Der Irrtum tut mir leid. - Ich denke aber, dass deine Zeit beim Durchsehen der "20 Tipps" nicht verschwendet war, selbst wenn es nicht direkt zur Lösung des hier diskutierten Problems führt.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

mad

Hallo emmoticon,

habe das mal so wie von Dir beschrieben anzuwenden versucht.
  If DLookup("KK_Allg_personal", "tabPWUsergruppe_Allg", "Klarname = '" & Me.UsernameGlobal & "'") = True Then
                Me!btn_Personal.Enabled = True


Setzt aber keine Buttons aktiv.
Ich vermute das es am ansprechen der Feldnamen "Klarname und UsernameGlobal" liegt, es kommt aber auch keine Fehlermeldung. Habe mal eine kleine Testdatei mit in den Anhang gegeben.
Bitte nicht wundern das die Tabellen, Formulare und diverse Feldnamen etwas anders heissen, ist dem geschuldet das ich meinen alten und den neuen Ansatz noch in einer DB ausprobiere.

Habe zu Testzwecken zwei User (user1 u. user2) angelegt. PW sind auch user1 u. user2.

Gruss
mad