PDA

Vollständige Version anzeigen : Macro läuft nur 20mal durch


Unklar01
26.01.2008, 17:37
Hallo Ihr Wissenden,
habe ein arges Problem. Ich muß ein Macro ca 8000 (in einer anderen Bank ca.32000 mal) mal durchlaufen um mein Ziel, die Ermittlung bestimmter Werte zu erreichen. Nun stellt mir AC allerdings ein tüchtiges Problem in den Weg.

Wie kann ich AC dazu bewegen eine Reihe von Abfragen in einer bestimmten Reihenfolge zu durchlaufen. Ich muss einen Haufen Temp.Sätze anlegen und löschen. Nur so kann ich die erforderlichen Daten zusammenstellen. Ich könnte das MACRO 8000 mal von Hand anstoßen, aber mal ehrlich.... Gibts da keine andere Lösung ?

gpswanderer
26.01.2008, 17:40
Hallo,
wenn Du etwas mehr zum Hintergrund Deiner Tat erklärst und dann noch was das Makro macht, könnte man vieleicht helfen.
Vieleicht kann man auch auf das Makro auch ganz verzichten, aber da sind mehr Infos notwendig.

borisrisker
26.01.2008, 17:46
Das hier würde den Job machen:

In ein separates Makro den Befehl AusführenMakro einfügen. Als Argumente kannst du die Zahl der Wiederholungen angeben ...

Oder per VBA:

DoCmd.RunMacro "MeinMacro", 8000

aber keine Ahnung, wie deine Kiste darauf reagiert ...

Ich würde am ehsten eine Schleife programmieren :

Dim i As Long

SysCmd acSysCmdInitMeter, "Makro läuft", 8000

For i = 1 To 8000
DoCmd.RunMacro "MeinMacro"
SysCmd acSysCmdUpdateMeter, i
DoEvents
Next

SysCmd acSysCmdRemoveMeter


Da hast du dann unten links einen kleinen Fortschrittsbalken, der anzeigt wie weit du bist ... weil es wird tierisch lange dauern, bis alle 8000 Wiederholungen ausgeführt worden sind ...

Unklar01
26.01.2008, 18:01
Vielen Dak erst einmal das Du so schnell warst ! Ich denke es würde jetzt zu weit führen alles ins Detail zu erklären. Ich weis aber das Du an sonsten Recht hast und die INFOS etwas spärlich sind. Bitte nicht böse sein, aber das MACRO macht was es soll und ich will eigentlich nur das es durchläuft. Das ganze ist sowieso nur eine Temp.Lösung. Danach fliegt es wieder weg. Trotz dem DANKE !

gpswanderer
26.01.2008, 18:11
Hallo,
Bitte nicht böse sein, Warum sollte ich böse sein, Du willst ja Hilfe, bist aber nicht bereit die notwendigen Infos bereitzustellen. Das mindeste was man wissen müsste, ist doch: Was macht das Makro.

ebs17
26.01.2008, 18:18
In welcher Beziehung steht ...
Macro läuft nur 20mal durch
mit ...
Ich könnte das MACRO 8000 mal von Hand anstoßen, aber mal ehrlich.... Gibts da keine andere Lösung ?
Wo gibt es wirklich ein Problem?

Unklar01
26.01.2008, 19:04
Hallo borisrisker,
Deine Lösung scheint mein Problem am schnellsten zu erledigen. Ich bin leider nicht so bewandert was VBA angeht. Könntest Du bitte mal schreiben wo ich den Code eingebe. Ist er so vollständig ?
Noch eins, ich habe eine Abfrage die mir den letzten DS und die darin enthaltene ID ausgibt. Die Abfr. heißt "A_letzter_DS" und das Feld "letzte_ID". könnte man das nicht für den Durchlauf nutzen. So währe ich unabhängig von der tatsächlichen Anzahl (ich meine z.B.8000)

Was passiert in dem MACRO:
1. stelle ich mir einen temp.DS zusammen,
2. ein Vergleich zw. einer Haupttabelle die über die ID mit der Wertetabelle verbunden ist mit Klassifizierungen.
Jeder DS kann mit versch. Klassen und Clustern übereinstimmen.
3. es wird der Wertedatensatz in einer Temp Tab. Verglichen. bei Übereinstimmung wird die zugeh. Klassifizierung ermittelt und samt der ID in einer weiteren Tabelle zwischengespeichert.
4. dazwischen liegende Temp-Tab. werden bereinigt und das Spiel beginnt von vorn. Bis alle DS abgearbeitet sind.

