Exibir os campos de uma SQL no ListBox

Delphi

09/03/2005

Olá pessoal
já dei uma boa pesquisada e ainda ñ consegui resolver meu problema.
tenho um programa que monta as SQL dinamicamente, por exemplo:
Qry = TQuery

with Qry do
  begin
    Close;
    SQL.Clear;
    SQL.Add(´SELECT CLIENTES.*,          ´);
    SQL.Add(´       CLIENTES_ENDEREÇO.*, ´);
    SQL.Add(´       VENDAS.*,            ´);
    SQL.Add(´       PRODUTOS.*           ´);
    SQL.Add(´FROM VENDAS                 ´);
    SQL.Add(´     LEFT CLIENTES          ´);
    SQL.Add(´     ON (VENDAS.CD_CLIENTE = CLIENTES.CD_CLIENTE)´);
    ... // E assim por diante
    ... // em alguns casos existem cláusulas WHERE
    Open;
end;

o que estou precisando é que independente da Query trazer ou não resultados, os campos (Tabela.Campo) sejam exibidos num ListBox.
Então como estou selecionando no caso acima CLIENTES.* listar no ListBox:
CLIENTES.CD_CLIENTE
CLIENTES.NOME_CLIENTE
CLIENTES.DATA_INCLUSAO
VENDAS.CD_CLIENTE
.... // e assim por diante.. a tabela deve ser exibida porque por exemplo o campo CD_CLIENTE pode estar presente em varias tabelas da Sql.

agradecido
Diogo.


Diogoalles

Diogoalles

Curtidas 0

Respostas

Lucianopimenta

Lucianopimenta

09/03/2005

Se vc utiliza-se dbExpress basta fazer assim:

SQLConnection1.GetFieldNames(´NOMETABELA´, ListBox1.Items);

Mas nesse caso deve usar o seguinte:

var
i: integer;
begin
for i := 0 to Query.Fields.Count - 1 do
ListBox1.Items.Add(Query.Fields[i].DisplayName);
end;


GOSTEI 0
Diogoalles

Diogoalles

09/03/2005

Blz Luciano..
tb achei a seguinte solução.. utilizo BDE com Firebird.

for i := 0 to QCampos.Fields.Count - 1 do
begin
   ListBoxCampos.Items.Add(QCampos.Fields[i].FieldName);
end;


mas ainda está faltando saber qual a tabela de cada campo... pois como ja coloquei acima eu tenho por exemplo o campo CD_CLIENTE presente em varias tabelas que são selecionadas na SQL... sua nomencaltura fica assim:
CD_CLIENTES
CD_CLIENTES1
CD_CLIENTES2
... e assim por diante...

precisaria que ficasse com o nome da tabela..
assim:
CLIENTES.CD_CLIENTES
VENDAS.CD_CLIENTES1
RECIBOS.CD_CLIENTES2
...etc...

por isso preciso tb do nome da tabela na frente.. até o momento não consegui .. agradeço a todos.

Diogo.


GOSTEI 0
Lucianopimenta

Lucianopimenta

09/03/2005

Seu caso é bem especifico, entaum uma dica seria na instrução SQL ´renomear´ o campo, por exemplo:

select CLIENTE.COD_CLIENTE, CLIENTE.NOME_CLIENTE, VENDAS.COD_CLIENTE as COD_CLIENTE_VENDAS, TABELA.COD_CLIENTE as COD_CLIENTE_TABELA

assim irá aparecer o nome COD_CLIENTE_VENDAS no lugar de COD_CLIENTE1, por exemplo.

É uma alternativa.


GOSTEI 0
Diogoalles

Diogoalles

09/03/2005

Certo Luciano,
Sera uma alternativa pra distinguir os campos, mas mesmo assim precisarei saber o nome da tabela ao qual se refere o campo
agradecido pela ajuda e se tiverem alguma dica estarei no aguardo

abraço
Diogo


GOSTEI 0
POSTAR