Discussion:
Access: Abfrage vor dem Ausführen eines Makros
(zu alt für eine Antwort)
Stephan
2004-08-12 06:54:05 UTC
Permalink
Hallo,
ich habe innerhalb eines Formulars eine Schaltfläche eingebaut. Hinter
der Schaltfläche liegt ein Makro. Nun möchte ich gerne zur Sicherheit
ein Popup einbauen und die Anwender vor den Ausführen des Makros
fragen, ob sie dies wirklich ausführen wollen. -> "Wirklich ausführen?
Ja/Nein" Bei "Ja" soll das Makro ausgeführt werden, bei "Nein" eben
nicht.
Das Makro löscht einen Tabelleninhalt und füllt ihn danach wieder mit
anderen Datensätzen.
Alle Warnmeldungen musste ich abschalten, da viele Anwender nur eine
Runtime-Version haben.

Hoffentlich kann mir jemand helfen.

Danke

Gruss
Stephan
Jürgen Volke
2004-08-12 07:36:52 UTC
Permalink
Hallo Stephan

geb hier bitte auch deinen Nachnamen an!
Post by Stephan
ich habe innerhalb eines Formulars eine Schaltfläche eingebaut. Hinter
der Schaltfläche liegt ein Makro. Nun möchte ich gerne zur Sicherheit
ein Popup einbauen und die Anwender vor den Ausführen des Makros
fragen, ob sie dies wirklich ausführen wollen. -> "Wirklich ausführen?
Ja/Nein" Bei "Ja" soll das Makro ausgeführt werden, bei "Nein" eben
nicht.
steige auf VBA um, dann ist das kein Prob:

If MsgBox("Wirklich ausführen?" , vbYesNo) = vbYes Then
Code aus Makro->VBA
end if

HTH Jürgen
Peter Steimann[MVP Access]
2004-08-12 07:41:34 UTC
Permalink
Post by Stephan
Hallo,
ich habe innerhalb eines Formulars eine Schaltfläche eingebaut. Hinter
der Schaltfläche liegt ein Makro. Nun möchte ich gerne zur Sicherheit
ein Popup einbauen und die Anwender vor den Ausführen des Makros
fragen, ob sie dies wirklich ausführen wollen. -> "Wirklich ausführen?
Ja/Nein" Bei "Ja" soll das Makro ausgeführt werden, bei "Nein" eben
nicht.
Das Makro löscht einen Tabelleninhalt und füllt ihn danach wieder mit
anderen Datensätzen.
Igitt, Makros....-;)
Post by Stephan
Alle Warnmeldungen musste ich abschalten, da viele Anwender nur eine
Runtime-Version haben.
Hoffentlich kann mir jemand helfen.
Dim Antwort As Byte
Antwort = MsgBox("Wollen Sie wirklich ausführen?", vbYesNo +
vbCritical)
If Antwort = 6 Then
'Dein Makro
'Besser wäre allerdings vba-code
Else
'Aktion wurde abgebrochen"
End If
--
Gruss

Peter
-----------------------------------------------------------
Mitglied des APP-Profipools www.accessprofipool.de
Zeiterfassungs-Systeme unter www.timesoft.ch und www.biometrica.ch
http://mvp.support.microsoft.com/default.aspx?scid=fh;DE;mvpspsteimann
Stephan
2004-08-13 13:31:36 UTC
Permalink
Post by Peter Steimann[MVP Access]
Post by Stephan
Hallo,
ich habe innerhalb eines Formulars eine Schaltfläche eingebaut. Hinter
der Schaltfläche liegt ein Makro. Nun möchte ich gerne zur Sicherheit
ein Popup einbauen und die Anwender vor den Ausführen des Makros
fragen, ob sie dies wirklich ausführen wollen. -> "Wirklich ausführen?
Ja/Nein" Bei "Ja" soll das Makro ausgeführt werden, bei "Nein" eben
nicht.
Das Makro löscht einen Tabelleninhalt und füllt ihn danach wieder mit
anderen Datensätzen.
Igitt, Makros....-;)
Post by Stephan
Alle Warnmeldungen musste ich abschalten, da viele Anwender nur eine
Runtime-Version haben.
Hoffentlich kann mir jemand helfen.
Dim Antwort As Byte
Antwort = MsgBox("Wollen Sie wirklich ausführen?", vbYesNo +
vbCritical)
If Antwort = 6 Then
'Dein Makro
'Besser wäre allerdings vba-code
Else
'Aktion wurde abgebrochen"
End If
Hallo Peter,
auch Dir (wie auch Henry) Danke für die Hilfe.
Ich habe es im Makro (warum igitt?? ;-) und im VBA (bah) probiert.
Beides klappt gut.
Gruss
Stephan
Michel Fouquet
2004-08-13 14:02:25 UTC
Permalink
Hallo Stephan,

"Stephan" <***@radeberger-gruppe.de> schrieb im Newsbeitrag news:***@posting.google.com

wenn man Dich bittet, Dich an die Regeln dieser NG zu halten (Verwendung
des Realnamens im Newsreader, siehe Newbie-Info), dann tue das doch
bitte auch.
Post by Stephan
Ich habe es im Makro (warum igitt?? ;-) und im VBA (bah) probiert.
Meine hauptsächlichen Igitts für Makros:

Makros haben keine Fehlerbehandlungsmöglichkeit.
Die Lesbarkeit von Makros ist fast nicht möglich.
Makros haben keine Fehlerbehandlungsmöglichkeit.
Die Verwendung von Konstanten ist nicht möglich.
Makros haben keine Fehlerbehandlungsmöglichkeit.
Die Verwendung von Variablen ist nicht möglich.
Makros haben keine Fehlerbehandlungsmöglichkeit.
Die Verwendung von Schleifen ist nicht möglich.
Makros haben keine Fehlerbehandlungsmöglichkeit.
Die Verwendung von Entscheidungsstrukturen ist nicht möglich.
Makros haben keine Fehlerbehandlungsmöglichkeit.
Die Auslagerung von Makros in externe Bibliotheken ist nicht möglich.
Makros haben keine Fehlerbehandlungsmöglichkeit.
Die direkte Verbindung von Formular und Makro ist nicht möglich.
Makros haben keine Fehlerbehandlungsmöglichkeit.
Die übersichtliche Dokumentation von Makros ist nicht möglich.
Makros haben keine Fehlerbehandlungsmöglichkeit.

(nicht möglich heisst hier auch: oder nur mit bösem Geknorze).

Es gibt m.E. nur zwei verwendbare Makros:

AutoExec bzw. ein eigenes (per Befehlszeile aufrufbares) Startmakro und
AutoKeys

wobei das AutoExec-Makro durch ein Startformular und Setzen der
Access-Starteigenschaften bereits vollständig ersetzbar ist.


mfg,
Michel
--
Informationen für Newbies (Neulinge) in den Access-Newsgroups
http://www.doerbandt.de/Access/Newbie.htm

Richtig zitieren im Usenet
http://got.to/quote

Gruppen-Gurgeln: Suchen in den Newsgroups
http://groups.google.de/advanced_group_search?hl=de&lr=&ie=UTF-8

FAQ: http://www.donkarl.com/AccessFAQ.htm
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Jürgen Volke
2004-08-13 15:46:06 UTC
Permalink
Hallo Michel
Post by Michel Fouquet
AutoExec bzw. ein eigenes (per Befehlszeile aufrufbares) Startmakro und
AutoKeys
ich kenne noch eine 3.

Ausführen einer Funktion und aufruf der MDB mit dem Parameter /x MeinMakro

da kann man dann mehrere verschiedene Funktionen in eine MDB packen und
braucht nicht für jede eine eingene mit Autoexec-Makro

womit deine Argumentation des Ersetzen durch das Startformular auch
entgräftet wird.

Gruß Jürgen
Michel Fouquet
2004-08-13 16:29:31 UTC
Permalink
Hallo Jürgen,
Post by Jürgen Volke
Post by Michel Fouquet
AutoExec bzw. ein eigenes (per Befehlszeile aufrufbares) Startmakro
und AutoKeys
ich kenne noch eine 3.
Ausführen einer Funktion und aufruf der MDB mit dem Parameter /x MeinMakro
da kann man dann mehrere verschiedene Funktionen in eine MDB packen
und braucht nicht für jede eine eingene mit Autoexec-Makro
da sind wir uns völlig einig! Das war eigentlich genau das, was ich mit
dem Zusatz
"bzw. ein eigenes (per Befehlszeile aufrufbares) Startmakro" gemeint
hatte, aber nicht im Detail ausführen wollte. Also z.B. das Umbiegen der
Shift-Taste usw.
Post by Jürgen Volke
womit deine Argumentation des Ersetzen durch das Startformular auch
entgräftet wird.
Meine Aussage bezog sich auf das Standard-AutoExec-Makro. Die
Vermischung von AutoExec-Makro und Startformular bringt nur Ärger.
Insofern auch hier: ACK, bzw. Widerspruch gegen die Entkräftung, Euer
Ehren!