Ihr seht es ist echt schwierig genau zu erläutern was hier abläuft. deshalb habe ich es zu Beginn auch gar nicht erst versucht. Es bilden sich durch die Temp.Tabellen bestimmte Schlüsselfelder die nur durch die Zusammenführung versch. Informationen entstehen können. Daher der genaue Ablaufplan.

Unklar01
26.01.2008, 19:10
Hallo ebs17,
mögst ja wirklich eine Koryphäe sein. Das streite ich in keinster Weise ab ! Aber mein Horizont reicht nicht Deinen Worten zu folgen. Was wolltest Du eigentlich aussagen ?

Josef P.
26.01.2008, 19:25
Wenn du nur Makros verwenden willst: auch hier gibt es die Möglichkeit eine Schleife zu erstellen.
Unter dem Befehl "Ausführen Makro" kannst du die Anzahl der Wiederholungen einstellen. Falls du das bereits gemacht hast und es dort nur zu 20 Wiederholungen kommt, dann ist irgendwo ein Fehler.

borisrisker
26.01.2008, 19:30
Also,

der vollständige Code müßte lauten:


Sub MacroWiederholen()

Dim i As Long
Dim lngAnzahlWiederholungen As Long

lngAnzahlWiederholungen = DLookup("letzte_ID", "A_letzter_DS")

SysCmd acSysCmdInitMeter, "Makro läuft", lngAnzahlWiederholungen

For i = 1 To lngAnzahlWiederholungen
DoCmd.RunMacro "MeinMacro"
SysCmd acSysCmdUpdateMeter, i
DoEvents
Next

SysCmd acSysCmdRemoveMeter

End If

du müsstest den Code in ein Modul packen:
1) im Datenbankfenster links auf den Button Module klicken
2) auf 'Neu' gehen -> es öffnet sich das VBA-Fenster
3) den kompletten code da rein pasten
4) Speichern-Button klicken links oben
5) er wird dich nach einem Namen fragen für das Modul: Name ist egal

6) Für das Ausführen solltest du ein Formular mit einem Button anlegen
7) Im Designmodus des Formulars auf den Button rechts klicken, dann Eigenschaften auswählen
8) es öffnet sich das Eigenschaftenfenster
9) klick auf das Registerelement 'Ereignis'
10) im Ereignis 'Beim Klicken' musst du den Aufruf des Codes hinzufügen:

Private Sub ButtonName_Click()
MacroWiederholen
End Sub

jetzt kannst du den Button klicken und er ruft dein Macro auf und zeigt den Fortschritt unten links an ...

Das ist alles nicht einfach, wenn man noch keine Erfahrung hat mit VBA, aber ich wünsche dir viel Erfolg !!

wenn du mir deine Mail gibst schicke ich dir eine Beispiel-DB, extra für dihc erstellt und kostenlos

ebs17
26.01.2008, 19:53
Was wolltest Du eigentlich aussagen ?
Keine Aussage. Ich habe nur zwei Fragen gestellt.

Es irritiert mich aber schon, wenn das Thema des Titels sich nicht in den nachfolgenden Beschreibungen (nicht mal in den späteren) wiederfindet.

Unklar01
26.01.2008, 23:26
Hallo ebs17,
ich denke schon das ich Thema und Inhalt zusammen gebracht habe. Sicher ist alles eine Frage der Auslegung aber mich hat einfach interessiert wie ich die Blockade die AC von Hause aus eingebaut hat umgehen kann. Nämlich wie kann ich verhindern das AC mich nach 20 Durchläufen im MACRO "raus schmeißt". Alle anderen haben auf Anhieb gewusst was ich meine. Aber wir wollen hier nicht anfangen und Streichhölzer schnitzen. Meinst Du nicht auch ?

Josef P.
26.01.2008, 23:32
mich hat einfach interessiert wie ich die Blockade die AC von Hause aus eingebaut hat umgehen kann
:confused: welche Blockade?

BTW: hast du schon einmal darüber nachgedacht auf die 1000-fachen Wiederholungen zu verzichten und eine Lösung per SQL ("Massendatenverarbeitung") zu probieren?

Unklar01
26.01.2008, 23:33
Hallo borisrisker,
Du hast offensichtlich hier den Durchblick. Ich werde den CODE morgen Früh ausprobieren. Habe offen gesagt die S..e voll für jetzt.

Allen Anderen möchte ich hier auch Danken und wünsche Euch ein schönes Rest-WE.