Fórum Mais duvidas sobre clientdataset #310073

20/01/2006

0

Seguinte.....tenho uma tabela de cadastro de serviços, e outra de produtos. Estou fazendo uma tela de orçamento, tenho que chamar as duas tabelas, ateh ai blz. Criei um campo Lookup no CDS para mostrar o nome dos produtos. Mas tenho que mostrar a descrição do serviço tbm, deveria criar outro campo lookup para pegar a descrição, mas dai em minha grid apareceria 2 colunas para descrição. Como faço para mostrar os dois campos em apenas uma coluna?


Mrmarcelojr

Mrmarcelojr

Responder

Posts

21/01/2006

Gpfranca

Seguinte.....tenho uma tabela de cadastro de serviços, e outra de produtos. Estou fazendo uma tela de orçamento, tenho que chamar as duas tabelas, ateh ai blz. Criei um campo Lookup no CDS para mostrar o nome dos produtos. Mas tenho que mostrar a descrição do serviço tbm, deveria criar outro campo lookup para pegar a descrição, mas dai em minha grid apareceria 2 colunas para descrição. Como faço para mostrar os dois campos em apenas uma coluna?


Pelo que eu entendi um INNER JOIN na sua instrução resolverá seu problema.


Responder

Gostei + 0

23/01/2006

Mrmarcelojr

Pelo que eu entendi um INNER JOIN na sua instrução resolverá seu problema.


Resolveria, porém, as tabelas de Serviço e de Produtos estão em arquivos separados, então eu não consigui fazer uma instrução chamando bases diferentes, por isso a nescessidade de se utilizar campo lookup do ClientDataSet.

Então criei dois camposo Lookup, Descr1(que traz a descrição do produto) e descr2(que traz a descrição do serviço.

Gostaria de mesclar estas 2 colunas, como se fosse um COALESCE.

ps.: Teoricamente não adianta usar nenhuma instrução SQL, deverá ser uma função própria do CDS.....Teoricamente, pois se existira alguma forma de se realizar uma consulta em arquivos diferentes...pode manda bala.........Utilizo FB


Responder

Gostei + 0

23/01/2006

Aroldo Zanela

Colega,

Coloque a DDL (Estrutura das tabelas) para um exemplo mais pragmático. A princípio, basta utilizar UNION ALL. Exemplo hipotético:

SELECT PRO_ID AS CODIGO, PRO_DESCRICAO AS DESCRICAO
FROM PRODUTOS
UNION ALL
SELECT SER_ID AS CODIGO, SER_DESCRICAO AS DESCRICAO
FROM SERVICOES



Responder

Gostei + 0

23/01/2006

Mrmarcelojr

[quote:d802b8397a=´Aroldo Zanela´]Colega,

Coloque a DDL (Estrutura das tabelas) para um exemplo mais pragmático. A princípio, basta utilizar UNION ALL. Exemplo hipotético:

SELECT PRO_ID AS CODIGO, PRO_DESCRICAO AS DESCRICAO
FROM PRODUTOS
UNION ALL
SELECT SER_ID AS CODIGO, SER_DESCRICAO AS DESCRICAO
FROM SERVICOES
[/quote:d802b8397a]

Muito obrigado pela ajuda, mas as tabelas estão em arquivos distintos. A tabela de produtos (PROD) esta em 1.FDB, e a de serviços (SERV) está em mdb.FDB. Então eu não consigo fazer isto com uma consulta SQL, pois estou utilizando 2 conexões, eu DataSet está setado para SQLConn1, e o otro em SQLConn2. Por isso a nescessidade de utilizar as funções do próprio CDS.


Responder

Gostei + 0

23/01/2006

Aroldo Zanela

Colega,

Entendi. Bem, desta forma eu acho que seria mais simples popular um CDS em nível de código. Exemplo:
while not PRODUTOS.eof do
begin
  cds.AppendRecord([PRODUTOSpro_id.Value, PRODUTOSpro_descricao.value]);
  PRODUTOS.next;
end;

while not SERVICOS.eof do
begin
  cds.AppendRecord([SERVICOSser_id.Value, SERVICOSser_descricao.value]);
  SERVICOS.next;
end;



Responder

Gostei + 0

23/01/2006

Thomaz_prg

Ou faça assim, no CDS que você quer que apareça o campo, crie um campo do tipo InternalCalc (através do Fields Editor), e passe o valor pra ee campo, no evento OnCalcFields.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar