Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wilke1

com QRDBTEXT

Recommended Posts

ola pessoal eo seguinte estou utilizando o evento onprint do Qrbdtextpara selecionar o tipo de divisao de cada promotor de venda, mas não estou conseguindoespecificar a divisao correta de cada promotor. estou fazendo assimif Qrydivfor.RecordCount <= 1 then begin VALUE:= Qrydivfor.FieldByName('ds_divisao').AsString; END; if Qrydivfor.RecordCount > 1 then begin value:='Todas Divisões'; end; if Qrydivfor.RecordCount = 1 then begin value:= Qrydivfor.FieldByName('ds_divisao').AsString; end;quando ele e menor que um ele traz certo, quando e maior que um ele traz o texto 'todas divisão' até aqui esta certo. só que qunado eu seleciono um fornecedor que tem mas de uma divisao e seleciono somente um divisao, ele traz o texto ' Todas divisão' sendo que ele tinha que trazer somente aquela divisao. voces entenderam?desde ja agradeço pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou rodar passo-a-passo e ver o que ele acusa no RecordCount ? Deve de estar como maior que 1.

Resolvidoeu passei por parametros o codigo do promotor ,passando para Query do Qrdbtexte ficou okvaleu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas se clicar sobre ele, no caso selecionar, e pressionar DELETE ele não excluí ? O que acontece ? Alguma mensagem de erro ?

sim ele dar uma mensagem de erro '' Selection contains a component,Qrband2,introducend in ancestor and cannot be deleted'', essa e mensagem quando eu tento excluir

Compartilhar este post


Link para o post
Compartilhar em outros sites

No momento não sei o que poderia ser, não consigo simular este erro seu aqui... :-(

marcio eu tó achando que esse relatório deve ter sido hedado, será que não e isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei mesmo...

aproveitando esse topgostaria de tirar uma duvida sobre essa select , e que eu quero totalizar quantidade de homes e mulheres e porcentagem ,desse total tem como?SELECT COUNT(1)AS MULHER,DECODE(TP.FL_SEXO,'M','HOMEM')FROM TB_PESSOA TPWHERE TP.FL_SEXO='M'and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365))>='1'and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365))<='18'--and tp.cd_estado_civil='S'GROUP BY TP.FL_SEXOUNIONSELECT COUNT(1)as Mulher,DECODE(TP.FL_SEXO,'F','MULHER')FROM TB_PESSOA TPWHERE TP.FL_SEXO='F'and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365))>='1'and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365))<='18'--and tp.cd_estado_civil='S'GROUP BY TP.FL_SEXO

Compartilhar este post


Link para o post
Compartilhar em outros sites

O comando SQL poderia mudar um pouco para buscar as informações, e depois fazer pelo próprio quick o cálculo do percentual:

