Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeoslib zeichen begrenzung? (https://www.delphipraxis.net/115843-zeoslib-zeichen-begrenzung.html)

Gr0by 18. Jun 2008 20:21

Datenbank: mysql • Zugriff über: Zeoslib

Zeoslib zeichen begrenzung?
 
hiho,
so ich arbeite im momet mit der Zeoslib,nun hab ich ein problem...
Wenn ich ein Richtedt in einen String umwandle und in die Datebank schreiben will,bekomme ich eine fehlermeldung.
Bild

Dies benutzte ich um den String zuerstellen:
Delphi-Quellcode:
function GetRTFText(ARichEdit: TRichedit): ansistring;
var
  ss: TStringStream;
  emptystr: string;
begin
  emptystr := '';
  ss := TStringStream.Create(emptystr);
  try
    ARichEdit.PlainText := False;
    ARichEdit.Lines.SaveToStream(ss);
    Result := ss.DataString;
  finally
    ss.Free
  end;
end;
und so wird "geupdatet"

Delphi-Quellcode:
Mainwindow.Sql_Query.SQL.Text:='UPDATE `orders` Set `Order_Description`='''+GetRTFText(richedit1)+''' '+
  'WHERE `Order_Id`= `1`'';';
    Mainwindow.Sql_Query.ExecSql;
Ich vermute, dass die Zeoslib nur mit Strings arbeitet(255 zeichen),ich hab schon einwenig rum probiert aber nix hat funktioniert.

mkinzler 18. Jun 2008 20:27

Re: Zeoslib zeichen begrenzung?
 
Versuch es mal mit (SQL-)Parametern

RavenIV 19. Jun 2008 08:39

Re: Zeoslib zeichen begrenzung?
 
Es liegt daran, dass der SQL.Text nur 255 Zeichen lang sein darf.
Du kannst aber mit Parametern arbeiten.

Delphi-Quellcode:
MeineQuery.SQL.Txt := 'SELECT * FROM MeineTabell WHERE MeineSpalte = :Spaltenwert';
MeineQuery.ParamByName('Spaltenwert').AsString := RichEdit.Text;
Ungestest, weil aus dem Kopf geschrieben.

mschaefer 19. Jun 2008 09:15

Re: Zeoslib zeichen begrenzung?
 
Moin, moin,

Zitat:

Zitat von RavenIV
Es liegt daran, dass der SQL.Text nur 255 Zeichen lang sein darf..

ist eine wüste Behauptung 8) Also ich empfehle erst mal einen Tripp zur Cappuccinomaschine....


Habe einige Programme mit Suchfeld, was generisch in ein 'Where-Statement' eingefügt wird. Habe eben mal 500 Zeichen da reinkopiert und das läuft wie gehabt stabil. Fazit: das liegt wo anders und wird auch mit Paramentern nicht gehen.

Tippe mal, dass sich im RTF-Syntax auch einige Hochkommas befinden und der Zeos-SQL-Interpreter trivial kein RTF-Versteht (Formatiertes SQL in rot grün blau und Fettdruck). Das fehlerhafte RTF-SQL findet sich auch in der Fehlermeldung. Ergo: RTF kann man nicht einfach in ein SQL-Statement einfügen, sondern es muß vorher konvertiert werden, zum Beispiel mit Base64 oder in einen kleinen Stream, wies es das Richedit macht.

Viele Grüße // Martin

mkinzler 19. Jun 2008 09:18

Re: Zeoslib zeichen begrenzung?
 
Es sollte aber mit Parametern gehen

Gr0by 24. Jun 2008 16:14

Re: Zeoslib zeichen begrenzung?
 
Erstmal danke für eure Antworten.
Ich habe den String jetzt mit base64 verschlüsselt, aber ich bekomme jetzt die fehler meldung: Syntax blabla error near ""

@RavenIV ich will noch nix aus der datenbank lesen, ich will erstmal nur schreiben...

Mfg Gr0by

Bernhard Geyer 24. Jun 2008 16:25

Re: Zeoslib zeichen begrenzung?
 
Welchen Datentyp hat das Feld "Order_Description"?

VarChar-Felder können bei MySQL nur 255 Zeichen groß sein. Erst neuere MySQL-Versionen heben diese Grenze auf einen höheren Wert. Siehe auch Überblick über String-Typen

Gr0by 26. Jun 2008 18:44

Re: Zeoslib zeichen begrenzung?
 
Zitat:

Zitat von Bernhard Geyer
Welchen Datentyp hat das Feld "Order_Description"?

VarChar-Felder können bei MySQL nur 255 Zeichen groß sein. Erst neuere MySQL-Versionen heben diese Grenze auf einen höheren Wert. Siehe auch Überblick über String-Typen

Das Feld ist vom Typ Text (~65k zeichen).Aber ich denke er Fehler ist im Quelltext...

p80286 3. Jul 2008 14:42

Re: Zeoslib zeichen begrenzung?
 
Hallo GrOby,

Dein Problem steckt in der RTF-Datei:

{\fonttbl{\f0\fnil \fch'

Da willst Du wohl einen Font verwenden dessen erstes Zeichen ein Sonderzeichen ist.
Auf jeden Fall ist wohl ein Hochkomma im RTF-Text vorhanden, und das bringt das SQL aus dem Tritt.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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