Einzelnen Beitrag anzeigen

H3llsing

Registriert seit: 12. Nov 2008
96 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: SQL Schleifen Problem

  Alt 28. Jun 2011, 09:49
Guten morgen =)

@p80286

Richtig sind solche 3 Tabellen.

@FredFesl Danke das kommt schon nah ran aber hat leider den effekt dass einige Kat_ids ausgelassen werden.

hier nochmal ein Beispiel von meinen Kategorien:
Tabelle DynKat
kat_id parent_id bezeichnung posi
2 0 Hauptkat 1
4 2 Unterkat1 1
5 2 Unterkat2 2
6 5 UnterUnterkat 1

PROBLEM: Prozedur sollte mir 4,5,6 ausgeben, gibt mir aber nur 5,6 aus!
Weil bevor die Query EOF ist erneut rekursiv aufgerufen wird. Sie sollte aber natürlich nachdem sie 4,5 notiert hat nochmal rekursiv mit 4 aufgerufen werden und falls dort Unterkategorien vorhanden sind, diese auch wieder in while not EOF aufrufen. Danach quasi zurückkehren und mit 5 das gleiche Spiel!

Ist das überhaupt so möglich ?


hier mein Code:
Delphi-Quellcode:
procedure TfrmArtikelkategorien.selectArtikel(kat_id:string; myKats: Tstringlist);
var
  subquery : string;
  query : Tadsquery;
  i: Integer;
begin
  query := Tadsquery.Create(self);
  try
    query.AdsConnection := con_dynkat;
    query.DatabaseName := 'con_dynkat';

    query.Close;
    query.SQL.Clear;
    query.SQL.Add('select kat_id from dyn_kat where parent_id ='+kat_id+' ');
    query.Open;

    if query.RecordCount > 0 then
    begin
       while not Query.eof do
       begin
         if myKats.IndexOf(Query['kat_id'])=-1 then
         begin
           myKats.add(Query['kat_id']);
           selectArtikel(Query['kat_id'], myKats);
         end;
       query.next;
       end;
    end;
  finally
    query.Free;
  end;

  for i := 0 to mykats.Count - 1 do
  begin
    showmessage(myKats[i]);
  end;
end;
  Mit Zitat antworten Zitat