Riri_2022 hat geschrieben:Hallo Jürgen, ich hoffe du siehst diese Mitteilung, ...
Ich bin nicht der einzige Helfer. Zurzeit befasse ich mich etwas intensiver mit OO, danach kommen vermutlich wieder acht Monate Pause.
Ich habe eine wahrscheinlich "doofe" Frage, und zwar...lassen sich die SQL Befehle nur als Abfragen anwenden?
Nein, schon mein erster SQL-Code enthält den UPDATE-Befehl, der für Änderungen zuständig ist. Neben SELECT (vor allem für Abfragen und VIEWs) gibt es INSERT und DELETE (wofür die wohl stehen mögen...). Vielleicht liest du einmal die einleitenden Kapitel der
Einführung in SQL (nur durchlesen, nicht durcharbeiten), damit du ein Gefühl dafür bekommst, wofür SQL gut ist.
Mein Wunsch ist es ein Tabellen Feld nach dem Einfügen des Inhaltes, diesen auf mehrere Felder aufzuspalten ohne dass ich etwas daran mache. Nun War die Idee dass es hierfür eine Formel gibt welche ich einmalig in der Tabelle hinterlege, und diese dann jede neue Zelle der gewünschten Spalte in die nebenstehenden Zellen aufteilt...
Das ist möglich, dafür sind TRIGGER vorgesehen. Ein Trigger ist ein Arbeitsablauf, der automatisch vor oder nach jedem Speichern-Befehl ausgeführt wird. Unter MySQL wird ein Trigger etwa so definiert (stark verkürzt):
Code: Alles auswählen
CREATE TRIGGER <Name des Triggers>
BEFORE INSERT ON <Name der Tabelle>
FOR EACH ROW
BEGIN
/* mach etwas, z.B. die Aufteilung */
END
HSQLDB kennt Trigger (Base-Handbuch Seite 275), aber wie die Befehle aufgebaut sein müssen, wird dort leider nicht beschrieben. Das muss im Internet herausgesucht werden; aber ich finde keinen Ansatz dazu.
Als Abfrage würde mir der SQL Befehl jeglich die gewünschten Daten in einem Bericht anzeigen, richtig?
Nicht nur in einem Bericht, sondern auch in Formularen oder als Datenquelle für ein Writer-Dokument. Ich betone noch einmal: Mein obiger SQL-Befehl
gehört nicht zu einer Abfrage, sondern ändert die Daten innerhalb der Datenbank-Tabelle!
Wo genau gebe ich den SQL Befehl ein, sodass meine Idee umgesetzt werden kann?
Oder geht das aufteilen einer Zelle nicht, so wie ich mir das vorstelle?
Es geht auf jeden Fall.
Nach dem Sinn von SQL und relationalen Datenbanken wäre der Trigger optimal dafür geeignet. Das CREATE TRIGGER wird einmalig eingegeben. Von der Base-Hauptseite ist eigentlich kein Weg dafür vorgesehen. Dann müsste vermutlich (das ist jetzt nur geraten!) der Punkt "Abfrage in SQL-Ansicht erstellen" missbraucht werden; durch "Abfrage öffnen" würde die Trigger-Definition registriert. Danach macht die Datenbank die Aufteilung selbständig.
Es ist verbreitet, alles als "Abfrage" zu bezeichnen; denn Abfragen sind das wichtigste Hilfsmittel von SQL. Mit zumindest der gleichen Berechtigung könnte man verallgemeinert sagen: "Befehl in SQL-Ansicht erstellen" und dann "Befehl ausführen".
Eine sinnvolle Ersatzlösung ist der folgende Weg, sofern die neuen Daten über ein Formular eingegeben werden: Erstelle ein Makro, das "meinen" UPDATE-Befehl ausführt. Bearbeite das Formular; bei den Formular-Eigenschaften ist unter "Ereignisse" bei "Nach der Datensatzaktion" dieses Makro zuzuordnen. (Über Formular plus Makro gibt es auch andere Verfahren, sodass die String-Aufteilung während des Speicherns und nicht erst danach in einem zweiten Schritt erfolgt; aber dazu müssten wir das von dir vorgesehene Vorgehen bei der Dateneingabe genauer erfahren.)
Wenn die neuen Daten auf anderem Weg gespeichert werden sollen, gibt es vermutlich ähnliche Verfahren. Dazu müsstest du aber konkretere Informationen liefern; und vermutlich muss ich mit meinen Base-Kenntnissen passen. Jürgen