SQlite concatenate string

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

SQlite concatenate string

Beitrag von Aliobaba »

Hallo,

Ich möchte gerne in einem Datenbankfeld (DBMemo) den vorhandenen Texteinträgen bei bestimmten definierten Datensätzen (Tabellenbezeichnung/-inhalt: "T4=1") einen kurzen Text voranstellen. Dieses Zusammenfügen von zwei Texten soll bei "SQlite" mit diesem Zeichen " || " möglich sein.

Wie bekomme ich dies in einen Pascal-Code?

Folgende Version funktioniert "nicht zuverlässig" (Ich habe den Eindruck, dass der Eintrag willkürlich nur bei einigen Datensätzen erfolgt:

Code: Alles auswählen

Procedure TForm_Keys.Key_in_selektierte_Hinweisfelder_eintragen( sss : string );
begin
   Form1.QText_ID_initialisieren;
   With form1.Qtext_ID do
       begin
          SQL.Clear;
          SQL.Text := 'UPDATE tText SET rHinweis =:ccc || rHinweis ';
          SQL.Add ('  WHERE tText.T4= 1 ');
          ParamByName('ccc').AsString := sss ; // sss ist eine Textvariable: z.B. "Achtung: "
          ExecSQL;
   end;
end;

Das Einfügen eines einfachen Strings funktioniert mit demselben Code absolut problemlos:

Code: Alles auswählen

Procedure TForm_Keys.Key_in_selektierte_Hinweisfelder_eintragen( sss : string );
begin
   Form1.QText_ID_initialisieren;
   With form1.Qtext_ID do
       begin
          SQL.Clear;
          SQL.Text := 'UPDATE tText SET rHinweis = "-Testeintrag-" ';
          SQL.Add ('  WHERE tText.T4= 1 ');
          ExecSQL;
   end;
end;


Was mache ich falsch?
Schönen Sonntag!
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: SQlite concatenate string

Beitrag von Soner »

Direkt in SQL-Editor funktioniert es auch, etwa so:

Code: Alles auswählen

UPDATE tText SET rHinweis ='test-' || rHinweis 


Es hat wahrscheinlich mit Parameter zu tun, versuchmal rechte Seite in Klammern zu setzen, damit es als Einheit gesehen wird.

Code: Alles auswählen

 
// So
 SQL.Text := 'UPDATE tText SET rHinweis =(:ccc || rHinweis)';
// oder so
SQL.Text := 'UPDATE tText SET rHinweis =((:ccc) || rHinweis)';
 


Als SQL-Editor verwende ich das hier, richtig gut und sehr einfach:
http://wiki.tcl.tk/17603

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: SQlite concatenate string

Beitrag von Aliobaba »

Hallo Soner,

Super!!! Das war die Lösung: (nach 30 Minuten! :) )

Code: Alles auswählen

 SQL.Text := 'UPDATE tText SET rHinweis =(:ccc || rHinweis)';

Vielen herzlichen Dank!
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Antworten