collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 25
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13569
  • stats Beiträge insgesamt: 60025
  • stats Themen insgesamt: 8214
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Makro automatisch ausführen nach Eingabe/Änderung eines Datensatzes  (Gelesen 82 mal)

Offline Knopf

  • Newbie
  • Beiträge: 19
Hallo VBA-Experten!

Dank eurer Hilfe konnte ich mein Makro erstellen. Jetzt soll es  automatisch ausgeführt werden können...Sobald in der Tabelle tblmop ein Datensatz eingefügt oder geändert wird, soll dieses Makro ausgeführt werden. (Das Makro fügt 2 Tabellen zusammen) Wie erreicht man die automatische Ausführung?
Vielen Dank für eure Hilfe!
 

Offline Lachtaube

  • Access-Profi
  • **
  • Beiträge: 460
Datenmakros ab Version 2010 könnten auf die genannten Ereignisse direkt reagieren - jedoch keine andere Art von Makro oder gar VBA-Code ausführen. Ansonsten besteht noch die Möglichkeit in Formularen im Vor- und/ioder Nach Aktuslisierung Ereignis auch gespeicherte Makros und/oder VBA-Code auszuführen.
Grüße von der (⌒▽⌒)
 

Offline Knopf

  • Newbie
  • Beiträge: 19
Hallo Lachtaube,
Ich habe eine funktion erstellt, die wie gewünscht funktioniert und diese auch als makro gespeicherr. Wenn ich nun versuche ein Datenmakro zu erstellen und dort meine Funktion einzufügen, passiert nichts...
Ist das gar nicht möglich? Was mache ich falsch? Es muss doch möglich sein selbst erstellte makros nach aktualisierung auszuführen?:(
Lg
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1830
Hi,

im Formular gibt es das Ereignis "Nach Aktualisierung" (auf Ebene des Steuerelementes bzw des Datensatzes).

Dort kann im VBA-Code eingetragen werden:
DoCmd.RunMacro "Hier nun den Names des Makros eintragen"

Vielleicht hilft das.
Harald
Servus
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 22795
Hallo,

Zitat
Datenmakros ab Version 2010 könnten auf die genannten Ereignisse direkt reagieren - jedoch keine andere Art von Makro oder gar VBA-Code ausführen.

Offline Knopf

  • Newbie
  • Beiträge: 19
Hallo Harald,

ich habe es ausprobiert: Ich habe in meinem Eingabeformular ein unterformular, welches bei der dateneingabe mit einem makro aktualisiert wird. Für das unterformular habe ich den code im entwurfsmodus eingegebn. DoCmd.RunMacro "macActMop" aber es tut sich nichts :(
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1332
Hallo Knopf,
Zitat
Für das unterformular habe ich den code im entwurfsmodus eingegebn. DoCmd.RunMacro "macActMop"
Wo hast du den eingegeben? So wie von Harald beschrieben?
Ausserdem, warum Macro, wenn du doch ein Formular(modul)
hast (siehe #1)
Zitat
oder VBA-Code auszuführen.
Ich würde das gleich mit VBA machen, - Prinzip:
Private Sub Form_AfterUpdate()
    If Me.NewRecord Then
        CurrentDb.Execute "INSERT INTO ... "
    Else
        CurrentDb.Execute "UPDATE ... "
    End If
End Sub
Zudem solltest du vielleicht nicht vergessen in "Form_BeforeUpdate"
die Daten evtl. auf korrekte Eingaben zu überprüfen (z.B. leere Pflichtfelder).

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Knopf

  • Newbie
  • Beiträge: 19
Hallo!

Ja so habe ich es gemacht: Ich habe das Unterformular geöffnet, habe in dem Feld "Nach Aktualisierung" Ereignisprozedur gewählt und folgenden Code geschrieben:

Private Sub Form_AfterUpdate()
Call ActMo
End Sub
-------------------------
Function ActMo()

Set db = CurrentDb()


    DoCmd.SetWarnings False
    DoCmd.RunSQL "DROP TABLE tblMo;"
    DoCmd.SetWarnings True
     
    db.Execute "abfMo" 'Tabellenerstellung
   

    DoCmd.SetWarnings False
    DoCmd.RunSQL "DROP TABLE tblAuswMo;"
    DoCmd.SetWarnings True
     
    db.Execute "abfAuswMo"        'Tabellenerstellung

    db.Execute "ALTER TABLE [tblAuswMo] ALTER COLUMN [AuswertungMo] Single"

End Function
----------
Aber es will nicht funktionieren :( Die Funktion ist getestet und läuft wenn ich sie aus dem VBA-Editor starte...
Danke für eure Hilfe!
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 22795
Hallo,

-- lass das "Call" weg.  Dies wird nur für Subs benötigt.
-- Wo steht die Funktion "ActMo()"  ?  Im selben Klassenmodul oder in einem Standardmodul?
-- Was steht in der Form-Ereignis-Eigenschaft "Nach Aktualisierung"?

btw: es muss zwischen VBA-Prozeduren (Functions, Subs) und Makros unterschieden werden!

Um eine VBA-Prozedur beim Auftreten eines Ereignis aufzurufen, muss in der entspr. Ereignis-Eigenschaft(enzeile) 
[Ereignisprozedur]
stehen.

Setze einen Haltepunkt in die AfterUpdate-Prozedur und prüfe, ob die Prozedur überhaupt aufgerufen wird.