MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 07.02.2018, 08:05   #1
GTRDRIVER
MOF User
MOF User
Standard Acc2003 - taskplaner mit access

Hallo zusammen

ich habe hier eine relativ aufwändige access Anwendung die in regelmäßigen Abständigen verschiedene VBA Prozeduren ausführen soll.

Bisher habe ich solche dinge oft einfach mit dem TASK Scheduler von Windows gelöst - aber diesmal möchte ich das gerne intern in ACCESS lösen.

kurzfristig wiederkehrende Ereignisse sind ja einfach per Formular und Event Timer machbar - also z.b: führe prozedur xx alle xx Sekunden aus ...

Ich würde aber gerne auch in einer Tabelle einen direkten Plan anlegen also führe um 8:30 12:00 und 18:00 Uhr eine andere Prozedur aus.

Irgendwi edachte ich noch das sei einfach aber aktuell habe ich ein Brett vorm Kopf - hat evtl jemand ein Stück code oder tipps wie ich das umsetzten kann ?
GTRDRIVER ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 09:19   #2
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

kurzfristig wiederkehrende Ereignisse sind ja einfach per Formular und Event Timer machbar - also z.b: führe prozedur xx alle xx Sekunden aus ...

Bei Ereignissen mit langen Zwischenpausen wäre es das gleiche, wobei man hier in der Timer-Ereignisprozedur nur die Uhrzeit lesen und prüfen würde. Bei der gewünschten Uhrzeit (besser Uhrzeitbereich) wird dann die Folgeprozedur aufgerufen.

Vereinfachte Prüfung:
Code:

If DCount("*", "tbl_Perioden", "Time() BETWEEN BeginnPeriode AND EndePeriode") > 0 Then AufrufAktion ' jetzt geht es los

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende

Geändert von ebs17 (07.02.2018 um 09:39 Uhr).
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 11:39   #3
GTRDRIVER
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi

danke - ja - soweit war ich auch schon....

Wo ich aktuell hänge:

Sagen wir mal ich lasse den ein Form offen und hier den Timer laufen dass die Prozedur z.b: alle 1 Sekunde aufgerufen wird.

diese prüft dann in der Tabelle (wie du vorgeschlagen hast) ob etwas fällig wird.

Sagen wir mal ich habe in der tabelle als Startzeit stehen: "18:00:00"

Dann muss ich das ja "sekundengenau" aufrufen - also ohen "Spanne" sonst würde das ja mehrfach ausgeführt oder sehe ich das falsch ?

CU
GTR
GTRDRIVER ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 12:05   #4
ebs17
MOF Guru
MOF Guru
Standard

Eine genaue Zeit wirst Du wegen der internen Umsetzung (Double - Fließkommaproblematik) nie sicher und zuverlässig punktgenau treffen können. Daher sollte man schon ein Intervall verwenden. Dieses Intervall muss natürlich mit dem Timertakt zusammenpassen, bei Sekundentakt etwa
Code:

Time() >= #18:00:00#  AND Time() < #18:00:01#
Alternativ könnte man das Intervall etwas länger wählen und man "merkt" sich in einer geeigneten Form, ob diese Aktion an diesem Tag schon ausgeführt wurde und kann damit per Prüfung die nur einmalige Ausführung prüfen.

Im Sekundentakt würde ich dann auch kein DCount ausführen, nicht mal auf eine ganz flache Tabelle.
Entweder also gleich hardcodieren oder, wenn doch Variationen denkbar sind und über Nutzer zu pflegen wären, die Tabellenwerte einmalig als Variablen / Properties in das Formular laden und dort vorhalten.

Einen Ein-Sekundentakt für ein tägliches Ereignis hielte ich für sehr übertrieben. Für tägliche Ereignisse wäre der Windows-Taskplaner sicher die bessere Wahl.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende

Geändert von ebs17 (09.02.2018 um 12:26 Uhr).
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 13:58   #5
GTRDRIVER
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo

ja - ich bin auch schon am zweifeln ...

Ich arbeite normalerweise auch mit dem Win Taskplaner

Dieser ruft Access auf und übergibt Parameter.

