Exibir os campos de uma SQL no ListBox
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
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.
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
Curtidas 0
Respostas
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;
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
09/03/2005
Blz Luciano..
tb achei a seguinte solução.. utilizo BDE com Firebird.
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.
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
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.
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
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
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