Mais duvidas sobre clientdataset
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
Curtidas 0
Respostas
Gpfranca
20/01/2006
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.
GOSTEI 0
Mrmarcelojr
20/01/2006
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
GOSTEI 0
Aroldo Zanela
20/01/2006
Colega,
Coloque a DDL (Estrutura das tabelas) para um exemplo mais pragmático. A princípio, basta utilizar UNION ALL. Exemplo hipotético:
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
GOSTEI 0
Mrmarcelojr
20/01/2006
[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:
[/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.
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
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.
GOSTEI 0
Aroldo Zanela
20/01/2006
Colega,
Entendi. Bem, desta forma eu acho que seria mais simples popular um CDS em nível de código. Exemplo:
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;
GOSTEI 0
Thomaz_prg
20/01/2006
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.
GOSTEI 0