![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: Interbase
SQL- Abfrage
Also ich habe mal wieder ein kleines Problem .
Ich möchte einen String der ziemlich lange also um die 600 Zeilen ist in ein Textfeld(Memo) einer Datenbank mittels des Befehls 'Update Tabellenname set Memo1 = '+string+'where zaehler = 32 ' ändern.. Beim ausführen diese Befhels kommt es zu folgender Fehlermeldung : Unerwartetes Ende des Statements....... Klingts so als ob man im Update - Statement einen so langen String einfügen kann oder ? |
Re: SQL- Abfrage
Versuch mal 'ne parametrisierte Abfrage.
Code:
Qry := 'UPDATE ... SET Spalte=:Spalte';
Query.Add(Qry); Query.Prepare; Query.ParamByName('Spalte').AsString := DeinString; Query.Open; |
Re: SQL- Abfrage
Parameter sind immer eine gute Alternative.
Dein Problem lag aber an den fehlenden Quotes um den einzufügenden Text. |
Re: SQL- Abfrage
Jetzt kommt die Meldung das das Feld bei Mir Memo1 nicht gefunden wurde !!!
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, IBDatabase, StdCtrls, DBCtrls, IBCustomDataSet, IBQuery; type TForm1 = class(TForm) DataSource1: TDataSource; IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; IBQuery1: TIBQuery; DBMemo1: TDBMemo; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); var test : string; qry : string; begin IBQuery1.Open; DBMemo1.SelectAll; test :=DBMemo1.SelText; StringReplace(test,'FormStammArtikel','FormArtiekl_Stamm,,',[rfReplaceAll]); IBQuery1.SQL.Clear; Qry := 'UPDATE Tabelle SET MEMO1 =:Spalte where zaehler = 32'; IBQuery1.sql.Add(Qry); IBQuery1.Prepare; IBQuery1.ParamByName('Spalte').AsString := test; IBQuery1.Open; end; end. |
Re: SQL- Abfrage
I vermute mal, weil du die selbe Query-Kompo verwendet hast, für welche du eine persistentes Zugriffsfeld erzeugt hast.
Ich würde mal über ein Updateobjekt nachdenken. |
Re: SQL- Abfrage
Wie sieht denn deine Datenbank aus? Gibts da überhaupt eine Spalte die "MEMO1" heisst?
|
Re: SQL- Abfrage
Ja die gibt es !
|
Re: SQL- Abfrage
Hm, dann sollte es auch keine Probleme geben, wenn die Spalte "Memo1" in "Tabelle" ist ... :gruebel: ... Sicher? ;)
Bau FormCreate mal so um:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var test : string; qry : string; begin IBQuery1.Open; DBMemo1.SelectAll; test :=DBMemo1.SelText; StringReplace(test,'FormStammArtikel','FormArtiekl_Stamm,,',[rfReplaceAll]); IBQuery1.Close; Qry := 'UPDATE Tabelle SET "Memo1"=:Spalte WHERE "zaehler"=32'; IBQuery1.SQL.Clear; IBQuery1.SQL.Add(Qry); IBQuery1.Prepare; IBQuery1.ParamByName('Spalte').AsString := test; IBQuery1.Open; // ... IBQuery1.Close; end; |
Re: SQL- Abfrage
Das Problem ist wie oben schon erwähnt, das in der ursprünglichen Abfrage das Feld Memo abgefragt wurde und von DBMemo1 referenziert wird! Nimm ne weitere Query-Kompo, ein IBDataSet oder ein Updateobjekt!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07: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 by Thomas Breitkreuz