AJUDA COM QUERY ORACLE / FORM

CAIOHSZA 12/09/2016 15:58:32
#466789
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,.
MARCELO.TREZE 12/09/2016 16:18:14
#466791
veja ashkatchup

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.



CAIOHSZA 12/09/2016 16:23:52
#466792
Prezado Marcelo, cheguei a fazer isso, mas quando atualizado o grid antes de passar os parâmetros para o Crystal eu perco a seleção do usuário.

Alguma sugestão?
ASHKATCHUP 12/09/2016 16:42:19
#466793
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.
MARCELO.TREZE 12/09/2016 17:31:44
#466800
ainda tenho a seguinte duvida, se você agrupa por fornecedor, porque não pegar direto na tabela todos recibos deste fornecedor, ao invés de selecionar um por um?
CAIOHSZA 13/09/2016 09:00:46
#466833
Não entendi sua dúvida Marcelo.

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.
MARCELO.TREZE 13/09/2016 11:11:47
#466838
tem como vc postar um print da sua tela, com as seleções feitas
ASHKATCHUP 13/09/2016 11:38:23
#466842
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
CAIOHSZA 14/09/2016 09:16:59
#466901
Segue o print da tela com as seleções.
CAIOHSZA 14/09/2016 14:01:13
#466914
Galera consegui resolver melhorando a query!

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...)
Página 2 de 3 [22 registro(s)]
Tópico encerrado , respostas não são mais permitidas