Firedac MasterDetail com Join
01/05/2017
0
SELECT
PED.NUMEROPEDIDOCOMPRA,
PED.AUTOMATICO,
PED.CODIGOPRODUTO,
PRO.CODIGODOFORNECEDOR,
PRO.DESCRICAO,
PRO.UNIDADE,
PED.QUANTIDADE,
PED.RECEBIDO,
PED.VALORUNITARIO,
PED.VALORTOTAL,
PED.FINALIZADO,
PRO.LOCALFISICOESTOQUE
FROM PEDIDOCOMPRAITENS PED
LEFT JOIN PRODUTOS PRO ON PED.CODIGOPRODUTO=PRO.CODIGOPRODUTO
WHERE PED.NUMEROPEDIDOCOMPRA=:NUMEROPEDIDOCOMPRA
ORDER BY PED.NUMEROPEDIDOCOMPRA, PED.AUTOMATICO
já tentei alterar algumas propriedades, mas não consegui a solução.
Se alguém puder me ajudar eu agradeço.
Marcelo Belanga
Posts
03/05/2017
Roberto Wutke
Qualquer coisa tenta esclarecer um pouco mais pra nós, caso não tenha resolvido
03/05/2017
Marcelo Belanga
Tentei com o INNER JOIN e permanece o problema.
Para você entender melhor, estou usando esse SELECT para trazer os detalhes de um pedido. Uso a mesma instrução para fazer as alterações com cache updates com Firedac, usando append, post, applyupdates, etc. Não utilizo FDUpdateSQL, quando faço uma consulta de um pedido já cadastrado ele traz normalmente as descrições, mas quando incluo um novo pedido, ele apenas mostra a descrição do produto e a unidade quando fecho e abro novamente a query. A única forma que consegui fazer para que me mostre a descrição, foi criar um campo lookup e apontar para o campo, mas ai tenho que trabalhar com uma tabela de produtos com todos os registros carregados, o que não é muito viável.
Qual seria a forma correta? Se é que existe? Estou ainda em busca dessa solução.
Obrigado pelo interesse...
06/05/2017
Marcelo Belanga
Apenas para isso setei para False o ReadOnly de cada campo do JOIN.
Espero que seja a melhor solução, pelo menos não tive que manter outra tabelas com todos os produtos carregados para poder utilizar campos lookup e carregar a aplicação.
Abraços.
13/12/2020
Karl Fischer
Será que não existe nada padrão do Delphi/Firedac para retornar campos join, durante sua Edição/Inserção ?
Desejo usar dbgrid por exemplo para digitar código do produto e na coluna descrição já carregue automaticamente esta descrição.
Seria perfeito ter efeito Lookup sem ter que anexar um dataset...
JOIN se usarmos refresh ou reabrir tabela, carrega a descrição, por estar no join.
Mas pergunta é:
Como depomos ter preenchimento dos campos JOIN automaticamente sem ter que confirmar gravação?
Na verdade ao sair do campo Código de Produto, ser preenchido a descrição.
14/12/2020
Marcelo Belanga
Será que não existe nada padrão do Delphi/Firedac para retornar campos join, durante sua Edição/Inserção ?
Desejo usar dbgrid por exemplo para digitar código do produto e na coluna descrição já carregue automaticamente esta descrição.
Seria perfeito ter efeito Lookup sem ter que anexar um dataset...
JOIN se usarmos refresh ou reabrir tabela, carrega a descrição, por estar no join.
Mas pergunta é:
Como depomos ter preenchimento dos campos JOIN automaticamente sem ter que confirmar gravação?
Na verdade ao sair do campo Código de Produto, ser preenchido a descrição.
Karl,
Deixe os campos que estão no join com readonly := False e tragaos manualmente.
Foi assim que resolvi.
14/12/2020
Emerson Nascimento
14/12/2020
Marcelo Belanga
Talvez sim, talvez não.
Se a base de produtos for muito grande, pode causar alguma lentidão no carregamento.
Sem dúvida nenhuma, fazer um campo lookup é ótimo, mas tem que analisar o cenário.
Por esse motivo, prefiro informar manualmente os campos do join quando estiver incluindo ou alterando.
14/12/2020
Claudio Andrade
Abraço.
14/12/2020
Marcelo Belanga
Abraço.
Não é necessário não.
Depende muito cada forma de utilizar.
Clique aqui para fazer login e interagir na Comunidade :)