Mein Problem ist hier dass bei dieser Anwendung (sehr aufwändige VBA/SQL geschichten) die Anwendung (wenn man sie über den Taskmanager startet - regelmäßig abstürzt (dieses programm reagiert nicht mehr)

Wenn ich die Anwendung manuell starte und ausführe passiert das NIEMALS.

Ich habe bisher auch noch nicht rausgefunden warum ...

3x gehts 5x nicht - dann "diese Anwendung reagiert nicht mehr"
GTRDRIVER ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 15:52   #6
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Mein Problem ist hier dass bei dieser Anwendung (sehr aufwändige VBA/SQL geschichten) die Anwendung (wenn man sie über den Taskmanager startet - regelmäßig abstürzt (dieses programm reagiert nicht mehr)

Da wäre zu klären, ob der EDV-Gott Dich persönlich nicht mag oder ob es am Code liegt (Aufruf und/oder Ablauf) oder ob Du gerade dran bist beim Pech.

Zitat:

sehr aufwändige VBA/SQL geschichten

Ich versuche immer einfache und direkte Lösungen zu finden. Aufwand und Komplexität sind dann für später ... aufgehoben.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 16:36   #7
GTRDRIVER
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi

ja - das versuche ich auch - aber das geht bei diesem Projekt nicht so leicht wie es sich anhört.

Es werden daten aus einer per ODBC eingebundenen Fremdtabelle (20 Tabellen) gesammelt dann per diverser VBA Prozeduren (mit unter und Unter Unter Prozedur) umgebaut und wiederum in eine andere ODBC Zieldatenbank geschrieben.

Das Problem ist eben dass hier eine simple Abfrage nicht geht weil alles komplett umgewandelt werden muss (das komplette Datenmodell)

Das sind zwar nur knapp 1000 Datensätze - aber da hängen zig tausend verknüpfte Datensätzte dran usw...

Das komplette Konstrukt hat eine Laufzeit von ca. 100 Sekunden.

Und wie gesagt starte ich das manuell ist es mir noch nie abgeschmiert - starte ich es mit dem Windows Task Scheduler "stürzt" es mir ab und dann ab und das ist natürlich "mega dumm" da das mitten in der Laufzeit abstürzt und somit die Ziel Struktur nicht passt ...

CU
GTR
GTRDRIVER ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 17:00   #8
ebs17
MOF Guru
MOF Guru
Standard

- Ich sehe noch keinen Hinweis darauf, WIE Du auf die DB zugreifst.
- Ein Eintragen von Daten könnte man durchaus über Abfragen lösen, eine Anfügeabfrage pro Tabelle, bei zusätzlicher Aktualisierung von bestehenden Datensätzen dann zusätzlich Aktualisierungsabfragen.
In komplexe Tabelle in ein normalisiertes Tabellenmodell aufteilen habe ich das versucht und m.M. nach auch geschafft, allerdings müssen Quelle und Ziel auch etwas zusammenpassen.
Die beteiligten Herrschaften da haben aber anscheinend Lust und Laune verloren.

Ein somit nur benötigter DAO- bzw. ADODB-Zugriff käme ganz ohne explizites Öffnen von Access und dessen großes Objekt aus und könnte zudem in einer Transaktion ablaufen.

Bei Abfragen kann man dann auch sinnvoll und gezielt Indizes einsetzen, damit das Ganze schön flüssig läuft.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 17:03   #9
GTRDRIVER
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi

mein meinst du "auf die DB zugreifst" ?

Wie gesagt das ist eine ACCESS Anwendung mit per ODBC eingebundenen Firebird Tabellen

Nein - das Datenmodell passt überhaupt nicht - das ist ein reines Kopieren sondern ein kompletter Umbau ...
GTRDRIVER ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 21:50   #10
ebs17
MOF Guru
MOF Guru
Standard

//OT:
Ich bin immer wieder erstaunt, mit welchem atemberaubenden Tempo manche sich Inhalte verlinkter Themen vollinhaltlich erschließen und nach reiflichem Durchdenken beurteilen können, dass diese Quelle irrelevant und somit Mist ist.

Zitat:

WIE Du auf die DB zugreifst

Es wird doch irgendeine Startprozedur auf das VBA-Machwerk geben, auf eine geöffnete oder geschlossene Anwendung.
Bei einer offenen Anwendung könnte man es für möglich halten, dass da weitere Objekte offen sind, weitere Prozesse laufen, so dass eine aufwändige Prozedur als Zusatz Grenzen der Accessspezifikationen übersteigen oder vorhandene Speicher (RAM + Auslagerungsdatei) überlaufen lässt.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.02.2018, 17:40   #11
GTRDRIVER
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Ebs

zu dem "OT" ich gehe davon aus dass du einen Link meinst - ich hab mir das mal durchgeschaut und kann hier in bezug auf mein projekt nicht viel Potential erkennen.

Ich verwendet Pass trough abfragen für das Schreiben in FB, Views für das Leasen um die massive Datenmenge schon vorab zu filtern.

Das Problem sind sehr viele 1:n Verknüpfungen in den Source Tabellen und vollkommen anderen Zuordnungen in den Target Tabellen das macht das ganze relativ aufwändig.

Zudem kann ich weder die Source noch die Target DB von der Struktur her irgendwie beeinflussen.


Ich habe heute noch einiges umgebaut und nutzte nun für einige Dinge Arrays um ganze Datensätze zu cachen und dann das Array durch zu arbeiten.

Das hat etwas Geschwindigkeit gebracht - aber nicht ansatzweise das was ich mir erhofft habe.

Letztendlich ist die Geschwindigkeit eigentlich auch egal - die Laufzeit liegt nun bei knapp 40 Sekunden und da die Prozedur nur ca. 5x am Tag ausgeführt wird ist das relativ unkritisch.


Zu deiner letzten Frage:

Aktuell starte ich die DB per Windows Task Sched.. - lade beim Start ein Formular - werte die übergebene Command LIne Option aus und führe dann eine Master Prozedur aus welche dann die eizelnen Subs und Abfragen der Reihe nach ausführt.

Ich habe noch ein Logfile eingebaut um bei Problemen besser suchen zu können.
GTRDRIVER ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.02.2018, 09:20   #12
GTRDRIVER
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ich möchte nochmals eine kurze Rückmeldung geben:

Das ganze läuft jetzt mit dem in der Anwendung integrierten Task Planer seit einigen Tagen 24/7 durch.

Bisher ohne jegliche Problem oder Abstürze....
GTRDRIVER ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.