Einzelnen Beitrag anzeigen

c4rtm4n

Registriert seit: 28. Jan 2009
Ort: Oldenburg (Oldenburg)
26 Beiträge
 
Delphi 2009 Enterprise
 
#34

AW: SQL error : type mismatch

  Alt 13. Jun 2010, 18:07
Hi,

hab mir deine SQL-Query mal angeguckt...

Sieht an sich ganz richtig aus...
Du kannst auch gerne Query1.SQL.Text verwenden. Query1.SQL ist ja auch nur eine TStringList und mit der kannst du umgehen, wie mit jeder anderen StringList auch.

Ich vermute den Fehler an einer anderen Stelle als bei WHERE (Inventarnummern.Inventarnummer = "'+(nummer)+'") .

Welchen Typ hat denn Inventarnummern.Geratetyp? Ist das Feld auch ein Integer?

Probiers mal so:

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var nummer: string;
begin
 nummer:=Edit1.Text;
 Query1.Active:=false;

 Query1.SQL.Text := 'SELECT ' +
                    ' inv.Inventarnummer, ' +
                    ' typ.Typ, ' +
                    ' raum.Raumnummer, ' +
                    ' raum.Raumbezeichnung, ' +
                    ' det.Modell, ' +
                    ' det.Baujahr, ' +
                    ' Inv.Status ' +
                    'FROM Inventarnummern inv ' +
                    ' INNER JOIN Raume raum ON raum.id = inv.ID_Raum ' +
                    ' INNER JOIN Geratetyp typ ON typ.id = inv.Geratetyp ' +
                    ' LEFT JOIN Details det ON det.id = inv.ID_Details ' +
                    'WHERE inv.Inventarnummer = ' + QuotedStr(nummer);

 Query1.Active:=true;
end;
Kurze Anmerkung:
- Die Aufteilung der einzelnen Felder in einzelne Zeilen dienen zum einen der Übersichtlichkeit, als auch dass sie dem Problem mit den 255 Zeichen in der Text-Eigenschaft vorbeugt.

- Die JOINS helfen dir beim einfachen Zusammenführen der Tabellen. Ein INNER JOIN setzt vorraus, das ein entsprechender Datensatz (wie in dem ON-Teil definiert) vorhanden ist. Wenn ein Feld kein Mussfeld ist, dann bietet sich hier ein LEFT JOIN (s. Details) an.

- Die Funktion QuotedStr(s: String) erzeugt einen Pascal String, in dem auch ' (Hochkomma) vorkommen dürfen. Diese werden von der Funktion durch '' (doppeltes Hochkomma) ersetzt. Dann brauchst du dir um die Formatierung des Strings keine Sorgen mehr machen.

OK, ich gebs ja zu, die Anmerkung ist doch etwas länger geworden
Carsten
  Mit Zitat antworten Zitat