MsgBox zu Schaltfläche wenn deaktiviert

Hallo ich bin wieder auf euere Hilfe angewiesen!

Ich habe ein Formular „Hauptmenü“ mit folgenden Schaltflächen
Schaltfläche „Einkauf“
Schaltfläche „Lager“
Schaltfläche „Allgemeine Verwaltung“
Schaltfläche „Verkauf“

Und ein Formular „Einstellungen“ mit folgenden Kontrollkästchen
Kontrollkästchen „Einkauf“ (Ja/Nein)
Kontrollkästchen „Lager“ (Ja/Nein)
Kontrollkästchen „Allgemeine Verwaltung“ (Ja/Nein)
Kontrollkästchen „Verkauf“ (Ja/Nein)

Nun möchte ich das wenn Die Kontrollkästchen im Formular „Einstellungen“ deaktiviert sind und man im Formular „Hauptmenü“ auf die entsprechende Schaltfäche drück das dann eine MsgBox Kommt mit dem Text „Die Schaltfläche ist noch gesperrt“.

Wenn Sie aber aktiviert sind sollen die Schaltflächen zu den entsprechenden Formularen weiterleiten.

Beispiel: Kontrollkästchen „Verkauf“ ist deaktiviert (Nein) dann soll wenn ich im „Hauptmenü“ auf die Schaltfläche „Verkauf“ klicke eine MsgBox mit folgenden Text kommen „Die Schaltfläche ist noch gesperrt“.
Wenn Sie aber aktiviert (Ja) ist dann soll es das Formular z.B. „Verkaufsstatistik“ öffnen

Ich hoffe ich konnte mein Problem richtig erklären und Ihr mir helfen könnt.

Vielen Dank im Voraus

Rudolf

Holla.

Ich hoffe ich konnte mein Problem richtig erklären und Ihr mir
helfen könnt.

Du müsstest Dich schon für eine Option entscheiden : Entweder ist eine Schaltfläche deaktiviert - dann kannst Du sie nicht anklicken und demzufolge kann auch keine Aktion ausgelöst werden; oder aber die Schaltfläche ist immer aktiviert, aber abhängig vom Zustand des Ziehungsgerätes und der 49 Kugeln der Kontrollboxen wird ein Formular aufgerufen oder die entsprechende MsgBox.

Bei aktivierter Schaltfläche sieht das so aus :

Sub Dingsknopf\_Click()
If Bumsfeld Then
 DoCmd.OpenForm "PiPaPo" ...
Else
 MsgBox "bla bla bla" ...
End If
End Sub

Willst Du dagegen mit deaktivierten Schaltflächen arbeiten (was ich aus Gründen der Durchschaubarkeit empfehlen würde), kannst Du einen entsprechenden Hinweistext hinter der Schaltfläche verstecken - das machst Du am besten im Form_Current etwa folgendermaßen

Sub Form\_Current()
If Bumsfeld Then
 Dingsknopf.Enabled=True
 Dingsknopf.ControlTipText="Schaltfläche aktiviert"
Else
 Dingsknopf.Enabled=False
 Dingsknopf.ControlTipText="Schaltfläche gesperrt"
End If
End Sub

Gruß Eillicht zu Vensre

Danke soweit

Ich entscheide mich für die bei der die Schaltfläche immer aktiviert ist!!

Ich habe versucht den Code zu benutzen und einbischen verändert aber es funktioniert nicht richtig.

Kann mir jemand sagen was an dem Code Falsch ist???

If Table.Einstellungen![Einkauf] = False Then
MsgBox („Ist Gesperrt“)
Else
DoCmd.OpenForm „Einkauf“
End If

Beim Klicken soll es in der Tabelle „Einstellungen“ Feld „Einkauf“ überprüfen ob es „Ja“ oder „Nein“ ist (Kontrollkästchen). Wenn „Nein“ Dann Soll die MsgBox mit folgedem Text auftauchen „Ist Gesperrt“
Sonst soll es das Formular „Einkauf“ öffnen!

Über euere Hilfe würde ich mich freuen!!

Rudolf

Hallo,

If Table.Einstellungen![Einkauf] = False Then

