Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sql und where ? (https://www.delphipraxis.net/24044-sql-und-where.html)

Zephit 14. Jun 2004 17:19


Sql und where ?
 
Hallo,

Ich habe anddauernt die fehlermeldung kritierien stimmen nicht überein dabei habe ich das eigentlich schon so oft gemacht!

Beide felder in der where überprüfung sind in der Datenbank integer allerdings kann ich ohne inttostr garnicht erst ins programm weil da schon gesagt wird inkompatible typen string und int!

Nutzerverwaltung.getstat.Close;
Nutzerverwaltung.getstat.SQL.Clear;
Nutzerverwaltung.getstat.SQL.Text:='Select * FROM USER_STAT WHERE user_id='+inttostr(Useridvar)+'' ;
Nutzerverwaltung.getstat.open;

Hat vieleicht irgendwehr eine idee


MFG und danke

Meflin 14. Jun 2004 17:24

Re: Sql und where ?
 
also wenn ich das richtig verstehe sind die typen in der datenbank integers und deine variable da auch und du wandelst den integer in nen string um um ihn mit nem integer zu vergleichen :gruebel: das erscheint mir doch recht sonderbar.

Zephit 14. Jun 2004 17:27

Re: Sql und where ?
 
Ja mir auch allerding wenn ich den integerwert nicht umwandel kommt die fehlermeldung inkompatible typen string und integer!

Meflin 14. Jun 2004 17:30

Re: Sql und where ?
 
also erlichgeagt hab ich meine mysql erfahrung ausschließlich mit php gemacht, also kann ich dir da nicht wirklich weiterhelfen. vielleichts hängts ja auch irgendwo im code davor mit der variable??

shmia 14. Jun 2004 17:45

Re: Sql und where ?
 
2 Varianten:
Delphi-Quellcode:
// mit Parameter (besser)
Nutzerverwaltung.getstat.SQL.Text:='Select * FROM USER_STAT WHERE user_id=:user_id';
Nutzerverwaltung.getstat.Params.ParamValues['user_id'] := Useridvar;

// ohne Parameter mit QuotedStr
Nutzerverwaltung.getstat.SQL.Text:='Select * FROM USER_STAT WHERE user_id='+QuotedStr(Inttostr(Useridvar));
Nutzerverwaltung.getstat.SQL.Clear; ist in beiden Fällen überflüssig.

Robert_G 14. Jun 2004 17:48

Re: Sql und where ?
 
Zitat:

Beide felder in der where überprüfung sind in der Datenbank integer allerdings kann ich ohne inttostr garnicht erst ins programm weil da schon gesagt wird inkompatible typen string und int!
  • 1. Du hast nur ein Feld in der Where clause
  • 2. Gewöhne dir diese Stringbasteleien am besten gar nicht erst an.
    Variable Werte in einem SQL Statement gehören halt auch in eine Variable ;)
    Delphi-Quellcode:
    With ADOQuery Do
    Begin
      SQL.Text :=
        'SELECT *' + #10 +
        'FROM  USER_STAT' + #10 +
        'WHERE User_ID = :i_UserIDvar';
      // Parse Statement um Variablen zu erkennen
      Prepared := True;
      // Parameterzuweisung
      With Parameters Do
        ParamByName('i_UserIDvar').Value := UserIDvar;
      End;
      // Ausführen
      Open;
    End;

Zitat:

also wenn ich das richtig verstehe sind die typen in der datenbank integers und deine variable da auch und du wandelst den integer in nen string um um ihn mit nem integer zu vergleichen das erscheint mir doch recht sonderbar.
Delphi-Quellcode:
UserIDvar:= 1;
StringVariable := 'Select * FROM USER_STAT WHERE user_id = '+IntToStr(UserIDvar) ;
Vom Prinzip her ist daran nichts Falsches.
Delphi-Quellcode:
StringVariable := 'Select * FROM USER_STAT WHERE user_id= 1' ;
edit: Shmia war wieder mal schneller. ;)

phXql 14. Jun 2004 18:00

Re: Sql und where ?
 
seit wann muss man bei SQL bei integer-vergleichen ein Quoted-Str machen?

Zephit 14. Jun 2004 18:01

Re: Sql und where ?
 
:-D :-D Danke Funktioniert


:-D :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 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