PDA

Vollständige Version anzeigen : Code anhalten und fortsetzen


roland-wolff
11.09.2002, 09:46
Hallo zusammen,

mal wieder ein Problemchen....

Ich möchte die Ausführung einer Funktion unterbrechen, ohne das die Variablen zurückgesetzt werden!

Die Unterbrechung soll dafür genutzt werden in einem Formular Daten zu bearbeiten. Die Fortsetzung der Funktion sollte dann mit dem Klick auf eine Befehlsschaltfläche erfolgen.

Die Unterbrechung darf nicht dazu führen, das man im Modul auf der Entwicklungseben steht...

Vielen Dank für eure rasche Hilfe

CU Roland

erwin
11.09.2002, 09:55
Form modal öffnen

docmd.openform "deinForm",,,,,acDialog

HTH Erwin...

roland-wolff
11.09.2002, 10:06
Ich glaube dass ist leider nicht die richtige Lösung, denn der Code wird nicht von diesem Formular aus gestartet.

Ich muß die Ausführung eines längeren Programmes stoppen, auf Eingaben warten und dann wieder starten. Wie soll mir denn ...acDialog helfen???

Benötige also noch mehr Hilfe, Danke

CU Roland

kama
11.09.2002, 10:14
Hallo
wenn du die Variablen global deklariest geht dir nix verloren.

roland-wolff
11.09.2002, 10:20
Hey kama danke, aber ...

Die Eingaben werden in einem Formular gemacht...

Da hilft leider die Inputbox nicht weiter. Es müssen zu viele Informationen bearbeitet werden, daher benötige ich das Formular zu Bearbeitung.

Also wie bekomme ich denn nun den Code angehalten und kann ihn aus dem Formulat wieder starten???

verzweifelt Roland

A.S.
11.09.2002, 10:41
Hi,

deklariere eine globale Variable

Dim bolStop As Boolean

in Dein Coding baust Du nun eine Schleife ein:

bolStop = True
Forms!frmDeinFormular.SetFocus
MsgBox "Führen Sie die Eingaben durch!"
While bolStop
DoEvents
Wend

Im Formular prüfst Du nun ob die erforderlichen Eingaben gemacht wurden und setzt die Variable bolStop auf False, wenn dem so ist. Die Prüfung kannst Du im Ereignis "Nach Aktualisierung" der entsprechenden Felder durchführen.

roland-wolff
11.09.2002, 11:45
Hallo A.S.

ist zuwar nicht sonderlich elegant... aber die Lösung tut es!! Danke

CU Roland

erwin
11.09.2002, 12:40
ähhhm.... und wieso sollte das nicht mit einem modal geöffneten Formular klappen.

Ich glaube dass ist leider nicht die richtige Lösung, denn der Code wird nicht von diesem Formular aus gestartet.
ist doch egal von WO aus der Code gestartet wird

Ich muß die Ausführung eines längeren Programmes stoppen, auf Eingaben warten und dann wieder starten. Wie soll mir denn ...acDialog helfen???
indem du zur Erlangung dieser Eingaben eben an der Stelle im Code das Eingabeformular modal (acdialog) öffnest. Die Eingaben kannst du ja zB. in public Var. packen.

Oder was ist jetzt dein Problem

fragt sich, Erwin...

kama
11.09.2002, 12:45
hallo
ich würde es so machen

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre>
<span class="TOKEN">Public</span> Variable1, Variable2, Variable3
<span class="TOKEN">Function</span> vor_Formular_&ouml;ffnen()
Variable1 = &quot;Diese Variablen&quot;
Variable2 = &quot; Wurden zur weiterverarbeitung&quot;
Variable3 = &quot;Gespeichert&quot;
DoCmd.OpenForm &quot;DeinFormular&quot;
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Function</span><hr>&nbsp;
<span class="TOKEN">Function</span> nach_Knopfdruck_im_Formular()
Me!Irgendwas = Variable1 &amp; Varaible2 &amp; Variable3
OderIrgendwas = Me!AusdeinemFormular &amp; WasWeissIch
<span class="REM">'oder was immer du willst</span>
<span class="TOKEN">End</span> <span class="TOKEN">Function</span>&nbsp;</pre></div>

roland-wolff
11.09.2002, 13:19
Mit dem Öffnen des Formulars komm ich glaube ich nicht weiter...

denn ich habe eine Schleife in der bestimmte Prozeduren abgearbeitet werden. Innerhalb dieser Schleife muß ich jedoch die Ausführung des Codes zur Eingabe von Informationen unterbrechen und nach der Eingabe die Funktion wieder fortsetzen.

Das Formular ist dabei eine Grundlage um den Fortgang der Prozedur/Schleife zu sichten.

Oder habe ich euch falsch verstanden...

CU Roland

kama
11.09.2002, 14:06
Hier wird x und "AlleZusammen" nach einem Schleifendurchlauf weiterverarbeitet
Vorgehensweise also
Informationen aus Funktion 1 ( auch die aus der schleife!) in globalen Variablen abspeichern und dann in der nächsten Funktion weiterverarbeiten.
das geht ja auch mit dem zähler
zb
for x = 1 to 10
if x =5 then exict Funktion
next x

