Seite 1 von 1
Tabelle Datensatz für Datensatz automatisch aktualisieren
Verfasst: Di 10. Sep 2024, 12:50
von Goebele
Liebe BASE-Freunde,
es gelingt mir nicht:
MAKRO-Aufgabe: Einbau einer Hauptschleife, die das nächste Formular (mit dem nächsten DS) lädt, um ohne weiteren Usereingriff alle DS der Tabelle zu aktualisieren.
LO BASE 7.6 Tabelle ‘Eigner‘ Formular ‘EINGER-DateUP‘ Schaltfläche ruft
Makro ‘Sub EignerDATEup1(oEvent As Object) auf.
Ziel: in allen DS der Tabelle bestimmte Feldinhalte zu ergänzen
(Textfeldinhalte in DATE-Felder übertragen).
Das gelingt derzeit mit einem, dem aktuellen Formular.
Aufgabe: Einbau einer Hauptschleife, die das nächste Formular (mit dem nächsten DS) lädt, um ohne weiteren Usereingriff alle DS der Tabelle zu aktualisieren.
Meine bisherigen Versuche waren erfolglos.
Mein Makro lege ich bei.
Für eine Lösung wäre ich dankbar.
Gruß
Goebele
Re: Tabelle Datensatz für Datensatz automatisch aktualisieren
Verfasst: Di 10. Sep 2024, 15:25
von RobertG
Wenn Du bei allen Datensätzen das gleiche Update machen willst, warum überprüfst Du nicht, welchen SQL-Code Du da zusammenstellst?
Welche Bedingung gilt denn für die Datensätze, die ein Update erfahren sollen?
Re: Tabelle Datensatz für Datensatz automatisch aktualisieren
Verfasst: Mi 11. Sep 2024, 11:21
von Goebele
Hallo Robert,
was meinst Du mit "warum überprüfst Du nicht, welchen SQL-Code Du da zusammenstellst?"
Es soll in allen DS der Inhalt derjenigen Textfelder, welche ein Datum darstellen, in vorhandene evtl. leere DATE-Felder übertragen werden. Das funktioniert für den per Schaltfläche rufenden DS (Formular). Ich könnte nun Formular für Formular händisch weiterblättern und den Button drücken.
Es liegt aber nahe, dass es möglich sein sollte, das Makro so zu erweitern, dass automatisch das immer nächste Formular geöffnet und aktualisiert wird. Die Daten sind nicht immer die gleichen! Die SQL-Statements müssen also immer neu generiert werden.
Falls der SQL-Code in dem übermittelten Makro einen Fehler hat, dann vielleicht, weil ich es 'bereinigt' habe, damit die Datei nicht so groß wird.
Gruß Goebele
Re: Tabelle Datensatz für Datensatz automatisch aktualisieren
Verfasst: Mi 11. Sep 2024, 15:07
von HeiDieLX2
Hallo Goebele,
wenn ich dein PDF richtig verstehe, möchtest du eine Anzahl von x Feldern in x Sätzen mit neuen Werten belegen.
Das Makro schreibt jeweils bei einem Satz
die Daten weg.
Dann soll sich das Makro wohl n-fach wiederholen bis alles erledigt ist?
Das ganze kann SQL jedoch ohne solch große Programmierung für dich lösen.
Code: Alles auswählen
UPDATE eigner SET <Feldname> = <Wert>, <Feldname2> = <Wert2> WHERE name like 'Hei%';
Entscheidend dabei ist die WHERE Klausel, SQL führt den Befehl solange aus wie die Klausel wahr ergibt.
Das ist auch das was Robert hiermit
Welche Bedingung gilt denn für die Datensätze, die ein Update erfahren sollen?
gemeint hat.
Re: Tabelle Datensatz für Datensatz automatisch aktualisieren
Verfasst: Mi 11. Sep 2024, 18:32
von F3K Total
Moin,
wenn ich Goebele richtig verstanden habe, möchte er/sie schlicht verschiedene Daten (Mehrzahl von Datum), die bisher in einer Text-Spalte der Tabelle vorliegen, in ein DATE-Format übertragen.
Das geht tatsächlich komplett ohne Makro für alle Datensätze einer Tabelle in einem Schwung.
Beispieldatei anbei.
In der Datei findet man eine Tabelle T_DATA, in dieser befinden sich zwei VARCHAR Datumsspalten und zwei DATE Datumsspalten, diese sind noch leer:

- 1.png (30.52 KiB) 2554 mal betrachtet
Wenn man nun über Menü Extras/SQL... folgenden SQL-Code
einmalig ausführt
Code: Alles auswählen
UPDATE "T_DATA" SET "Vertr-Beginn" = CAST('20'||RIGHT("VB_TXT",2)||'-'||SUBSTR("VB_TXT",4,2)||'-'||LEFT("VB_TXT",2) as DATE) ;
UPDATE "T_DATA" SET "Vertr-End" = CAST('20'||RIGHT("VE_TXT",2)||'-'||SUBSTR("VE_TXT",4,2)||'-'||LEFT("VE_TXT",2) as DATE);
werden die Datumsspalten ordentlich gefüllt, das Ergebnis sieht so aus:

- 2.png (30.96 KiB) 2554 mal betrachtet
Gruß R
Re: Tabelle Datensatz für Datensatz automatisch aktualisieren
Verfasst: Do 12. Sep 2024, 12:13
von HeiDieLX2
Hallo F3K Total,
UPDATE "T_DATA" SET "Vertr-Beginn" = CAST('20'||RIGHT("VB_TXT",2)||'-'||SUBSTR("VB_TXT",4,2)||'-'||LEFT("VB_TXT",2) as DATE) ;
UPDATE "T_DATA" SET "Vertr-End" = CAST('20'||RIGHT("VE_TXT",2)||'-'||SUBSTR("VE_TXT",4,2)||'-'||LEFT("VE_TXT",2) as DATE);
das ist ja nun die Platin-Edition!
Applaus
Re: GELÖST: Tabelle Datensatz für Datensatz automatisch aktualisieren
Verfasst: Do 12. Sep 2024, 12:30
von Goebele
Hallo, Ihr Helfer,
ja ich bin richtig verstanden worden.
Für die Info, direkt mit SQL an die Sache ranzugehen danke ich.
Danke @ HeiDieLX2: überprüft und aktualisiert werden sollen alle DS
Besonderen Dank an @F3K Total für die 'Fertiglösung' !!!!!
Als Anfänger kann ich sehr viel lernen. Die Hilfsbereitschaft im Forum ist phänomenal.
SQL wir mich nun besonders beschäftigen.
Danke!!!
Gruß Goebele