![]() |
Datenbank: mySQL • Version: 5 • Zugriff über: ZEOS
TRichEdit per Parameter in DB schreiben
Hallo,
ich benutze folgenden Code, um ein TRichEdit in eine DB zu schreiben. Die Funktion wird ohne Fehler durchlaufen, in der Datenbank bleibt das Feld Memo aber auf nil.
Delphi-Quellcode:
Das Datenbankfeld Memo ist vom Typ Text und ist in anderen Forms der Anwendung an TDBRichEdit gebunden und das funktioniert wunderbar. Auch das Übertragen von RichEdit-Inhalten über Streams funktioniert wie gewünscht.
//...
const SQLNewMsgSend = 'insert into MsgSend values(default,now(),:User,'#39'inactive'#39',:User,:User,default,:Name,:Memo,:Reciep);'; // ... function TCommon.SendMsg(Subject: string; Memo: TObject; SenderID,ReciepID: Integer; AttachedList: TIntegerList):boolean; var i:integer; LastIndex:integer; Stream: TMemoryStream; begin result:=false; Stream:=TMemoryStream.Create; try with QryMessage do begin // in "Gesendet" eintragen SQL.Text:=SQLNewMsgSend; Params.ParamByName('User').Value:=SenderID; Params.ParamByName('Reciep').Value:=ReciepID; Params.ParamByName('Name').Value:=Subject; if TRichEdit(Memo).lines.Count>0 then begin Stream.Clear; TRichEdit(Memo).Lines.SaveToStream(Stream); Stream.Position := 0; Params.ParamByName('Memo').LoadFromStream(Stream,ftFmtMemo); end; ExecSQL; //... Nur mit der Übergabe an einen SQL-Parameter gehts bei mir nicht. Wer hat ne Idee? Gruß Andreas |
Re: TRichEdit per Parameter in DB schreiben
Hallo,
kann mir denn wirklich keiner helfen? Gruß Andreas |
Re: TRichEdit per Parameter in DB schreiben
Hallo Andreas,
das erste, was mir an deinem parametrisierten SQL-String auffällt, ist das mehrfache Vorkommen von :USER. Da durch ParamByName() nur das erste Vorkommen gefunden werden dürfte, sollte das Statement gar nicht ausführbar sein. Um den Fehler auszuschließen könntest du die Parameter User1, User2, User3 einführen. #39 ist sehr platzsparend, aber QuotedStr('inactive') finde ich irgendwie selbstdokumentierend - du nicht auch? Grüße vom marabu |
Re: TRichEdit per Parameter in DB schreiben
Hallo,
das mit den QuotedStr ist ne gute Sache, klappt aber leider in einer Konstantendefinition nicht! Der Parameter User soll mehrfach gespeichert werden (Ersteller, Besitzer, Absender...). Das funktioniert wie erwartet. Nur mit den Memos (RichText) wills nicht klappen. Gruß Andreas |
Re: TRichEdit per Parameter in DB schreiben
Hallo,
Zitat:
Zitat:
Delphi-Quellcode:
Aber wenn du es sagst, dann wird es stimmen.
function TParams.FindParam(const Value: string): TParam;
var I: Integer; begin for I := 0 to Count - 1 do begin Result := TParam(inherited Items[I]); if AnsiCompareText(Result.Name, Value) = 0 then Exit; end; Result := nil; end; Zitat:
Gute Nacht |
Re: TRichEdit per Parameter in DB schreiben
Hallo,
mit ftMemo geht!!! :bouncing4: :bounce2: :bounce1: Warum kam da denn keine Fehlermeldung? Übrigens, gibt es sowas wie ne Anleitung zu den ZEOS? Hab im Netz nichts gefunden (oder einfach nur falsch gesucht? :gruebel: ) Ich verstehe Deine Skepsis wegen der mehrfachen User nicht. Ich möchte ja nicht für jeden :user einen Anderen Werte eintragen sondern mehrfach den Wert, den ich in ...('User').value eingetragen habe. Hintergrund: Ich speichere den Erzeuger, den Besitzer, den letzten Bearbeiter eines Datensatzes. Die Kennung des Users landet in :User. In diesem Fall wird ein neuer Datensatz angelegt, :User ist alse Erzeuger, Besitzer und letzter Bearbeiter. Wie gesagt, funktioniert wie erwartet. Das Stück Programm ist die Parameter-Suchroutine der ZEOS-Komponente, oder? Gruß Andreas |
Re: TRichEdit per Parameter in DB schreiben
|
Re: TRichEdit per Parameter in DB schreiben
Hallo,
danke für die Quellenangaben. Beide sind mir schon bekannt. Leider scheint es kein Handbuch oder so zu geben. Ich hätte gerne was zum Ausdrucken fürs stille Örtchen :wink: Na ja, egal. Trotzdem nochmal vielen Dank an alle. Ihr habt mir echt weitergeholfen, wie immer. Vielleicht bin ich ja auch mal soweit, dass ich helfen kann. Bislang reicht meine Erfahrung nicht aus oder ich bin beim Antworten zu langsam. :cry: So, das musste mal gesagt werden :hi: :hi: Gruß Andreas |
Re: TRichEdit per Parameter in DB schreiben
Hallo Andreas,
Zitat:
Freundliche Grüße |
Re: TRichEdit per Parameter in DB schreiben
Hallo,
das leuchtet mir ein. Für mein (bisheriges) Verständnis sollte man Parameter mehrfach benutzen können. Wenn natürlich für jeden Parameter im SQL-Statement auch einer in der Parameterliste angelegt wird... :party: Ich werde meine SQL-Strings wohl auf eindeutige Parameter umstellen, um nicht in diese Falle zu tappen! Nochmal Danke Andreas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 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