Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Prozesssteuerung über eine Tabelle
zurück: Formularreferenzen auf UFOs/UFO-Container vereinfacht weiter: Datensammlung - Arrays und Collections Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
beat78
Office-VBA-Programmierer


Verfasst am:
19. Jul 2013, 09:24
Rufname:
Wohnort: Zürich

Prozesssteuerung über eine Tabelle - Prozesssteuerung über eine Tabelle

Nach oben
       Version: Office 2010

Hallo Zusammen

Ich habe mir 2 Prozeduren gemacht welche Query und Funktionen von einer Tabelle ausführt und in einer anderen Tabelle die Ausfrühung Protokoliert.
Es wird die Tabelle tbl_AdminProzesssteuerung durchlaufen und alle Query und Functionen mit dem selben Prozessname ausgeführt und in der Tabelle tbl_AdminProzesssteuerung_Log protokoliert. Eventuell kann das auch jemand gebrauchen.

Tabellen
tbl_AdminProzesssteuerung
- Kategorie, Prozessname, Objekt, Ausführen, Grund, Art ("Query", "Function")

tbl_AdminProzesssteuerung_Log
- Kategorie, Prozessname, Objekt, Ausführen, Zeit
Code:
Option Compare Database
Option Explicit

Public Function ProzessStarten(ByRef strProzName As String)
    Dim db      As DAO.Database
    Dim rst     As DAO.Recordset
    Dim fncName As String
   
    Set db = CurrentDb
    Set rst = db.OpenRecordset("tbl_AdminProzesssteuerung")
    rst.MoveFirst
    Do While Not rst.EOF
        If rst.Fields("Prozessname").Value = strProzName Then
            ' Query ausführen
            If rst.Fields("Art") = "Query" Then
                DoCmd.SetWarnings False
                DoCmd.OpenQuery rst.Fields("Ausführen")
                DoCmd.SetWarnings True
              ' Function ausführen
              Else
                fncName = rst.Fields("Ausführen") & "()"
                Eval fncName
            End If
            WriteLog Nz(rst.Fields("Kategorie"), "") _
                   , Nz(rst.Fields("Prozessname"), "") _
                   , Nz(rst.Fields("Objekt"), "") _
                   , Nz(rst.Fields("Ausführen"), Now())
        End If
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
    Set db = Nothing
End Function

Public Function WriteLog(ByRef strKategorie As String _
                       , ByRef strProzName As String _
                       , ByRef strObjekt As String _
                       , ByRef Ausführen As String, ByRef Zeit As Date)
    Dim db  As DAO.Database
    Dim rst As DAO.Recordset
   
    Set db = CurrentDb
    Set rst = db.OpenRecordset("tbl_AdminProzesssteuerung_Log")
    rst.AddNew
    rst.Fields("Kategorie").Value = strKategorie
    rst.Fields("Prozessname").Value = strProzName
    rst.Fields("Objekt").Value = strObjekt
    rst.Fields("Ausführen").Value = Ausführen
    rst.Fields("Zeit").Value = Now()
    rst.Update
    rst.Close
    Set rst = Nothing
    Set db = Nothing
End Function
Willi Wipp
Moderator


Verfasst am:
20. Jul 2013, 15:30
Rufname:
Wohnort: Raum Wiesbaden


Re: Prozesssteuerung über eine Tabelle - Re: Prozesssteuerung über eine Tabelle

Nach oben
       Version: Office 2010

Hi beat78,

ein schoener Ansatz. Habe mir erlaubt das etwas einzukuerzen.
Code:
Option Compare Database
Option Explicit

Property Get ThisDb(Optional Force As Boolean = False) As DAO.Database
    Static db As DAO.Database
   
    If db Is Nothing Or Force Then Set db = CurrentDb()
    Set ThisDb = db
End Property

