Formular-Aktualisierung Access/VBA

Folgendes Problem:

Ich habe ein Formular mit einem Feld [Feld1]
Bei einer bestimmten Aktion (z.:b. ButtonKlick) soll folgendes Programm gestartet werden:

for x = 1 to 10000
[Feld1] = x
[Feld1].Requery
Next x

[Feld1] soll nun immer das aktuelle ‚x‘ anzeigen.
Tut es aber nicht! Es wird nach einer Weile immer nur der Wert 10000 angezeigt, also der letzte. Alle anderen Werte werden scheinbar überschlagen.
Ändern von Textfeld in Bezeichnungsfeld bringt auch nichts.

Wie kann ich Access/VBA dazu bewegen alle Zahlen anzuzeigen?

Wer kann helfen?

Danke im Voraus!

Oliver

for x = 1 to 10000
[Feld1] = x
[Feld1].Requery
Next x

Wie kann ich Access/VBA dazu bewegen alle Zahlen anzuzeigen?

Hallo Oliver!

Die Idee ist schon mal die richtige, aber „Requery“ bezieht sich auf eine Abfrage/ein Tabellenfeld. Stattdessen kannst Du aber z.B. die „Repaint“-Mehtode auf das Formular anwenden. Dadurch wird der Bildschirm aktualisiert.

Ich weiss jedoch nicht, ob das den gewünschten Effekt bringt, denn eigene Experimente in dieser Richtung waren nicht immer so besonders erfolgreich. Aber probiers mal aus!

Gruß,
Claudio

Hallo Oliver,

nach Deiner Anweisung rauscht natürlich die Zahl von 1 bis 10000 durch und zeigt nur das Ende an.

  1. Soll beim Buttonklick jeweils der nächsthöhere Wert angezeigt werden, dann hab ich folgenden Code für Dich (die VBA-Cracks unter Euch werden die Einfachheit verzeihen!):

If [feld1] = 0 Or IsNull([feld1]) Then

[feld1] = 1

Else

[feld1] = [feld1] + 1

End If

oder

  1. Willst Du jedesmal beim Buttonklick die Serie (1 - 100000) anzeigen lassen?

Dann brauchst Du, glaub ich, einen langsameren PC!

Übrigens eignet sich die unter 1. genannte Variante auch als manuelles Zählerfeld (einfach im Feld1 den Startwert einstellen und beim Klicken wird jedesmal eins höher gezählt)

Gruss Andreas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke!

Repaint bringt das gewünschte Ergebnis.
Zwar kann man die Zahlen trotzdem nicht lesen, die rauschen nur so durch, aber es ging mir eh nur ums Prinzip.

Oliver

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

for x = 1 to 10000
 Me![Feld1] = x
 DoEvents
Next x

Ggf. musst du noch eine Warteschleife bzw. Wartefunktion hinter dem DoEvents einfügen.

Reinhard