AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL- Abfrage

Ein Thema von pronny31 · begonnen am 23. Okt 2007 · letzter Beitrag vom 23. Okt 2007
Antwort Antwort
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#1

SQL- Abfrage

  Alt 23. Okt 2007, 13:23
Datenbank: Firebird • Version: 2.0 • Zugriff über: Interbase
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 ?
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: SQL- Abfrage

  Alt 23. Okt 2007, 13:33
Versuch mal 'ne parametrisierte Abfrage.
Code:
  Qry := 'UPDATE ... SET Spalte=:Spalte';
  Query.Add(Qry);
  Query.Prepare;
  Query.ParamByName('Spalte').AsString := DeinString;
  Query.Open;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: SQL- Abfrage

  Alt 23. Okt 2007, 13:56
Parameter sind immer eine gute Alternative.
Dein Problem lag aber an den fehlenden Quotes um den einzufügenden Text.
Markus Kinzler
  Mit Zitat antworten Zitat
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#4

Re: SQL- Abfrage

  Alt 23. Okt 2007, 14:36
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: SQL- Abfrage

  Alt 23. Okt 2007, 14:54
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#6

Re: SQL- Abfrage

  Alt 23. Okt 2007, 15:13
Wie sieht denn deine Datenbank aus? Gibts da überhaupt eine Spalte die "MEMO1" heisst?
  Mit Zitat antworten Zitat
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#7

Re: SQL- Abfrage

  Alt 23. Okt 2007, 15:15
Ja die gibt es !
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#8

Re: SQL- Abfrage

  Alt 23. Okt 2007, 15:35
Hm, dann sollte es auch keine Probleme geben, wenn die Spalte "Memo1" in "Tabelle" ist ... ... 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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: SQL- Abfrage

  Alt 23. Okt 2007, 15:43
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!
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 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