nicht auf die Tabelle verweisen, sondern auf den im Formular angezeigten Datensatz:

If Me![Einkauf] = False Then
oder
If Forms![Formularname]![Einkauf] = False Then

ujk

Aloha.

Ich entscheide mich für die bei der die Schaltfläche immer
aktiviert ist!!
Ich habe versucht den Code zu benutzen und einbischen
verändert aber es funktioniert nicht richtig.

If Table.Einstellungen![Einkauf] = False Then
MsgBox („Ist Gesperrt“)
Else
DoCmd.OpenForm „Einkauf“
End If

Ohne Dir übermäßig auf den Schlips treten zu wollen : Es sieht mir ganz und gar oder schwan und roh nicht danach aus, als verstündest Du wirklich, was Du eigentlich tust …

Die von Dir im ursprünglichen Text angegebenen Kontrollkästchen sind Steuerelemente eines Formulars. Diese kannst Du an eine Tabelle knüpfen, klar. Das macht man typischerweise per Abfrage in der Datenherkunft des Formulars.

Der Code hinwiederum liegt im Formular und nicht in der Tabelle; d.h. das, was Du am Bildschirm siehst, ist eine Abbildung der Datenquelle und nicht die Datenquelle selbst. Man nennt das auch eine Benutzersicht (View). Dieser View wird vom Code manipuliert; die Datenherkunft bleibt bis zum Abschluss einer Transaktion (z.B. Wechseln des Datensatzes, oder auch ggf. Springen zu einem anderen Steuerelement) unverändert.

Der Code im Formular wird an Ereignisse gebunden, wie z.B. „Beim Anzeigen“ (Form_Current); dieses Ereignis tritt beim Wechseln des Datensatzes auf. Von diesem Ereignis weiß die dem Formular zugrunde liegende Tabelle nicht das Geringste. Deswegen steht auch immer das kleine Wörtlein „Private“ vor einer Ereignisprozedur im Formular.

Bei Steuerelementen musst Du wiederum genau unterscheiden zwischen gebundenen und ungebundenen solchen : Ein gebundenes Steuerelement steht mit der Ursprungstabelle in Verbindung, wird von diesem mit Daten gefüllt und aktualisiert sich ggf. ohne Dein Zutun. Ein ungebundenes Steuerelement kannst Du, wenn Du willst, mit Daten beliebiger Herkunft füllen (aus einer anderen Tabelle, hartcodiert oder per Ereigniscode); für ein Zurückschreiben des Steuerelement-Inhaltes musst Du dann aber wieder - im Code - selbst sorgen.

Das erklärt dann auch, weshalb Dein Code nicht funktionieren kann, abgesehen von der Syntax mit „!“ und „.“, die in Access nicht gerade trivial ist. Die Tabelle „Einstellungen“ ist Deiner Ereignisprozedur nicht bekannt - diese kennt nur die Steuerelemente des Formulars. Wenn überhaupt, müsstest Du Dich also auf das Steuerelement „Kontrollkästchen1“ und nicht auf das ggf. daran gebundene Tabellenfeld Tables!Einstellungen.Einkauf beziehen.

Natürlich kannst Du mit Hilfe von Domänenfunktionen, Recordsets und anderen Gemeinheiten auch direkte Tabellenzugriffe aus einer Ereignisprozedur heraus durchführen. Ich würde Dir aber dringend empfehlen, das gleich wieder zu vergessen und Dich stattdessen mit den von mir oben skizzierten Zusammenhängen auseinanderzusetzen.

Dynamische Veränderungen eines Views, wie Du sie hier umzusetzen versuchst, scheinen mir nach dem gewonnenen Eindruck doch noch nicht so ganz das Deinem Wissensstand Entsprechende zu sein. Immerhin : Wenn Du diesen Sums hier vollständig verstehst, ist diese meine Einschätzung grottenfalsch :wink:

Gruß Eillicht zu Vensre

1 Like

Du hast Recht!!!

Ohne Dir übermäßig auf den Schlips treten zu wollen : Es sieht
mir ganz und gar oder schwan und roh nicht danach aus, als
verstündest Du wirklich, was Du eigentlich tust …

Du hast Recht eigendlich verstehe ich das nicht!

