Einzelnen Beitrag anzeigen

drschubi

Registriert seit: 18. Dez 2003
94 Beiträge
 
#1

Daten aus zweiter Table aufgrund Ergebnis aus erster Table

  Alt 22. Jul 2006, 17:47
Datenbank: Mysql • Version: 5 • Zugriff über: Zeos
Hallo,

ich hoffe die Überschrift verwirrt nicht allzu sehr.

Ich hole aus der Tabelle aa_task die nicht erledigten Aufgaben heraus. Aufgrund der hier ermittelten shop_nr möchte ich den dazugehörigen Namen aus dem Feld shop_name aus der Tabelle aa-shopdaten holen.
Das funktioniert aber nicht.


Dies funktioniert normal
Delphi-Quellcode:
procedure TForm1.list_task;
begin
  Query_ContactCard.SQL.Text := 'Select * from `aa_tasks` where `taskstate` <> ''Erledigt'' order by `shopnr` DESC;'; Query_ContactCard.Open;
  Query_ContactCard.FieldByName('id').AsString;
  Lv_task.Items.Clear;
  while not Query_Contactcard.Eof do
    begin
      LI := lv_task.Items.Add;
      LI.Caption := '';
      LI.SubItems.Add(Query_ContactCard.FieldByName('done').AsString);
      LI.SubItems.Add(Query_ContactCard.FieldByName('shopnr').AsString);
      LI.SubItems.Add(Query_ContactCard.FieldByName('task').AsString);
      Query_ContactCard.Next;
    end;
end;
Hier versuche ich das oben beschriebene, es kommt aber ein Fehler, weil das Feld "shop_name" nicht gefunden wurde, das Feld ist aber in der Tabelle aa_shopdaten vorhanden.

Ich hole die shopnr in die Variable TmpStr anhand derer ich dann den shopnamen holen will. Wo ist mein Fehler?
Delphi-Quellcode:
procedure TForm1.BtnReadTasksClick(Sender: TObject);
var
  TmpStr:string;
begin
  Query_ContactCard.SQL.Text := 'Select * from `aa_tasks` where `taskstate` <> ''Erledigt'' order by `shopnr` DESC;'; //IN
  Query_ContactCard.Open;
  Query_ContactCard.FieldByName('id').AsString;
  Lv_task.Items.Clear;

  while not Query_Contactcard.Eof do
    begin
      TmpStr:='';
      LI := lv_task.Items.Add;
      LI.Caption := '';
      LI.SubItems.Add('');
      LI.SubItems.Add(Query_ContactCard.FieldByName('shopnr').AsString);
      tmpstr:=Query_ContactCard.FieldByName('shopnr').AsString;
     // Showmessage(tmpstr);
      LI.SubItems.Add(Query_ContactCard.FieldByName('shop_name').AsString);
      Query_ContactCard.SQL.Text := 'Select * from `aa_tasks` where `taskstate` <> ''Erledigt'' order by `shopnr` DESC;';
      Query_ContactCard.Open;
      LI.SubItems.Add(Query_ContactCard.FieldByName('task').AsString);
      Query_ContactCard.SQL.Text := 'Select * from `aa_shopdaten` where `shop_name` = '+ TmpStr +';';
      Query_ContactCard.Open;
      Query_ContactCard.Next;
    end;
end;
Gruß René
  Mit Zitat antworten Zitat