AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TParams und SQL Strings *heul*
Thema durchsuchen
Ansicht
Themen-Optionen

TParams und SQL Strings *heul*

Ein Thema von FlatG · begonnen am 6. Feb 2003 · letzter Beitrag vom 6. Feb 2003
Antwort Antwort
Seite 1 von 2  1 2      
FlatG

Registriert seit: 31. Jan 2003
21 Beiträge
 
Delphi 5 Professional
 
#1

TParams und SQL Strings *heul*

  Alt 6. Feb 2003, 10:36
Boah alter Schwede ich kriegs einfach net hin

Code:
procedure TFenster_Main.ComboBox1Change(Sender: TObject);
var
    stmtParams : TParams;
begin
    Query1.SQL.Clear;
    stmtParams := TParams.Create;
    stmtParams.CreateParam(ftString, 'Abfrage', ptInput   );
    stmtParams.ParamByName('Abfrage').AsString := 'Word';
    Query1.SQL.Add( ' SELECT * FROM T_Text_Typ WHERE (Name = '':Abfrage'') ');
    Query1.Prepare;
    Query1.ExecSQL();
    Query1.Open;

    Query1.Close;
end;
es kann eigentlich nur an den Semikolons liegen, dass sich die SQL Abfrage in nichts auflöst, weil der Parameteraufbau ist doch ok, oder etwa nicht?
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 6. Feb 2003, 10:38
Hallo,

folgend ein Ausschnitt aus der Delphi-Hilfe:

Code:
Query2.SQL.Clear;

Query2.SQL.Add('INSERT INTO LÄNDER (NAME, HAUPTSTADT, EINWOHNER)');
Query2.SQL.Add('VALUES (:Name, :Hautpstadt, :Einwohner)');

Query2.Params[0].AsString := 'Liechtenstein';
Query2.Params[1].AsString := 'Vaduz';
Query2.Params[2].AsInteger := 420000;
Query2.ExecSQL;
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: TParams und SQL Strings *heul*

  Alt 6. Feb 2003, 10:39
Einfach mal so ändern
Delphi-Quellcode:
procedure TFenster_Main.ComboBox1Change(Sender: TObject);
begin
    Query1.SQL.Clear;
    Query1.SQL.Add( ' SELECT * FROM T_Text_Typ WHERE (Name = '':Abfrage'') ');
    Query1.Params.ParamByName('Abfrage').AsString := 'Word';
    Query1.Prepare;
    Query1.ExecSQL();
    Query1.Open;

    Query1.Close;
end;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
FlatG

Registriert seit: 31. Jan 2003
21 Beiträge
 
Delphi 5 Professional
 
#4
  Alt 6. Feb 2003, 10:43
hmm, also ich bin nun wirklich niemand, der hier antanzt ohne sich vorher eingehendst mit der HIlfe beschäftigt zu haben und die Zeilen, die du mir da kopiert hast, KANN ICH NICHT MEHR SEHEN

ich bin newbie und kriegs net hin, so hats jedenfalls auch net hingehauen gehabt, als ichs versucht hab auf meine select anweisung umzubasteln

könntest du mir vielleicht mal schnell ein SELECT Beispiel daraus basteln?

und wo genau ist der fehler in meinem script da oben?
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5
  Alt 6. Feb 2003, 10:45
Hallo,

in Deinem Fall macht ExexSQL keinen Sinn, also weglassen. Sollte es mit dem Parameter nicht funtionieren, kannst Du noch folgendes ausprobieren:

Code:
 Query1.SQL.Clear;
 Query1.SQL.Add('SELECT * FROM T_Text_Typ');
 Query1.SQL.Add(Format('WHERE (Name="%s")', ['Word']));
 Query1.Prepare;
 Query1.Open;
 ...
 Query1.Close;
  Mit Zitat antworten Zitat
FlatG

Registriert seit: 31. Jan 2003
21 Beiträge
 
Delphi 5 Professional
 
#6

@Sakura

  Alt 6. Feb 2003, 10:47
eine Exception der Klasse EDatabaseError tritt auf:

Meldung: 'Query1: Parameter 'Abfrage' nicht gefunden'

Kleiner Nachtrag: Ob ich nun Open weglasse, den Parameterwert erst nach der SQL Anweisung zuordne (egal ob ich vorher paramcreate mache oder nicht) ich kriege immer eine Exception :/
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7
  Alt 6. Feb 2003, 10:57
Hallo,

generell gilt: Bei SELECT immer Query1.Open und bei Datenmanipulation wie INSERT, UPDATE immer Query1.ExecSQL.

Wie sieht es mit meinem Beispiel aus? Funtioniert dieser Weg?
  Mit Zitat antworten Zitat
FlatG

Registriert seit: 31. Jan 2003
21 Beiträge
 
Delphi 5 Professional
 
#8
  Alt 6. Feb 2003, 11:02
Leider auch nicht =(

Code:
    Query1.SQL.Clear;
    Query1.SQL.Add( ' SELECT * FROM T_Text_Typ');
    Query1.SQL.Add(Format('WHERE (Name="%s")', ['Word']));
    Query1.Prepare;
    Query1.Open;
    ShowMessage(Query1.FieldByName('Name').AsString);
    Query1.Close;
Diesmal gibts folgende Exception:

Im Projekt soundso ist eine Exception der Klasse EDBEngineError aufgetreten. Meldung: 'Allgemeiner SQL-Fehler [Microsoft][ODBC Microsoft Access Driver] 1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben. Prozess wurde angehalten etc.
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9
  Alt 6. Feb 2003, 11:03
Hallo,

wie sieht Dein Code jetzt aus, der die Fehlermeldung erzeugt?
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: TParams und SQL Strings *heul*

  Alt 6. Feb 2003, 11:04
Hi,

Delphi-Quellcode:
procedure TFenster_Main.ComboBox1Change(Sender: TObject);
begin
    Query1.SQL.Clear;
    Query1.SQL.Add( ' SELECT * FROM T_Text_Typ WHERE (Name = '':Abfrage'') ');
    Query1.Params.ParamByName('Abfrage').AsString := 'Word';
    Query1.Prepare;
    Query1.ExecSQL();
    Query1.Open;

    Query1.Close;
end;
Was sollen die besch*** ' in der Abfrage?? So muss das aussehen:

Delphi-Quellcode:
procedure TFenster_Main.ComboBox1Change(Sender: TObject);
begin
    Query1.SQL.Clear;
    Query1.SQL.Add('SELECT * FROM T_Text_Typ WHERE (Name=:Abfrage)');
   // Query1.Prepare;
    Query1.Params.ParamByName('Abfrage').AsString := 'Word';
    Query1.Open;
    Query1.Close;
end;
Wobei ich das Prepare versuchsweise mal weglassen würde. Der Parameter Abfrage ist Bestandteil des Statements Mit den ' wird es als stink normaler Text ausgewertet, d.h ein SQL wie folgt angenommen:

SELECT * FROM T_Text_Typ WHERE (Name=':Abfrage');
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:11 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