![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: ZEOSLIB
Stored Procedure mit Delphi und FirebirdSQL
Hallo,
Wie kann ich eine Stored Procedure in Delphi erstellen, die verschiedene Textbausteine und Feldinhalte in ein neues Feld schreibt? Beispiel: Tabelle mit Felder: HTML_TEXT, NACHNAME, VORNAME, STRASSE, PLZ ..... Ich möchte via Stored-Procedure das Feld "HTML_TEXT" automatisch befüllen, wenn ein Datensatz neu erstellt wurde oder bearbeitet wurde. Das Feld "HTML_TEXT" soll aber aus ausgewählten Feldern und Textelementen (HTML Formatierung und Zeilenumbrüche) erstellt werden. Der User soll die Möglichkeit haben, die zu verwendeten Felder (für das Feld HTML_TEXT) via Checkbox anzuwählen und die HTML-Texte vor-und nach dem Tabellenfeld-Wert definieren können [TCheckbox: Aktiv] [TEDIT: Vortext-HTML] Datenbankfeld: NACHNAME [TEDIT: Nachtext HTML] [TCheckbox: Aktiv] [TEDIT: Vortext-HTML] Datenbankfeld: VORNAME [TEDIT: Nachtext HTML] [TCheckbox: Aktiv] [TEDIT: Vortext-HTML] Datenbankfeld: STRASSE [TEDIT: Nachtext HTML] Beispiel: Vortext-HTML= <b> Datenbankfeld: NACHNAME Nachtext-HTML= </b> Vortext-HTML= <b> Datenbankfeld: Vorname Nachtext-HTML= </b><BR> Vortext-HTML= Datenbankfeld: STRASSE Nachtext-HTML= Ergebnis-Beispiel im Feld "HTML-TEXT": "<b>Mustermann</b> Karl</b><BR>Musterstasse 123" und noch eine Frage: Wie kann ich einer StoredProcedure sagen, dass sie ALLE Records noch mal "durcharbeiten" soll (Falls Änderungen bei den zu verwendeten Felder sind)? Vielen Dank für Hinweise und Vorschläge Erich P.S.: Bis dato hab ich überall kreuz und quer - wo man die Kundenadresse neu erstellen oder ändern kann - folgende Zeilen verteilt: das_query.Edit; { ! } gunst.FieldByName('HTML_TEXT').asString := '<p style="margin: 0px;font-size: 12px">' + query[1].FieldByName('EINTRAG').asString + '<br></p><p style="margin: 0px;font-size: 10px">' + query[1].FieldByName('STRASSE').asString + '<br>' + query[1].FieldByName('PLZ').asString + '-' + query[1].FieldByName('ORT').asString + '</p>'; das_query.Post; |
AW: Stored Procedure mit Delphi und FirebirdSQL
Hallo,
geht es jetzt prinzipiell um Frage 1: "Wie schreibe ich eine SP in Firebird?" oder Frage 2: "Wie schreibe eine SP, die genau das macht, was du hier willst?" Die Frage "wie alle noch mal durch gehen" gehört zu Frage 1? Strings werden über || verknüpft. |
AW: Stored Procedure mit Delphi und FirebirdSQL
Hier würde sich ein Trigger anbieten, der bei Änderung einer der Felder die Änderung anstösst.
SQL-Code:
CREATE TRIGGER UpdateHTML_Text
FOR <Tabelle> BEFORE INSERT OR UPDATE AS BEGIN new.HTML_TEXT := '<p style="margin: 0px;font-size: 12px">' || new.EINTRAG || '<br></p><p style="margin: 0px;font-size: 10px">' || ne.STRASSE || '<br>' || new.PLZ || '-' + new.ORT || '</p>'; END |
AW: Stored Procedure mit Delphi und FirebirdSQL
Hallo Heiko, hallo mkinzler ...
Sorry für meine etwas verwirrende Fragestellung :-) Die Antwort von mkinzler (ein dickes Dankeschööööön) ist - denke ich - die perfekte Lösung. ZUSATZFRAGE: Wie kann ich diesen Trigger wieder löschen? (und durch einen neuen Ersetzen?) Im Moment verwende ich folgende Zeilen: Wenn ein User einen PERSONEN-Datensatz neu erstellt oder ändert (Query[1]-OnDataChange) werden folgende Zeilen ausgeführt:
Delphi-Quellcode:
Query -> tabelle = PERSONEN query[1] -> tabelle = PERSONEN query.SQL.Clear; query.SQL.Append('SELECT * FROM PERSONEN WHERE INR = ' +query[1].FieldByName('INR').AsString ); query.open; query.Edit; query.FieldByName('HTML_TEXT').asString := '<p style="margin: 0px;font-size: 12px">' + query[1].FieldByName('EINTRAG').asString + '<br></p><p style="margin: 0px;font-size: 10px">' + query[1].FieldByName('STRASSE').asString + '<br>' + query[1].FieldByName('PLZ').asString + '-' + query[1].FieldByName('ORT').asString + '</p>'; query.Post; Genau diese Zeilen habe ich in 8 verschiedenen Fenstern.. Diese Art der "HTML-Text Erstellung" habe ich für verschiedene Tabellen.. ... also ein Vielfaches dieser Zeilen verteilt in div. Units :-( |
AW: Stored Procedure mit Delphi und FirebirdSQL
Zitat:
![]() Pro Tabelle ein Trigger, der die jeweiligen Tabellenbesonderheiten (Spaltennamen ...) berücksichtigt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz