[firebase-br] DELPHI 7 X FIREBIRD 1.5 X DBEXPRESS - off topic

Rodrigo - Alma Informática Ltda desenv28 em almainformatica.com.br
Seg Abr 18 10:33:45 -03 2005


Amigos,

Estou desenvolvendo uma rotina no delphi para pegar automaticamente pra mim os nomes dos índice e jogar num radiogrup num formulário para que o usuário selecione por qual ordenação ele deseja fazer, desde pesquisa ate relatórios.

Só que chega num determinado ponto da rotina a mesma da o seguinte erro :

    tbquery : índice de campo fora de faixa

o código e este abaixo :


procedure TForm1.FormShow(Sender: TObject);
var
  Counter, AtualFld, CountFld : Integer;
  FldIndex                      : String;
begin

  with tbQuery do
  begin

    if (IndexNames <> Nil) and (IndexNames.Count > 0) then
    begin
       CountFld := IndexNames.Count;
    end
    else
    begin
       IndexDefs.Update;
       CountFld := Min(4, IndexDefs.Count);
    end;

    TypeIndex := IndexFieldNames <> '';

    SaveBookMark := GetBookMark;

    if TypeIndex then
       OldIndex := IndexFieldNames
    else
       OldIndex := IndexName;

     for Counter := 0 to CountFld-1 do
     begin

     tbquery.Active := false;

       if (IndexNames <> Nil) and (IndexNames.Count > 0) then
          IndexName := IndexNames[Counter]
       else
          IndexName := IndexDefs[Counter].Name;

        { Get Field's Index }
        if Counter < 9 then
           FldIndex := '&' + IntToStr(Counter+1) + '. '
        else
           FldIndex := '&' +  chr(90 + (9 - Counter)) + '. ';

         AtualFld := 0;


        tbquery.Active := true;

          if ((IndexFields[AtualFld].FieldName = 'FAZENDA') and
              (tbQuery.Name <> 'TBFAZENDA') and (tbQuery.Name <> 'TBCRIADOR')) or
             (IndexFields[AtualFld].FieldName = 'FAZENDADOADORA') then
            Inc(AtualFld);


        FldIndex := FldIndex + IndexFields[AtualFld].DisplayName; // DisplayLabel;

        rgOrder.Items.Add(FldIndex);

     end;

     rgOrder.ItemIndex := 0;

     tbquery.Active := false;

     if TypeIndex then
       IndexFieldNames := OldIndex
     else
       IndexName := OldIndex;

     { Abre por Default na Segunda Chave - Geralmente de Descricao }
     if CountFld > 1 then
     begin
       rgOrder.ItemIndex := 1;
       if IndexNames <> nil then
          IndexName := IndexNames[1]
       else
          IndexName := IndexDefs[1].Name;
     end;

     tbquery.Active := true;

       MasterSource := MasterSource;
  end;

end;


obs : estou utilizando componentes dbexpress

Se alguém puder me ajudar ficarei grato.

Abraço a todos,


Rodrigo 


Mais detalhes sobre a lista de discussão lista