Thema: Delphi SQL und ''

Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#3

Re: SQL und ''

  Alt 12. Apr 2004, 19:00
Problem 1:
Warum schreibst du diese #34 vor und nach den Splatennamen?
Das kann dazu führen, das du sie auch wieder genauso schreiben musst, wenn du über irgendwelche Mid-ware (ADO, ODBC,...) auf die Daten zugreifen willst.

Der View sollte also so aussehen:
SQL-Code:
SELECT t1.ID_Bremse
      ,t1.Typ
      ,t1.sid_FabrikatE
      ,t1.sid_Spannung
      ,t2.id_Fabrikat
      ,t2.Fabrikat
      ,t3.id_Spannung
      ,t3.Spannung
FROM tbl_Bremse t1
       
LEFT OUTER JOIN tbl_Fabrikat t2
  ON (t1.sid_Fabrikat = t2.id_Fabrikat)
       
LEFT OUTER JOIN tbl_Spannung t3
  ON (t1.sid_Spannung = t3.id_Spannung)
Standard-SQL-Problem Nummer 0815
Ein Vergleich mit NULL ergibt weder TRUE noch FALSE, sondern NULL
(1 = Null) -> NULL !!!
Der einzige Operator, der da ein TRUE oder FALSE auspuckt ist "is"

(NULL is NULL) -> TRUE
(NULL is not NULL) -> FALSE

Auch wenn es irgendwie eklig aussieht , vielleicht funktioniert es ja so:
Delphi-Quellcode:
With frmDataMod.SQLDetailQuery Do
Begin
  SQL.Text :=
    'SELECT *' + #10 +
    'FROM View_Bremse' + #10 +
    'WHERE (:i_Fabrikat is NULL OR' + #10 +
    ' Upper(Fabrikat) = :i_Fabrikat) AND' + #10 +
    ' (:i_Typ is NULL OR' + #10 +
    ' Upper(Typ) = :i_Typ) AND' + #10 +
    ' (:i_Spannung is NULL OR' + #10 +
    ' Upper(Spannung) = :i_Spannung)';
 // Parsen des Statements um Query Parameter zu finden...
  Prepared := True;
  // Werte an Query Parameter übergeben...
  With Parameters Do
  Begin
    ParamByName('i_Fabrikat').Value := Edit1.Text;
    ParamByName('i_Typ').Value := Edit2.Text;
    ParamByName('i_Spannung').Value := Edit3.Text;
  End;
  Open;
End;
  Mit Zitat antworten Zitat