Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL und Interbase Problem (https://www.delphipraxis.net/90371-sql-und-interbase-problem.html)

sandrocm 16. Apr 2007 11:02

Datenbank: Firebird • Version: 1.5 • Zugriff über: IBDatabase

SQL und Interbase Problem
 
Ich habe ein mittlerweile großes Problem.

Ich versuche mit einer Richeditbox einen Text in eine IB Datenbank einzulesen:

function Tbasis.Richeditmemorystreaminstring(sricheditvon:t srichedit):string;
var
S: TMemoryStream;
Fil: string;
begin
S := TMemoryStream.Create;
sricheditvon.Lines.SaveToStream(S);
S.Position := 0; // << !!
SetLength(Fil, S.Size);
S.Read(PChar(Fil)^, S.Size);
result:=Fil;
S.Free;
end;

Das Ergebnis lade ich ein array. Da steht es auch korrekt mit der RTF formatierung drinnen.

Wenn ich das aber in die Datenbank einlade kommt immer ein Fehler.....

Nehme ich aber den Fehlerstring aus meiner log und gebe ihn manuell in die SQL Query per copy/paste ein, dann geht er ohne probleme rein... Hat jemadn eine Ahnung warum ich das nicht hin kriege???

Hier der Beispiel string der in SQL direkt geht aber über die IBDatabase nicht rein geht.

update BRIEFEDITOR set BRIEFEDITORFELD1Text = '{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttb l{\f0\fnil Tahoma;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\pard\cf1\f0\fs16 Diagnosen: ###50100\{Seit der letzten Untersuchung waren keine ernsthafen internistischen Erkrankungen oder Verletzungen aufgetreten.\}***
\par }
' where BRIEFEDITORID = 3

mkinzler 16. Apr 2007 11:04

Re: SQL und Interbase Problem
 
Auch hier: Welcher Fehler?

Bernhard Geyer 16. Apr 2007 11:04

Re: SQL und Interbase Problem
 
Schau dir mal parametrisierte Abfragen an. Damit dürfte das Problem zu lösen sein.

omata 16. Apr 2007 19:12

Re: SQL und Interbase Problem
 
Hallo sandrocm,

schonmal so versucht?
Delphi-Quellcode:
var Query:TQuery;
    text:string;
begin
  text:=
    '{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil Tahoma;}}' +
    '{\colortbl ;\red0\green0\blue0;}' +
    '\viewkind4\uc1\pard\cf1\f0\fs16 Diagnosen: ###50100\{Seit der letzten ' +
    'Untersuchung waren keine ernsthafen internistischen Erkrankungen oder ' +
    'Verletzungen aufgetreten.\}*** \par }';

  Query:=TQuery.create(self);
  try
    Query.Connection:=...
    Query.SQL.Text:=
      Format(
        'UPDATE briefeditor'#13 +
        'SET briefeditorfeld1text = %s'#13 +
        'WHERE briefeditorid = %d',
        [QuotedStr(text), 3]
      );
    Query.ExecSQL;
  finally
    Query.free;
  end;
end;
Oder wie schon geschrieben über Parameter...
Delphi-Quellcode:
var Query:TQuery;
    text:string;
begin
  text:=
    '{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil Tahoma;}}' +
    '{\colortbl ;\red0\green0\blue0;}' +
    '\viewkind4\uc1\pard\cf1\f0\fs16 Diagnosen: ###50100\{Seit der letzten ' +
    'Untersuchung waren keine ernsthafen internistischen Erkrankungen oder ' +
    'Verletzungen aufgetreten.\}*** \par }';

  Query:=TQuery.create(self);
  try
    Query.Connection:=...
    Query.SQL.Text:=
      'UPDATE briefeditor'#13 +
      'SET briefeditorfeld1text = :text'#13 +
      'WHERE briefeditorid = :id',
    Query.ParamByName('text').AsString:=text;
    Query.ParamByName('id').AsInteger:=3;
    Query.ExecSQL;
  finally
    Query.free;
  end;
end;
Gruss
Thorsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz