AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Parameterübergabe
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Parameterübergabe

Ein Thema von Luciano · begonnen am 27. Jun 2005 · letzter Beitrag vom 29. Jun 2005
 
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: SQL Parameterübergabe

  Alt 28. Jun 2005, 06:53
Zitat von Luciano:
(SN ist ein Integerwert)
Delphi-Quellcode:
  if RadioButton1.Checked = True then
    begin
      with Q_SUCHE do
        begin
          Close;
          SQL.Clear;
          SQL.Add(' SELECT * FROM CKIII ');
          SQL.Add(' WHERE SN LIKE :v_SUCHE ');
          Prepared := True;
          Parameters.ParamByName('v_SUCHE').Value := Edit1.Text+'%';
          Open;
        end;
    end;
Die Fehlermeldung lautet " Die Anwendung verwendet für den aktuellen Vorgang einen Wert vom falschen Typ "
Es gibt 2 Dinge die zu Deinem Problem führen.
  1. der SQL Befehl LIKE funktioniert nur mit Strings. Das steht in jedem SQL Buch. Dieser Operand vergleicht Zeichenfolgen mit Wildcards (%).
  2. Wenn SN in der Datenbank ein String ist, dann sollte der Parameter auch auf String eingestellt werden.
    Delphi-Quellcode:
    ...
      // Beispiel mit Tabelle CLients aus DBDEMOS (TQuery aus BDE Pallette verwendet)
      with query1 do
      begin
        sql.Text := 'select * from clients where last_name like :last_name;';

        Params.ParamByName('last_name').ParamType := ptInput;

        // Params.ParamByName('last_name').DataType := ftString; // <-- wichtig !
        // Params.ParamByName('last_name').Value := Edit1.Text + '%';

        // oder besser
        // Mit AsString zuweisen um DataType auf ftString automatisch zu setzen
        Params.ParamByName('last_name').AsString := Edit1.Text + '%';

        Open;
      end;
    ...
    wenn SN in der Datenbank Integer ist könnte man das so lösen:
    Delphi-Quellcode:
    ...
      if RadioButton1.Checked = True then
        begin
          with Q_SUCHE do
            begin
              Close;
              SQL.Clear;
              SQL.Add(' SELECT * FROM CKIII ');
              SQL.Add(' WHERE SN > :v_SUCHE '); // kein LIKE, sondern =, >, =>, < und <=
              Prepared := True;
              Parameters.ParamByName('v_SUCHE').ParamType := ptInput;
              Parameters.ParamByName('v_SUCHE').DataType := ftInteger;
              Parameters.ParamByName('v_SUCHE').Value := StrToInt(Edit1.Text);

              Parameters.ParamByName('v_SUCHE').AsInteger := StrToInt(Edit1.Text);
              Open;
            end;
        end;
    ...
Zitat von Luciano:
Wie kann das sein? Ich glaube ich rate meinem Chef wieder zu Delphi 6!!!
Wieso das ? IN Delphi 6 hast Du das gleiche Problem.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
 


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