SELECT DISTINCT (SELECT COUNT(*)FROM TB_PESSOA TPWHERE not TP.FL_SEXO is null and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalPeriodo,(SELECT COUNT(*)FROM TB_PESSOA TPWHERE TP.FL_SEXO = 'M' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalHomem,(SELECT COUNT(*)FROM TB_PESSOA TPWHERE TP.FL_SEXO = 'F' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalMulherFROM TB_PESSOA TPGROUP BY TP.FL_SEXO

Vai voltar três colunas, sendo que precisa somente pegar a TotalPeriodo e calcular o percentual sobre TotalHomem e TotalMulher...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O comando SQL poderia mudar um pouco para buscar as informações, e depois fazer pelo próprio quick o cálculo do percentual:

SELECT DISTINCT (SELECT COUNT(*)FROM TB_PESSOA TPWHERE not TP.FL_SEXO is null and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalPeriodo,(SELECT COUNT(*)FROM TB_PESSOA TPWHERE TP.FL_SEXO = 'M' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalHomem,(SELECT COUNT(*)FROM TB_PESSOA TPWHERE TP.FL_SEXO = 'F' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalMulherFROM TB_PESSOA TPGROUP BY TP.FL_SEXO

Vai voltar três colunas, sendo que precisa somente pegar a TotalPeriodo e calcular o percentual sobre TotalHomem e TotalMulher...

MARCIO não funcionou, sera porque o banco e oracle

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual mensagem de erro ?Fiz um teste com um BD meu em SQLServer fazendo um SQL parecido e funcionou...

o erro ora-00933 sql comand not properly ended

Compartilhar este post


Link para o post
Compartilhar em outros sites

ORA-00933 o erro que acontece quando envia um SQL inválido, com a sintaxe errada, verifique os parênteses e tudo mais, para ver se tudo feche, rode cada sub-select separadamente para ver se funciona...

SELECT DISTINCT (SELECT COUNT(*)FROM TB_PESSOA TPWHERE not TP.FL_SEXO is null and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalPeriodo,(SELECT COUNT(*)FROM TB_PESSOA TPWHERE TP.FL_SEXO = 'M' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalHomem,(SELECT COUNT(*)FROM TB_PESSOA TPWHERE TP.FL_SEXO = 'F' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalMulherFROM TB_PESSOA TPGROUP BY TP.FL_SEXO

Compartilhar este post


Link para o post
Compartilhar em outros sites

ORA-00933 o erro que acontece quando envia um SQL inválido, com a sintaxe errada, verifique os parênteses e tudo mais, para ver se tudo feche, rode cada sub-select separadamente para ver se funciona...

SELECT DISTINCT (SELECT COUNT(*)FROM TB_PESSOA TPWHERE not TP.FL_SEXO is null and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalPeriodo,(SELECT COUNT(*)FROM TB_PESSOA TPWHERE TP.FL_SEXO = 'M' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalHomem,(SELECT COUNT(*)FROM TB_PESSOA TPWHERE TP.FL_SEXO = 'F' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalMulherFROM TB_PESSOA TPGROUP BY TP.FL_SEXO

eu fiz assim e deu certo marcioSELECT * FROM (SELECT COUNT(*)TotalFROM TB_PESSOA TPWHERE not TP.FL_SEXO is null and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18'), (SELECT COUNT(*)HomensFROM TB_PESSOA TPWHERE TP.FL_SEXO = 'M' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18'),(SELECT COUNT(*)MulheresFROM TB_PESSOA TPWHERE TP.FL_SEXO = 'F' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18')

Compartilhar este post


Link para o post
Compartilhar em outros sites

ORA-00933 o erro que acontece quando envia um SQL inválido, com a sintaxe errada, verifique os parênteses e tudo mais, para ver se tudo feche, rode cada sub-select separadamente para ver se funciona...

SELECT DISTINCT (SELECT COUNT(*)FROM TB_PESSOA TPWHERE not TP.FL_SEXO is null and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalPeriodo,(SELECT COUNT(*)FROM TB_PESSOA TPWHERE TP.FL_SEXO = 'M' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalHomem,(SELECT COUNT(*)FROM TB_PESSOA TPWHERE TP.FL_SEXO = 'F' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18') as TotalMulherFROM TB_PESSOA TPGROUP BY TP.FL_SEXO

eu fiz assim e deu certo marcioSELECT * FROM (SELECT COUNT(*)TotalFROM TB_PESSOA TPWHERE not TP.FL_SEXO is null and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18'), (SELECT COUNT(*)HomensFROM TB_PESSOA TPWHERE TP.FL_SEXO = 'M' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18'),(SELECT COUNT(*)MulheresFROM TB_PESSOA TPWHERE TP.FL_SEXO = 'F' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) >= '1' and round(((trunc(sysdate)-tp.dt_nasc_fundacao)/365)) <= '18')
marcio no caso do usuario quere que sai no relatorio outras idade,como 26 a 30 ,31a56 ect...qual seria a solução, usando essas subselect ?desde ja te agradeço pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.