Ciao,
Michel
Henry Habermacher [MVP Access]
2004-08-14 14:13:37 UTC
Permalink
Post by Michel Fouquet
Post by Jürgen Volke
da kann man dann mehrere verschiedene Funktionen in eine MDB packen
und braucht nicht für jede eine eingene mit Autoexec-Makro
da sind wir uns völlig einig! Das war eigentlich genau das, was ich
mit dem Zusatz
"bzw. ein eigenes (per Befehlszeile aufrufbares) Startmakro" gemeint
hatte, aber nicht im Detail ausführen wollte. Also z.B. das Umbiegen
der Shift-Taste usw.
Und das gleiche lässt sich wiederum über das Start Formular machen, wenn
man statt des /x Parameters, den /cmd Parameter verwendet und diesen
dann im Start Formular auswertet ;-)

Womit dann wirklich nur noch das AutoKeys Makro sinn macht, falls dieses
benötigt wird. Auch hier gibt es einen Weg über VBA, nur ist der
ziemlich steinig und mühsam. Für das AutoKeys Makro sehe ich durchaus
eine Existenzberechtigung und in seltenen Fällen auch für das Autoexec
Makro.

Just my 5¢

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/AccessFAQ.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Peter Doering
2004-08-13 16:59:35 UTC
Permalink
Hallo Michel,
Post by Michel Fouquet
Post by Stephan
Ich habe es im Makro (warum igitt?? ;-) und im VBA (bah) probiert.
[...]
Die Verwendung von Entscheidungsstrukturen ist nicht möglich.
View - Conditions.
Post by Michel Fouquet
Die direkte Verbindung von Formular und Makro ist nicht möglich.
Doch, geh mal in irgendeinem Ereignis auf's drop-down.
Post by Michel Fouquet
(nicht möglich heisst hier auch: oder nur mit bösem Geknorze).
Wegen dieses Zusatzes habe ich die anderen Punkte nicht kommentiert.

So, damit gebe ich das Mandat wieder ab.

;-)

Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Michel Fouquet
2004-08-13 17:43:06 UTC
Permalink
Hallo Peter,
Mach nur! Aber ich möchte hier nicht in irgendeine Art von
Religionskrieg ziehen. Ich wollte nur dem von anderen so leicht
hingesagten Igitt! ein paar Denkanstöße mitgeben.
Post by Peter Doering
Post by Michel Fouquet
[...]
Die Verwendung von Entscheidungsstrukturen ist nicht möglich.
View - Conditions.
Ja, ja. Aber ich dachte da an sowas wie die vielfältigen und flexiblen
Möglichkeiten der Entscheidungsstrukuren in VBA (If / Case / Switch /
Choose) . Da schreib' ich mir bei Makros einen Wolf. Und dann darf ich
die drei Pünktchen nicht vergessen, und dann seh' ich die Argumente nur,
wenn ich direkt auf die Zeile im Makroentwurf geklickt habe und all so
Nervereien.

Mir kommt das so vor, als würde man mir - angesicht der Olympiade sei
der Vergleich erlaubt - entgegenhalten: "Natürlich kann man mit
Trekking-Stiefeln einen 100-m-Lauf durchziehen!"
Post by Peter Doering
Post by Michel Fouquet
Die direkte Verbindung von Formular und Makro ist nicht möglich.
Doch, geh mal in irgendeinem Ereignis auf's drop-down.
Das meinte ich nicht. Ich wollte meine Auflistung auch nicht durch jede
Menge Erklärungen aufblähen und mehrzeilig machen. Was ich meinte war
der - durchaus kontrovers diskutierbare ("light weight forms") - Aspekt,
dass ich hinter ein Formular direkt den zur Bearbeitung nötigen Code
klemmen kann ("code behind forms"). Also: Formular kopiert, Code ist
schon da. Dass das auch Nachteile hat, ist mir auch klar.

Zudem gibt es bei Formularen (vielleicht weniger bei Berichten) auch
Bearbeitungsschritte, die als allgemeine CBF-Routinen codiert werden und
nicht nur Ereignis-Prozeduren.
Post by Peter Doering
Post by Michel Fouquet
(nicht möglich heisst hier auch: oder nur mit bösem Geknorze).
Wegen dieses Zusatzes habe ich die anderen Punkte nicht kommentiert.
Danke für die großzügige Schonung. :-)

