Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TMemo Komponente, Zeilen in Firbird DB schreiben (https://www.delphipraxis.net/101600-tmemo-komponente-zeilen-firbird-db-schreiben.html)

Eppos 16. Okt 2007 09:19

Datenbank: Firbird • Version: 1.5 • Zugriff über: BDE

TMemo Komponente, Zeilen in Firbird DB schreiben
 
Hallo zusammen,

ich habe folgendes Problem.
Ich benutze die TMemo Komponente um ein Blob-Feld aus der Datenbank anzuzeigen. Das funktioniert auch.
Wenn ich nun meinen Update-Befehl absätze bekomme ich einen Fehler. Conversion Error from String "Blob".

Mein Update Befehl.

Delphi-Quellcode:
QuMem.Sql.Text := 'Update Tabelle1 set Mem = ("' + MeMemo.Lines.Text + '"); ';
Weiss jemand wo der Fehler ist?

Vielen Dank.

Eppos

RavenIV 16. Okt 2007 09:35

Re: TMemo Komponente, Zeilen in Firbird DB schreiben
 
Zeig doch mal, wie Du das TMemo aus der Datenbank füllst.
Und gib und mehr Infos zur DB.

Eppos 16. Okt 2007 09:38

Re: TMemo Komponente, Zeilen in Firbird DB schreiben
 
Datenbank: Firbird
Version: 1.5
Verbindung: BDE
Tabelle: Tabelle1
Feld: Mem (Blob Memo)
Delphi-Quellcode:
MeMemo.Lines.Text := QuMem.FieldByName( 'Mem' ).AsString;

alex517 16. Okt 2007 09:47

Re: TMemo Komponente, Zeilen in Firbird DB schreiben
 
Hi Eppos,

Firebird interpretiert Angaben in doppelten Anführungsstrichen als Feld- bzw. Tabellen-Namen.
Den Inhalt eines Strings mußt du in einfache Anführungsstrichen setzen.
Um solche Probleme zu vermeiden, gilt auch für Datums- und Zeitangaben, sollte man immer mit
Parametern arbeiten.

Delphi-Quellcode:
QuMem.Sql.Text := 'Update Tabelle1 set Mem = :Mem';
QuMem.ParamByName('Mem').AsString := MeMemo.Lines.Text;
Durch die Verwendung von .AsString, .AsDateTime usw. bei der Parameterzuweisung hat man
auch keine Probleme mit den Parametertypen.

alex

RavenIV 16. Okt 2007 09:51

Re: TMemo Komponente, Zeilen in Firbird DB schreiben
 
Oder man verwendet QuotedStr:
Delphi-Quellcode:
QuMem.Sql.Text := 'Update Tabelle1 set Mem = ' + QuotedStr(MeMemo.Lines.Text);
Das QuotedStr setzt die Anführungszeichen " oder ' so wie sie benütigt werden.

Schöner ist allerdings die Variante mit den Parametern.

Eppos 16. Okt 2007 09:58

Re: TMemo Komponente, Zeilen in Firbird DB schreiben
 
Ich werde beide Varianten heute Abend mal ausprobieren.

Vielen Dank im Vorraus!

Eppos

Eppos 16. Okt 2007 11:05

Re: TMemo Komponente, Zeilen in Firbird DB schreiben
 
Bei der ersten Möglichkeit kommt diese Fehlermeldung:
Allgemeiner SQL-Fehler feature is not supported BLOB and array dataq types are not supported for move operation

Bei der zweiten Möglichkeit diese:
Conversion Error from String.

RavenIV 16. Okt 2007 11:10

Re: TMemo Komponente, Zeilen in Firbird DB schreiben
 
Zeig mal den Code, damit wir sehen, was Du gemacht hast.

Eppos 16. Okt 2007 11:33

Re: TMemo Komponente, Zeilen in Firbird DB schreiben
 
Delphi-Quellcode:
// erste
QuData.Sql.Text := 'Update Data set Data = ' + QuotedStr(MeMem.Text);
QuData.Execsql;
QuData.Free;

// zweite
QuData.Sql.Text := 'Update Data set Data = :Data';
QuData.ParamByName('Data').AsString := MeData.Text;
QuData.Execsql;
QuData.Free;

RavenIV 16. Okt 2007 11:44

Re: TMemo Komponente, Zeilen in Firbird DB schreiben
 
Zitat:

Zitat von Delphi 7 Hilfe
Text (Eigenschaft von TStrings)
Mit der Eigenschaft Text lassen sich alle Strings eines TStrings-Objekts als ein ganzer String ansprechen, dessen Elemente durch das Code-Paar für Wagenrücklauf (Carriage Return, CR) und Zeilenvorschub (Line Feed, LF) voneinander getrennt sind.

Bei einem Lesezugriff auf die Eigenschaft Text werden Strings zurückgegeben, die durch Wagenrücklauf- und (in Windows) Zeilenvorschubzeichen getrennt sind

Da sich die Property Text des TMemo auf TStrings bezieht, kommt der Fehler vermutlich von den CR/LF.

Nebenbei erwähnt:
Es ist eh keine gute Idee, in einer Datenbank BLOBs zu verwenden.
Jedes DBMS bietet Text-Felder in variabler Grösse an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 Uhr.
Seite 1 von 3  1 23      

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