Einzelnen Beitrag anzeigen

bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#7

Re: ADO, Datensatz suchen inkl. Fremdtabelle

  Alt 17. Sep 2007, 10:23
Hab mich jetzt mal damit gespielt und hab noch eine Frage:
Einfache Abfragen ohne Bezug auf Fremdtabellen funktionieren....auch die JOIN-SQL-Anweisung schluckt er brav!! Wenn ich aber das Feld Farbe abfrage (siehe Code unten), bekomme ich eine Exception, daß er das Feld 'Farbe' nicht findet. Feld 'Farbe' kommt aber in der Tabelle 'TESTTAB' vor... nur das in dem Feld 'Farbe' kein Text, sondern der Fremdschlüssel (Long_Integer im Access) auf die FREMDTAB enthalten ist.

Ausserdem will ich ja nicht den Fremdschlüssel zurückbekommen, sondern die tatsächlichen Werte, die dahinterstehen. Brauche ich dann 2 ADO-Query-Objekte??

Delphi-Quellcode:
procedure TfmMain.QueryDB;
var
  lBez : String;
  lZahl : String;
  lBool : String;
  lFarbe : String;
  lDat : String;
  lStr : String;

begin
  ADOQuery1.Active := false;
  ADOQuery1.SQL.Text := 'SELECT * FROM TESTTAB INNER JOIN FREMDTAB ON (FREMDTAB.ID = ' +
                        'TESTTAB.FARBE) WHERE ZAHL = ' + IntToStr(2);
  ADOQuery1.Active := true;

  if not ADOQuery1.IsEmpty then begin
    while not ADOQuery1.EOF do begin
      lBez := ADOQuery1.FieldByName('Bezeichnung').AsString;
      lZahl := ADOQuery1.FieldByName('Zahl').AsString;
      lBool := ADOQuery1.FieldByName('Bool').AsString;
      lDat := ADOQuery1.FieldByName('Datum').AsString;
      //Fehlermeldung: 'Feld 'Farbe' wurde nicht gefunden!
      lFarbe := ADOQuery1.FieldByName('Farbe').AsString;
      lStr := 'Bezeichnung: ' + lBez + ' Zahl: ' + lZahl + ' Bool: ' + lBool +
      ' Datum: ' + lDat + 'Farbe: ' + lFarbe;
      ShowMessage(lStr);
      ADOQuery1.Next;
    end;
  end;
  ADOQuery1.First;
  ADOQuery1.Active := false;
end;
  Mit Zitat antworten Zitat