In der nächsten Funktion dann
for X=X to 10....
...

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre>
<span class="TOKEN">Public</span> Variable, AlleZusammen, x
&nbsp;
<span class="TOKEN">Function</span> vor_Formular_&ouml;ffnen()
Variable = Array(&quot;Diese Variablen&quot;, &quot; Wurden zur weiterverarbeitung&quot;, &quot;Gespeichert&quot ;)
<span class="TOKEN">For</span> x = 0 <span class="TOKEN">To</span> 1
AlleZusammen = AlleZusammen &amp; Variable(x)
<span class="TOKEN">Next</span> x
<span class="REM">'DoCmd.OpenForm &quot;DeinFormular&quot;</span>
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Function</span><hr>&nbsp;
<span class="TOKEN">Function</span> nach_Knopfdruck_im_Formular()
AlleZusammen = AlleZusammen &amp; Variable(x)
<span class="TOKEN">End</span> <span class="TOKEN">Function</span>&nbsp;</pre></div>

khs-hh
11.09.2002, 14:46
@Roland:

Warum greifst Du Erwins Vorschlag nicht auf?

Alle diese "Verrenkungen" sind doch nicht nötig.

Im Code (während irgendwelcher Schleifen oder sonst wo) öffnest Du ein Formular modal und dort kann der User seine Eingaben machen. Wenn dieses Formular geschlossen wird, läuft der Code genau an dieser Stelle weiter.

Und wo ist jetzt Dein Problem?

erwin
11.09.2002, 15:03
also ich geb's jetzt auf, da ich
a) nicht verstehe, was Roland für Problem mit
...
... irgendwelche Schleifen im komplexen Modul
docmd.openform "weitereEingaben",,,,,acDialog
' der Code läuft erst weiter wenn's Form geschlossen wird
...
...hat ??!

und
b) kama's Gedankengänge sowieso nicht nachvollziehen kann

so long Erwin...

kama
11.09.2002, 15:33
@erwin
Da gibts aber nicht viel Aufzugeben, bei einer sicherlich richtigen Lösung, hast du hast hier Nix großartig erklärt.
Im übrigen war mein Ziel zu zeigen, das es vieleicht günstiger ist eine große Funktion in unterfunktion aufzuteilen und nach Bedarf aufzurufen. Aber mir fehlt da deine Brillanz.

Und damit man es versteht
<a href="http://www.donkarl.com/FAQ/FAQ6VBA.htm" target="_blank">http://www.donkarl.com/FAQ/FAQ6VBA.htm</a>

Punkt 6.9

Nouba
11.09.2002, 15:42
@kama,

Erwin hat's doch ausreichend 2x erklärt. Wenn sich Roland nicht missionieren lassen will, wird er andere Wege zur Glückseeligkeit suchen müssen.

erwin
11.09.2002, 15:53
@kama
du willst mich wohl noch völlig verwirren ;)

??? FAQ 6 VBA Punkt 7.1 ??? :confused:

Wenn dann FAQ 6.9 (Code anhalten für Dialog)
aber da schreibt Karl doch dasselbe wie ich...

slg Erwin...

kama
11.09.2002, 16:07
@Erwin
6.9 hab ich doch geschrieben (oder wars verbessert?)

Ich nehm das "Nix" mit dem Ausdruck des Bedauerns zurück! :rolleyes: Habe deien zweites Posting übersehen.

@Nouba
Genau

roland-wolff
11.09.2002, 18:07
OK ihr Freaks,

ihr habt natürlich Recht...

... habe mich missionieren lassen :-) Läuft auch ganz gut, ich blende das Formular einfach aus...

Also an alle besten Dank

CU Roland

BrUd
03.11.2002, 14:01
Hallo,

hier muss ich doch auch nochmal meinen Senf zu geben.

Die Lösung von Erwin ist genau das richtige für mein Problem.
Wenn ich es richtig verstanden habe war es genau das gleiche was auch Roland hatte.

Also für die Nachwelt die auch über die Suche hier landet: Auf jeden Fall versuchen

Udo

matthias b. m.
27.08.2010, 13:48
hallo!
ich möchte zu dem thema nur kurz für die nachwelt etwas anmerken, weil es mir gerade einige zeit gekostet hat:

aus welchem grund auch immer dürfte das von erwin erwähnte code-schnipsel
"docmd.openform "deinForm",,,,,acDialog"
nicht (immer?) ausreichend sein.

bei mir stoppte der code einfach nicht, erst ein weiteres schnipsel von CptChaos http://www.ms-office-forum.net/forum/showthread.php?t=243852&highlight=acDialog brachte mich zufällig zu einer lösung... so funktioniert es bei mir jetzt wie gewünscht:

DoCmd.OpenForm "deinForm", acNormal, , , acFormPropertySettings, acDialog

scheinbar ist view und/oder dataMode auch relevant...