AJUDA COM QUERY ORACLE / FORM
Citação::
eu acho que pegar o numero da linha se baseando na quantidade de registro não é viável, o correto e pegar o numero contido na celula.
RECIBO_PAGAMENTO_BOR_LOTE é uma view construÃda com a query acima.
Mas qual celula poderia utilizar? Não tenho nenhuma pk, estou trabalhando com groupy by,.
Citação:Meu problema é que quando alguém cadastra um tÃtulo novo e alguém está gerando recibos, e os dados já estão no grid, o rownum fica furado e outro recibo diferente do selecionado é exibido, afinal o número de linha está correndo mas a informação já é outra.
pelo que entendi ele preenche o datagridview, com uma sequencia que vem do banco de dados, porém se o datagridview ja estiver preenchido e outro usuário inserir um novo dado este não será contabilizado, pois não aparece.
Acredito que o sistema seja multiusuário, então o ideal é que antes de enviar o dado para o crystal ele preencha novamente o datagridview, coisa instatanea, fora isso ele poderia pegar os dados de impressão direto da tabela porém o banco de dados deverá ser aberto da forma correta ou mesmo deverá abrir e fechar sempre a conexao para atualizar este dados, o erro não é na query.
Alguma sugestão?
Citação:Acredito que o sistema seja multiusuário, então o ideal é que antes de enviar o dado para o crystal ele preencha novamente o datagridview, coisa instatanea, fora isso ele poderia pegar os dados de impressão direto da tabela porém o banco de dados deverá ser aberto da forma correta ou mesmo deverá abrir e fechar sempre a conexao para atualizar este dados, o erro não é na query
é exatamente isso, Marcelo.
O Caio faz a consulta no banco de dados e joga o resultado em um grid.
Esse grid é apresentado ao usuário, que pode selecionar alguns registros para imprimir.
Porém, como a consulta envolve GroupBy, não há como usar uma chave primária para guardar quais registros o usuário selecionou. Então, o Caio está usando o RowNum, que é a posição sequencial da linha dentro do resultado da SQL.
Então, se o usuário marca a linha 1, a 4 e a 10, o Caio guarda esses números em uma variável.
O problema ocorre quando outro usuário (usuário B). adiciona algo no banco de dados. Assim, quando o Crystal for realizar a consulta, o resultado não será o mesmo que aquele que fora apresentado no Grid para o usuário A.
Assim, as linhas 1, 4 e 10 que o usuário A tinha selecionado no grid não correspondem mais à s linhas 1, 4 e 10 da consulta que o Crystal extrairá do banco de dados, pois os dados do grid estão desatualizados se comparados à queles do banco de dados.
Eu sugeri a criação de uma tabela temporária para guardar o resultado do grid, evitando, assim, que novos dados fossem adicionados por outros usuários.
Porém, o Caio disse que não quer usar essa solução.
Eu agrupo os tÃtulos por fornecedores, tenho isso pronto em uma view que abastece meu grid.
Tentei trabalhar com GLOBAL TEMPORARY TABLE do Oracle mas não tive sucesso!
O Crystal Reports é uma nova sessão para Oracle e não enxerga as informações inseridas pela conexão do .form gera recibos.
Citação:O Crystal Reports é uma nova sessão para Oracle e não enxerga as informações inseridas pela conexão do .form gera recibos.
é... a GTT são vinculadas a sessão (https://oracle-base.com/articles/misc/temporary-tables).
Ainda acho que o lance é criar uma tabela temporária só pra essa consulta. Ai tu da um Drop quando o cara clica em imprimir, pega os dados do grid (do dataset) e joga nela, mandando o Crystal usar ela como base para a impressão
São três union all que utilizo para compor a query, na query que agrupo os tÃtulos peguei o MAX do campo (ID).
Como são querys com três abelas, identifiquei o ID de cada uma.
Ex:
Select * from (
Select [ô]A[ô] || ID from Tabela A
UNION ALL
Select [ô]B[ô] || ID from Tabela B
UNION ALL
Select MAX(ID) from Tabela C GROUP BY ID...)