Ich habe paar Bücher gekauf die heißen zwar „Access für Anfänger ohne Vorkenntnisse“ oder „VBA-Programmieren ohne Vorkenntnisse“ aber ich verstehe doch nichts weil die schon mitten in der VBA-Programmierung anfangen.

Deswegen versuche aus Praktischen Beispielen zu lernen, guck mir Codes an und versuch Sie mal und dann versuche ich Sie zu verstehen und zu lernen!

Tut mir Leid wenn ich euch mit der Fragerei auf die nerven gehe.
Wenn Ihr wirklich gute und einfach zu verstehende Bücher für Anfänger ohne Vorkenntnisse kennt lasst es mich bitte wissen.

Danke!

Rudolf

Nochmal Hallo.

Tut mir Leid wenn ich euch mit der Fragerei auf die nerven
gehe.

Das ist nicht das prinzipielle Problem - es steht ja niemand mit der Pistole hinter mir und zwingt mich zum Antworten. Die Kernfrage ist, ob Dir die Lösungen für Dein Problem etwas nützen … wenn mir ein Elektriker eine Hausschaltung mit allem Komfort und zurück hinzaubert, hole ich mir beim Versuch, das zu reproduzieren, doch nur schwarze Finger und eine merkwürdige Frisur. Na gut, an einer versschwurbelten Datenbank stirbt man nicht, aber Du möchtest ja sicherlich Ergebnisse sehen. Und da tut es nicht gut, den zweiten, dritten oder siebenundleipzigsten Schritt vor dem ersten zu tun.

Wenn Ihr wirklich gute und einfach zu verstehende Bücher für
Anfänger ohne Vorkenntnisse kennt lasst es mich bitte wissen.

Das Problem bei Access liegt darin, dass es nicht so intuitiv funktioniert wie eine Textverarbeitung oder auch Tabellenkalkulation, wo man mit Trial & Error durchaus recht weit kommen kann. Eine Datenbank, die diesen Namen verdient, erfordert leider Gottes eine saubere Konzeption (z.B., was speichert man in Tabellen und was generiert man zur Laufzeit?), schon lange bevor man den ersten Hackebumm in Access selbst startet.

Wenn Du wirklich Anfänger ohne Vorkenntnisse bist, gibt es drei Wege : den über Bücher, wobei leider eine Menge Schrott am Markt unterwegs ist und den Weg über die Nordwind-Datenbank, die M$ mit Access ausliefert. Der zweite Weg hat den Nachteil, dass Du recht wenig über Programmierung lernst - dafür aber allerleihand über Datenquellen und ihre Verbindung zur Bildschirmdarstellung. Der dritte Weg führt über die Linkliste dieses Brettles, z.B. zu http://www.dbwiki.de/ (dort sitzt ein richtiger Experte, der sich leider extrem rar macht bei w-w-w).

Wenn Du Dich mittels Büchern fortbewegen willst - und um das gesamte Spektrum abzudecken, brauchst Du erstens deren mehrere und zweitens eine relativ lange Zeit (ich ärgere mich mit dem #*%$§ nun schon einige Jahre herum und würde niemals behaupten wollen, dass ich alle Aspekte von Access auch nur ansatzweise kenne, geschweige denn beherrsche). Für den Anfang würde ich Dir die Bücher von Hoffmann und Spielbauer empfehlen. Schau mal in diesen /t/lektuere-zu-access-97/687495

Gruß Eillicht zu Vensre

1 Like

Vielen Dank

… aber Du möchtest ja sicherlich
Ergebnisse sehen.

Natürlich

Der dritte Weg führt
über die Linkliste dieses Brettles, z.B. zu
http://www.dbwiki.de/ (dort sitzt ein richtiger Experte, der
sich leider extrem rar macht bei w-w-w).

OK ich werde es da mal versuchen!

Und bitte kauf Dir die Dinger nicht aufs Geratewohl oder
Krummübel, sondern nimm Dir ein paar Stunden Zeit und schau in
einer Bibliothek in die Dinger rein.

Danke für den Tipp!!

Gruß Eillicht zu Vensre

Vielen Dank!!!

Gruß aus Denklingen

Rudolf