PDA

Vollständige Version anzeigen : Über Schaltfl. einem Feld in allen DS den Wert 0 zuordnen


Eniko
26.06.2001, 16:23
Hallo, ich muss über eine Schaltfläche in einem Formular eine Spalte einer Tabelle (in allen Datensätzen)einen Wert rücksetzen. Z. B. Ja/Nein-Feld auf nein (0). Ein Klick für alle Datensätze. Wenn ich VBA verstehen würde, dann käme eine Schleife mit Abfrage, ob alle null sind, usw., aber ich kanns nicht! Vielen Dank für Eure Hilfe. Eniko

Pepi
26.06.2001, 16:31
Hallo Eniko,
das kannst einfacher haben:
DoCmd.RunSQL "UPDATE DeinTabellenName SET DeinTabellenName.DeinFeldName = DerNeueWert;"

Das müsste gehen (hab's getestet)
Gruß, Matthias

Eniko
26.06.2001, 16:38
Danke matthias, und wo schreib ich die Zeile hin, bei Ereignis als Code? Eniko

Eniko
26.06.2001, 16:50
Matthias, ich hab's. Aber wie unterbindet man die dusslige Meldung, dass 1000 Datensätze aktualisiert werden und ein "rückgängig" unmöglich ist? Bitte noch eine Zugabe!!Eniko

GustavKurz
26.06.2001, 17:47
Hi Eniko!
Wenn Deine SQL-Anweisung in VBA läuft, dann:

DoCmd.SetWarnings False 'Schaltet lästige Systemmeldungen aus

Hier Kommt dann Deine SQL hin

DoCmd.SetWarnings True 'Schaltet lästige Systemmeldungen wieder ein

Wenn Du mit Makros arbeitest, dann in der Spalte "Aktion": Warnmeldungen An, Option Nein

AusführenSQL

in der Spalte "Aktion": Warnmeldungen An, Option Ja

Gruss Gustav Kurz

Eniko
27.06.2001, 07:06
Vielen Dank, Gustav.
Noch'ne Frage. Wie kann ich das Formular dazu bringen, sich nach der Dateneingabe (Klick auf Schaltfläche "zurücksetzen") zu aktualisieren. In der obigen Variante muss ich erst zum nächsten DS springen und dann zurück, dann sind die Werte aktuell.
Eniko

Pepi
27.06.2001, 07:12
Hallo Eniko,
Gustav hat ja die eine Frage schon beantwortet. Die Aktualisierung bekommst du hin, indem du noch folgenden Code anhängst:
Me.Requery
Damit wird die Datenquelledes Formulares erneut abgefragt.
Funktioniert's?
Matthias

Eniko
27.06.2001, 07:30
Danke Matthias, es funktioniert fast bestens. Aber ein Phänomen tritt auf, u. zwar werden nicht immer alle DS geändert. Manchmal bleibt bei 1-2 DS der alte Wert. Es ist ein JA/NEIN-Feld, was ich mit "0" auf Nein zurücksetze. Eniko

Pepi
27.06.2001, 07:35
Wie? Was? Wer? Wohin? 1 Datensatz könnte ich ja noch verstehen - aber 2?
Sollte es der aktuelle Satz sein, hilft vielleicht nach der Requery-Zeile noch folgendes:
Me.Repaint
Damit wird auch der Inhalt der Datenm, die aktuell im Formular angezeigt werden, neu "gezeichnet". Sonst wüsste ich im Moment allerdings nicht, woran es noch liegen könnte. Viel Erfolg!
Matthias

Eniko
27.06.2001, 08:24
Matthias, besonders tritt dieser Effekt beim ersten DS auf. Dort muss ich zweimal klicken, damit der Wwert gesetzt wird. Ich habe jetzt die Routine
"-DoCmd.RunSQL "UPDATE Adressen_SekGesamt SET Adressen_SekGesamt.sonstigeAuswahl = 0 ;"
-Me.Requery
-Me.Repaint"
zweimal hintereinander eingegeben, da klappt es. Eniko