SQlite concatenate string

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

SQlite concatenate string

Beitragvon Aliobaba » 26. Feb 2017, 13:02 SQlite concatenate string

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 )
Aliobaba
 
Beiträge: 369
Registriert: 1. Mai 2012, 08:11

Beitragvon Soner » 26. Feb 2017, 13:32 Re: SQlite concatenate string

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
Soner
 
Beiträge: 411
Registriert: 26. Sep 2012, 23:07
Wohnort: Hamburg
OS, Lazarus, FPC: Win7Pro-32Bit, Immer letzte Lazarus Release mit SVN-Fixes | 
CPU-Target: 32Bit
Nach oben

Beitragvon Aliobaba » 26. Feb 2017, 14:03 Re: SQlite concatenate string

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 )
Aliobaba
 
Beiträge: 369
Registriert: 1. Mai 2012, 08:11

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste

porpoises-institution
accuracy-worried