Dass Makros erst durch den Makro-Interpreter geschleust werden müssen
und damit i.d.R. langsamer sind, habe ich schon gar nicht genannt. Dass
Makros in der Art, wie sie in Access vorhanden sind, in keinem anderen
Officeprdukt vorkommen, könnte stutzig bis nachdenklich machen. Wenn ich
nun ohnehin schon einen wichtigen Teil meiner Anwendungsteuerung in VBA
mache, macht das Mischen mit Makros nun überhaupt keinen Sinn mehr.

Interessant fände ich, jetzt nicht die von mir genannten Igitts zu
kritisieren, sondern einmal die (realen oder vermeintlichen) Vorteile
von Makros - insbesondere gegenüber VBA - aufzulisten. Wenn da mehr bei
rauskommt als: "Klick, klick, da klick ich's mir halt so zusammen und
muss keine Programmiersprache lernen" sollte es mir recht sein. Mich
persönlich wird es aber nicht dazu bewegen können, künftig Makros
einzusetzen.

Es grüßt,
Michel
Henry Habermacher [MVP Access]
2004-08-12 16:12:07 UTC
Permalink
Hallo Stephan
Post by Stephan
ich habe innerhalb eines Formulars eine Schaltfläche eingebaut. Hinter
der Schaltfläche liegt ein Makro. Nun möchte ich gerne zur Sicherheit
ein Popup einbauen und die Anwender vor den Ausführen des Makros
fragen, ob sie dies wirklich ausführen wollen. -> "Wirklich ausführen?
Ja/Nein" Bei "Ja" soll das Makro ausgeführt werden, bei "Nein" eben
nicht.
Das Makro löscht einen Tabelleninhalt und füllt ihn danach wieder mit
anderen Datensätzen.
Alle Warnmeldungen musste ich abschalten, da viele Anwender nur eine
Runtime-Version haben.
Ich will dich jetzt nicht auch zu VBA verdammen, es gibt eine ziemlich
einfache Methode, das in Makros selber zu machen:

Ganz am Anfang des Makros fügst Du eine Zeile ein.

Dort gibst Du in der Bedingung:

MsgBox("Wirklich ausführen?";292)=7

ein und als Aktion:

StoppAlleMakros (english: StopAllMacros, deutsch frei erfunden ;-))

Damit fragt das Makro zu beginn selber, ob es ausgeführt werden soll,
geht einfach, elegant, schmerzlos und ohne VBA, wenn Du darin noch keine
Übung hast.

Noch ein paar Kleinigkeiten:
Default in der Messagebox ist auf Nein gesetzt, falls lieber ja, dann
setze statt 292 einfach 36 ein.
7 ist "nein geklickt", falls Du die Frage anders stellt und fragst:
Wollen Sie abbrechen? dann setz dort eine 6 ("ja geklickt") rein.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/AccessFAQ.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Stephan
2004-08-13 13:29:24 UTC
Permalink
Post by Jürgen Volke
Hallo Stephan
Post by Stephan
ich habe innerhalb eines Formulars eine Schaltfläche eingebaut. Hinter
der Schaltfläche liegt ein Makro. Nun möchte ich gerne zur Sicherheit
ein Popup einbauen und die Anwender vor den Ausführen des Makros
fragen, ob sie dies wirklich ausführen wollen. -> "Wirklich ausführen?
Ja/Nein" Bei "Ja" soll das Makro ausgeführt werden, bei "Nein" eben
nicht.
Das Makro löscht einen Tabelleninhalt und füllt ihn danach wieder mit
anderen Datensätzen.
Alle Warnmeldungen musste ich abschalten, da viele Anwender nur eine
Runtime-Version haben.
Ich will dich jetzt nicht auch zu VBA verdammen, es gibt eine ziemlich
Ganz am Anfang des Makros fügst Du eine Zeile ein.
MsgBox("Wirklich ausführen?";292)=7
StoppAlleMakros (english: StopAllMacros, deutsch frei erfunden ;-))
Damit fragt das Makro zu beginn selber, ob es ausgeführt werden soll,
geht einfach, elegant, schmerzlos und ohne VBA, wenn Du darin noch keine
Übung hast.
Default in der Messagebox ist auf Nein gesetzt, falls lieber ja, dann
setze statt 292 einfach 36 ein.
Wollen Sie abbrechen? dann setz dort eine 6 ("ja geklickt") rein.
Gruss
Henry
Hallo Henry,
danke für Deine Hilfe.
Ich habe es im Makro ausprobiert und es hat funktioniert.
Gruss
Stephan
Loading...