Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
Renaldo72 Aprendiz
Registrado: Domingo, 19 de Dezembro de 2004 Mensagens: 128
|
Enviada: Qua Fev 07, 2018 9:38 am Assunto: Pesquisa avançada |
|
|
Estou precisando mais uma vez da ajuda dos universitários. Estou utilizando essa rotina abaixo que me ensinaram, mas estou tendo dois problemas
ROTINA:
try
Screen.Cursor := crHourGlass;
DM1.IB_exec.Close;
DM1.IB_exec.SQL.Clear;
DM1.IB_exec.SQL.Add( ' SELECT PRO_PRODUTO, ' );
DM1.IB_exec.SQL.Add( ' (SELECT COUNT(BAR_QUANTIDADE) ' );
DM1.IB_exec.SQL.Add( ' FROM BAR B ' );
DM1.IB_exec.SQL.Add( ' WHERE B.BAR_CODPRODUTO = P.PRO_CODPRODUTO ' );
DM1.IB_exec.SQL.Add( ' AND B.BAR_DATA >= :P00 ' );
DM1.IB_exec.SQL.Add( ' AND B.BAR_DATA <P01>= :P02 ' );
DM1.IB_exec.SQL.Add( ' AND B.BAR_TIME <P03>= :P04) AS Qte_Vendida ' );
DM1.IB_exec.SQL.Add( ' FROM PRODUTO P ' );
DM1.IB_exec.SQL.Add( ' Order by 2 Desc ' );
DM1.IB_exec.Params[00].AsDate := DateTimePicker1.Date;
DM1.IB_exec.Params[01].AsDate := DateTimePicker2.Date;
DM1.IB_exec.Params[02].AsTime := D5.Time;
DM1.IB_exec.Params[03].AsTime := D6.Time;
DM1.IB_exec.Params[04].AsInteger := 1;
DM1.IB_exec.Open;
Screen.Cursor := crDefault;
except
Screen.Cursor := crDefault;
end;
PROBLEMAS:
1º - Não mostra os valores unitários e totais.
2º - Está demorando para montar a pesquisa.
Como faço para resolver esses problemas?
desde já agradeço
sds,
Renaldo |
|
Voltar ao Topo |
|
|
Renaldo72 Aprendiz
Registrado: Domingo, 19 de Dezembro de 2004 Mensagens: 128
|
Enviada: Sex Fev 09, 2018 12:11 pm Assunto: Pesquisa avançada |
|
|
E ai ninguém de plantão?
sds,
Renaldo |
|
Voltar ao Topo |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1029 Localização: Cianorte-PR
|
Enviada: Sáb Fev 10, 2018 7:28 am Assunto: |
|
|
Amigo duas coisas
<P01>= :P02 ' ); Olha seus parametros
P00, mas vc passa DM1.IB_exec.Params[00].AsDate
depois olha <P01> = ...
ta da uma corrijidinha ai |
|
Voltar ao Topo |
|
|
Renaldo72 Aprendiz
Registrado: Domingo, 19 de Dezembro de 2004 Mensagens: 128
|
Enviada: Sex Fev 16, 2018 11:23 am Assunto: Pesquisa avançada |
|
|
Ok anderbelluno, vou verificar obrigado.
sds,
Renaldo |
|
Voltar ao Topo |
|
|
Renaldo72 Aprendiz
Registrado: Domingo, 19 de Dezembro de 2004 Mensagens: 128
|
Enviada: Sex Fev 16, 2018 11:29 am Assunto: Pesquisa avançada |
|
|
anderbelluno ta certo aqui. Deve ter sido na hora de copiar e colar aqui mas tirei os <
try
Screen.Cursor := crHourGlass;
DM1.IB_exec.Close;
DM1.IB_exec.SQL.Clear;
DM1.IB_exec.SQL.Add( ' SELECT PRO_PRODUTO, ' );
DM1.IB_exec.SQL.Add( ' (SELECT COUNT(BAR_QUANTIDADE) ' );
DM1.IB_exec.SQL.Add( ' FROM BAR B ' );
DM1.IB_exec.SQL.Add( ' WHERE B.BAR_CODPRODUTO = P.PRO_CODPRODUTO ' );
DM1.IB_exec.SQL.Add( ' AND B.BAR_DATA >= :P00 ' );
DM1.IB_exec.SQL.Add( ' AND B.BAR_DATA P01>= :P02 ' );
DM1.IB_exec.SQL.Add( ' AND B.BAR_TIME P03>= :P04) AS Qte_Vendida ' );
DM1.IB_exec.SQL.Add( ' FROM PRODUTO P ' );
DM1.IB_exec.SQL.Add( ' Order by 2 Desc ' );
DM1.IB_exec.Params[00].AsDate := DateTimePicker1.Date;
DM1.IB_exec.Params[01].AsDate := DateTimePicker2.Date;
DM1.IB_exec.Params[02].AsTime := D5.Time;
DM1.IB_exec.Params[03].AsTime := D6.Time;
DM1.IB_exec.Params[04].AsInteger := 1;
DM1.IB_exec.Open;
Screen.Cursor := crDefault;
except
Screen.Cursor := crDefault;
end; |
|
Voltar ao Topo |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1029 Localização: Cianorte-PR
|
Enviada: Sex Fev 16, 2018 3:08 pm Assunto: |
|
|
ainda tá errado pq vc diz P00 no sql e no parabyname vc diz 00
coloca P00 no parabyname tbm.
confere os nomes dos parâmetros.
vlw |
|
Voltar ao Topo |
|
|
Renaldo72 Aprendiz
Registrado: Domingo, 19 de Dezembro de 2004 Mensagens: 128
|
Enviada: Dom Fev 18, 2018 10:33 am Assunto: Pesquisa avançada |
|
|
anderbelluno não estou entendendo onde você que chegar pois a consulta esta funcionando normalmente com exceção da lentidão quando tem muito dados. Qero incluir o valor individual e total da quantidade vendida.
sds,
Renaldo |
|
Voltar ao Topo |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1029 Localização: Cianorte-PR
|
Enviada: Seg Fev 19, 2018 1:53 am Assunto: |
|
|
Amigo. Não quero parecer chato.
Mas segundo ao que conheço, quando vc usa paramentros em sql os campos devem ser informados com o mesmo nome.
olha isso:
select * from tabela where campo = :P00
qry.parambyname('P00').asstring := 'valor';
esse seria o modo correto.
Não entendo como não gere uma aceção dizendo que não encontra o parâmetro informado no seu sql.
Mas como vc disse, funciona mas tá lento qual do tem muitos registros.
Procura sobre o Rest Dataware.
hj traz mediamente 50.000 registros em 17 segundos.
migrei e não me arrependo nenhum pouco, ao contrário to muito feliz. |
|
Voltar ao Topo |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1029 Localização: Cianorte-PR
|
Enviada: Seg Fev 19, 2018 2:11 am Assunto: |
|
|
Amigo. Não quero parecer chato.
Mas segundo ao que conheço, quando vc usa paramentros em sql os campos devem ser informados com o mesmo nome.
olha isso:
select * from tabela where campo = :P00
qry.parambyname('P00').asstring := 'valor';
esse seria o modo correto.
Não entendo como não gere uma aceção dizendo que não encontra o parâmetro informado no seu sql.
Mas como vc disse, funciona mas tá lento qual do tem muitos registros.
Procura sobre o Rest Dataware.
hj traz mediamente 50.000 registros em 17 segundos.
migrei e não me arrependo nenhum pouco, ao contrário to muito feliz. |
|
Voltar ao Topo |
|
|
natanbh1 Colaborador
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Seg Fev 19, 2018 9:37 am Assunto: |
|
|
anderbelluno escreveu: | Amigo. Não quero parecer chato.
Mas segundo ao que conheço, quando vc usa paramentros em sql os campos devem ser informados com o mesmo nome.
olha isso:
select * from tabela where campo = :P00
qry.parambyname('P00').asstring := 'valor';
esse seria o modo correto.
Não entendo como não gere uma aceção dizendo que não encontra o parâmetro informado no seu sql.
Mas como vc disse, funciona mas tá lento qual do tem muitos registros.
Procura sobre o Rest Dataware.
hj traz mediamente 50.000 registros em 17 segundos.
migrei e não me arrependo nenhum pouco, ao contrário to muito feliz. |
No que se refere a parametrização a consulta está correta.
Existem 2 formas de alimentar os parâmetros:
1- Por índice (Params[x]) = É a forma que o Renaldo72 está utilizando.
2- Por Nome (ParamByName('nome')) = É a maneira que o anderbelluno está usando. _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1029 Localização: Cianorte-PR
|
Enviada: Ter Fev 20, 2018 10:34 am Assunto: |
|
|
Ronaldo, peço desculpas pois não conhecia o metodo de passar o parâmetro pelo index como disse o natan.
natan vlw pela dica, pois é mais uma que eu não sabia.
Pergunta,
Chegou a testar o mesmo sql com o Rest Dataware?? |
|
Voltar ao Topo |
|
|
Renaldo72 Aprendiz
Registrado: Domingo, 19 de Dezembro de 2004 Mensagens: 128
|
Enviada: Qui Fev 22, 2018 7:12 pm Assunto: Pesquisa avançada |
|
|
Não conheço Rest Dataware mas se fosse possível queria uma solução da forma padrão, pois estou meio corrido para pesquisar, analisar e implantar no sistema. Tem como?
sds,
Renaldo |
|
Voltar ao Topo |
|
|
lokasso Aprendiz
Registrado: Terça-Feira, 11 de Abril de 2017 Mensagens: 174
|
Enviada: Dom Abr 22, 2018 10:46 pm Assunto: |
|
|
Renaldo72 você já tentou debugar em runto cursor <f4> para ver em qual linha ele fica mais lento?
Qual o banco que você está usando e qual a versão?
Qual o componente que você está usando para conexão ao banco?
O banco é local ou remoto?
Quanto tempo demora uma consulta?
Abraços |
|
Voltar ao Topo |
|
|
Renaldo72 Aprendiz
Registrado: Domingo, 19 de Dezembro de 2004 Mensagens: 128
|
Enviada: Sáb Mai 05, 2018 10:26 am Assunto: Pesquisa Avançada |
|
|
lokasso, eu não fiz o debug em run a base de dados é o firebird 2.54 o componente uma ibquery o acesso é local a demora varia mas fica em torno de uns 1 minuto em alguns casos até 3 minutos. |
|
Voltar ao Topo |
|
|
Renaldo72 Aprendiz
Registrado: Domingo, 19 de Dezembro de 2004 Mensagens: 128
|
Enviada: Qua Jun 06, 2018 7:41 pm Assunto: Pesquisa Avançada |
|
|
Mas na verdade o meu maior problema está em não está conseguindo pegar a quantidade, os valores individuais e a soma de acordo a quantidade e a soma total, só consigo a quantidade de cada produto.
ROTINA:
try
Screen.Cursor := crHourGlass;
DM1.IB_exec.Close;
DM1.IB_exec.SQL.Clear;
DM1.IB_exec.SQL.Add( ' SELECT PRO_PRODUTO, ' );
DM1.IB_exec.SQL.Add( ' (SELECT COUNT(BAR_QUANTIDADE) ' );
DM1.IB_exec.SQL.Add( ' FROM BAR B ' );
DM1.IB_exec.SQL.Add( ' WHERE B.BAR_CODPRODUTO = P.PRO_CODPRODUTO ' );
DM1.IB_exec.SQL.Add( ' AND B.BAR_DATA >= :P00 ' );
DM1.IB_exec.SQL.Add( ' AND B.BAR_DATA <P01>= :P02 ' );
DM1.IB_exec.SQL.Add( ' AND B.BAR_TIME <P03>= :P04) AS Qte_Vendida ' );
DM1.IB_exec.SQL.Add( ' FROM PRODUTO P ' );
DM1.IB_exec.SQL.Add( ' Order by 2 Desc ' );
DM1.IB_exec.Params[00].AsDate := DateTimePicker1.Date;
DM1.IB_exec.Params[01].AsDate := DateTimePicker2.Date;
DM1.IB_exec.Params[02].AsTime := D5.Time;
DM1.IB_exec.Params[03].AsTime := D6.Time;
DM1.IB_exec.Params[04].AsInteger := 1;
DM1.IB_exec.Open;
Screen.Cursor := crDefault;
except
Screen.Cursor := crDefault;
end;
PROBLEMAS:
1º - Não mostra os valores unitários e totais.
2º - Está demorando para montar a pesquisa.
Como faço para resolver? |
|
Voltar ao Topo |
|
|
|