Public Function ProzessStarten(ByRef strProzName As String)
    Dim rst     As DAO.Recordset
    Dim strSQL  As String
   
    strSQL = "SELECT Art, Ausführen" _
            & " FROM tbl_AdminProzesssteuerung" _
           & " WHERE Prozessname = '" & strProzName & "'"
    Set rst = ThisDb.OpenRecordset(strSQL)
    Do While Not rst.EOF       'Falls ein Prozessname mehrfach vorkommen kann!
        ' Query ausführen
        If rst.Fields("Art") = "Query" Then
            ThisDb.Execute rst.Fields("Ausführen"), 128
          ' Function ausführen
          Else
            Run rst.Fields("Ausführen")
        End If
        strSQL = "UPDATE tbl_AdminProzesssteuerung_Log" _
                 & " SET Kategorie = '" & rst.Fields("Kategorie") & "'" _
                    & ", Prozessname = '" & rst.Fields("Prozessname") & "'" _
                    & ", Objekt = '" & rst.Fields("Objekt") & "'" _
                    & ", Ausführen = '" & rst.Fields("Ausführen") & "'" _
                    & ", Zeit = Now()"
        ThisDb.Execute strSQL, 128
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
End Function
Wenn man der Tabelle tbl_AdminProzesssteuerung noch einen Primaerschluessel verpasst,
dann kann man beim UPDATE diesen auch einfach an den Fremdschluessel uebergeben.
Das spart die redundante Datenspeicherung.
Ich wuerde auch die Klammern mit im Feld Ausfuehren speichern.
Dann kann man auch Parameter mit angeben und diese z.B. mit Replace
zur Laufzeit austauschen.
Code:
            Run Replace(rst.Fields("Ausfuehren", "%Pfad%", Chr$(34) & ThisDB.Path & Chr$(34))

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 24. Jul 2013, 07:18, insgesamt einmal bearbeitet
beat78
Office-VBA-Programmierer


Verfasst am:
23. Jul 2013, 09:22
Rufname:
Wohnort: Zürich

AW: Prozesssteuerung über eine Tabelle - AW: Prozesssteuerung über eine Tabelle

Nach oben
       Version: Office 2010

Hi Willi

Ohh sehr schön danke.
Hab das mal abgesehen von den Parameter in einer Testdatei umgesetzt.
Zudem habe ich den Status integriert. Wenn jemand eine Idee zur einfacheren Umsetzung des Status hat ?
Code:
Option Compare Database
Option Explicit

Private Property Get ThisDb(Optional Force As Boolean = False) As DAO.Database
    Static db As DAO.Database
   
    If db Is Nothing Or Force Then Set db = CurrentDb()
    Set ThisDb = db
End Property

Public Function Run(ByRef strProzName As String)
    Dim rst     As DAO.Recordset
    Dim strSQL  As String
    Dim bolStatus As Boolean
   
    strSQL = "SELECT id, Art, Ausführen" _
            & " FROM tbl_AdminProzesssteuerung" _
           & " WHERE Prozessname = '" & strProzName & "'"
    Set rst = ThisDb.OpenRecordset(strSQL)
    ' letzter Lauf ermitteln und + 1 dazuzählen für aktuellen Lauf
    paktLauf = Nz(DMax("LaufNr", "[tbl_AdminProzesssteuerung_Log]"), 1) + 1
    Do While Not rst.EOF       'Falls ein Prozessname mehrfach vorkommen kann!
        ' Query ausführen
        If rst.Fields("Art") = "Query" Then
            DoCmd.OpenQuery rst.Fields("Ausführen")
            bolStatus = False
          ' Function ausführen
          Else
            If Eval(rst.Fields("Ausführen") & "()") = True Then bolStatus = True         ' <<---  geht das einfacher ohne rückgabewert der function?
        End If
        strSQL = "INSERT INTO tbl_AdminProzesssteuerung_Log" _
                   & " ( id, LaufNr, Zeit, Status ) " _
              & " SELECT " & rst.Fields("id") & ", " & paktLauf & ", Now()" _
                    & ", '" & bolStatus & "'"
        ThisDb.Execute strSQL, 128
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
End Function



Prozesssteuerung.zip
 Beschreibung:

Download
 Dateiname:  Prozesssteuerung.zip
 Dateigröße:  112.11 KB
 Heruntergeladen:  8 mal


Prozesssteuerung inkl. Doku & Log.zip
 Beschreibung:
inkl. 2 Report Prozessübersicht und Log.

Download
 Dateiname:  Prozesssteuerung inkl. Doku & Log.zip
 Dateigröße:  101.04 KB
 Heruntergeladen:  21 mal

Willi Wipp
Moderator


Verfasst am:
24. Jul 2013, 07:17
Rufname:
Wohnort: Raum Wiesbaden


Re: Prozesssteuerung über eine Tabelle (II) - Re: Prozesssteuerung über eine Tabelle (II)

Nach oben
       Version: Office 2010

Hi beat78,

teste mal
Code:
        bolStatus = Run(rst.Fields("Ausführen"))

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Kreuztabellenabfrage für neue Tabelle nutzen 3 WaterMan 805 06. Jul 2004, 14:39
mabe38 Kreuztabellenabfrage für neue Tabelle nutzen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle exportieren als Excel2000 Arbeitsblatt 1 thomassch 916 06. Jul 2004, 12:46
stpimi Tabelle exportieren als Excel2000 Arbeitsblatt
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle von Excel importieren 1 Sonnenschein 2640 15. Jun 2004, 06:57
stpimi Tabelle von Excel importieren
Keine neuen Beiträge Access Tabellen & Abfragen: Tage auf Datum addieren und an bestehende Tabelle anfügen... 1 lorelei 1234 11. Jun 2004, 08:38
stpimi Tage auf Datum addieren und an bestehende Tabelle anfügen...
Keine neuen Beiträge Access Tabellen & Abfragen: tabelle exportieren 1 Gast 1501 01. Jun 2004, 12:25
Willi Wipp tabelle exportieren
Keine neuen Beiträge Access Tabellen & Abfragen: Duplikate einer Tabelle löschen?! 3 Esel 2108 28. Mai 2004, 08:53
lothi Duplikate einer Tabelle löschen?!
Keine neuen Beiträge Access Tabellen & Abfragen: Spaltennamen einer Tabelle ermitteln 1 Alexander Neron 899 27. Mai 2004, 13:47
lothi Spaltennamen einer Tabelle ermitteln
Keine neuen Beiträge Access Tabellen & Abfragen: kein Wert in der Tabelle, dann immer Null (0)?? 3 Michel_9 1005 26. Mai 2004, 14:28
Michel_9 kein Wert in der Tabelle, dann immer Null (0)??
Keine neuen Beiträge Access Tabellen & Abfragen: Operant aus Tabelle in Abfrage verwenden 3 AccessGeek 673 06. Mai 2004, 09:15
lothi Operant aus Tabelle in Abfrage verwenden
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle formatiert in txt-Datei exportieren 1 robby 1115 12. Apr 2004, 23:10
Helge Tabelle formatiert in txt-Datei exportieren
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle aus Abfrage erstellen 1 dasti 3317 09. Apr 2004, 12:14
Gast Tabelle aus Abfrage erstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Zeilenumbruch nach Einfügen Word Tabelle 2 topflop 1698 30. März 2004, 16:06
Gast Zeilenumbruch nach Einfügen Word Tabelle
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Access Tabellen