AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Stored Procedure mit Delphi und FirebirdSQL
Thema durchsuchen
Ansicht
Themen-Optionen

Stored Procedure mit Delphi und FirebirdSQL

Ein Thema von erich.wanker · begonnen am 11. Apr 2019 · letzter Beitrag vom 11. Apr 2019
Antwort Antwort
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
461 Beiträge
 
Delphi XE4 Professional
 
#1

Stored Procedure mit Delphi und FirebirdSQL

  Alt 11. Apr 2019, 12:55
Datenbank: Firebird • Version: 2.5 • Zugriff über: ZEOSLIB
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>&nbsp;
Datenbankfeld: Vorname
Nachtext-HTML= </b><BR>

Vortext-HTML=
Datenbankfeld: STRASSE
Nachtext-HTML=

Ergebnis-Beispiel im Feld "HTML-TEXT": "<b>Mustermann</b>&nbsp;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;
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \

Geändert von erich.wanker (11. Apr 2019 um 13:31 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Stored Procedure mit Delphi und FirebirdSQL

  Alt 11. Apr 2019, 13:38
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.
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Stored Procedure mit Delphi und FirebirdSQL

  Alt 11. Apr 2019, 13:51
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
Markus Kinzler

Geändert von mkinzler (11. Apr 2019 um 14:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
461 Beiträge
 
Delphi XE4 Professional
 
#4

AW: Stored Procedure mit Delphi und FirebirdSQL

  Alt 11. Apr 2019, 14:26
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
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#5

AW: Stored Procedure mit Delphi und FirebirdSQL

  Alt 11. Apr 2019, 14:41
ZUSATZFRAGE: Wie kann ich diesen Trigger wieder löschen? (und durch einen neuen Ersetzen?)
https://firebirdsql.org/file/documen...iggers-de.html

Pro Tabelle ein Trigger, der die jeweiligen Tabellenbesonderheiten (Spaltennamen ...) berücksichtigt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz