natiii 0 Denunciar post Postado Outubro 26, 2007 Olá amigos! Minha dúvida de hoje é a seguinte: Fiz um form em que o usuário pode digitar a faixa de cdc, data de vencimento e rotas que deseja gerar relatórios.. Ou seja: fica: De CDC __________ a ____________ De data de vencimento ________________ a ________________ Intervalo de Rotas: ________________ a _________________ e abaixo apareceria os registros em um DBGRID, a partir daí era só clicar no botão imprimir que todos esses relatorios seriam impressos Primeiramente, não sei se é dessa forma, fiz o filtro, para mostrar os registros no DBGRID,ficou dessa maneira: with AdoQueryImprimirOS do begin filter:= 'CDC= ' + EditImpCDC.Text + 'and CDC= ' + EditImpCDC2.Text + 'and DataVencimento= ' + EditDataVencOS.Text + 'and DataVencimento= ' + EditDataVencOS2.Text + 'and Rota= ' + EditRota1.Text + 'and Rota= ' + EditRota2.Text; If not filtered then filtered:= true; end;end; Sei que está errado, pois os campos estão em conflito, como faço para filtrar dentro de uma faixa de valores? Alguém pode me dar uma luz? []'s Natiii http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 26, 2007 Tente usando o >= e <= with AdoQueryImprimirOS do begin filter:='CDC>= ' + EditImpCDC.Text + 'and CDC<= ' + EditImpCDC2.Text + 'and DataVencimento>= ' + EditDataVencOS.Text + 'and DataVencimento<= ' + EditDataVencOS2.Text + 'and Rota>= ' + EditRota1.Text + 'and Rota<= ' + EditRota2.Text; If not filtered then filtered:= true; end; Compartilhar este post Link para o post Compartilhar em outros sites
natiii 0 Denunciar post Postado Outubro 26, 2007 Deu erro: Os argumento estão incorretos ou estão fora do intervalo válido ou em conflito...mesmo com as mudanças está dando o mesmo erro...Não sei o que pode ser...[]'s Natiii Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 26, 2007 Se o componente é uma query, porque você não repassa o SQL fazer um select restringindo ?Vai ser mais rápido do que usar o Filter... Compartilhar este post Link para o post Compartilhar em outros sites
natiii 0 Denunciar post Postado Outubro 26, 2007 E como eu faço isso? :blink: você poderia me dar um exemplo? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 26, 2007 Teria como colocar o comando SQL que usa na Query ? Somente precisa fazer: AdoQueryImprimirOS.Close;AdoQueryImprimirOS.SQL.Clear;AdoQueryImprimirOS.SQL.Add('select *');AdoQueryImprimirOS.SQL.Add('from tabela');AdoQueryImprimirOS.SQL.Add('where CDC between ' + EditImpCDC.Text + ' and ' + EditImpCDC2.Text);AdoQueryImprimirOS.SQL.Add('and DataVencimento between ''' + EditDataVencOS.Text + ''' and ''' + EditDataVencOS2.Text + '''');AdoQueryImprimirOS.SQL.Add('and Rota between ' + EditRota1.Text + ' and ' + EditRota2.Text);AdoQueryImprimirOS.Open;O erro anterior pode ter acontecido por falta de espaço entre as restrições, algo como: with AdoQueryImprimirOS do begin filter:='CDC>= ' + EditImpCDC.Text + ' and CDC<= ' + EditImpCDC2.Text + ' and DataVencimento>= ' + EditDataVencOS.Text + ' and DataVencimento<= ' + EditDataVencOS2.Text + ' and Rota>= ' + EditRota1.Text + ' and Rota<= ' + EditRota2.Text; If not filtered then filtered:= true; end;Os comandos and estavam ficando colados a restrição... Compartilhar este post Link para o post Compartilhar em outros sites
natiii 0 Denunciar post Postado Outubro 29, 2007 Bom dia amigos, a etapa de filtro dos dados e mostrá-los no DBGrid consegui... Ficou da seguinte forma: AdoQueryFiltroOS.Close; AdoQueryFiltroOS.SQL.Clear; AdoQueryFiltroOS.SQL.Add('Select Numero, CDC, Rota, Competencia, DataVencimento, Valor'); AdoQueryFiltroOS.SQL.Add('from Faturas'); AdoQueryFiltroOS.SQL.Add('where CDC between :CDC and :CDC2'); AdoQueryFiltroOS.SQL.Add('and DataVencimento between :VENCTO1 and :VENCTO2'); AdoQueryFiltroOS.SQL.Add('and Rota between :Rota1 and :Rota2'); AdoQueryFiltroOS.SQL.Add('and Status <> :STATUS'); AdoQueryFiltroOS.Parameters.paramByName('CDC').value:= EditImpCDC.Text; AdoQueryFiltroOS.Parameters.paramByName('CDC2').value:= EditImpCDC2.Text; AdoQueryFiltroOS.Parameters.paramByName('VENCTO1').Value:= strToDate(EditDataVencOS.Text); AdoQueryFiltroOS.Parameters.paramByName('VENCTO2').Value:= strToDate(EditDataVencOS2.Text); AdoQueryFiltroOS.Parameters.paramByName('Rota1').Value:= EditRota1.Text; AdoQueryFiltroOS.Parameters.paramByName('Rota2').Value:= EditRota2.Text; AdoQueryFiltroOS.Parameters.ParamByName('STATUS').Value:= 'PG'; AdoQueryFiltroOS.Open; Coloquei esses dados não só no Código Delphi cmo no código do AdoQueryFiltro também..Senão não apareceria no DBGrid.. O que quero saber agora é como faço para jogar os valores desses filtros em um relatório quick report... Pois coloquei: De CDC: ________________ a CDC ___________________- de Data de vencimento _________________ a Data de vencimento _______________________ de Rota __________ a ______________ eu quero que cada linha do DBGrid seja gerado um relatorio... tem como fazer isso com Quick Report? Ah, e muito obrigada pela ajuda, serviu muito! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Natiii Compartilhar este post Link para o post Compartilhar em outros sites
natiii 0 Denunciar post Postado Novembro 5, 2007 Olá amigos... Consegui gerar vários relatórios com o seguinte código AdoQueryFiltroOS.Close; AdoQueryFiltroOS.SQL.Clear; AdoQueryFiltroOS.SQL.Add('Select Numero, CDC, Rota, Competencia, DataVencimento, Valor'); AdoQueryFiltroOS.SQL.Add('from Faturas'); AdoQueryFiltroOS.SQL.Add('where CDC between :CDC and :CDC2'); AdoQueryFiltroOS.SQL.Add('and DataVencimento between :VENCTO1 and :VENCTO2'); AdoQueryFiltroOS.SQL.Add('and Rota between :Rota1 and :Rota2'); AdoQueryFiltroOS.SQL.Add('and Status <> :STATUS'); AdoQueryFiltroOS.Parameters.paramByName('CDC').value:= EditImpCDC.Text; AdoQueryFiltroOS.Parameters.paramByName('CDC2').value:= EditImpCDC2.Text; AdoQueryFiltroOS.Parameters.paramByName('VENCTO1').Value:= strToDate(EditDataVencOS.Text); AdoQueryFiltroOS.Parameters.paramByName('VENCTO2').Value:= strToDate(EditDataVencOS2.Text); AdoQueryFiltroOS.Parameters.paramByName('Rota1').Value:= EditRota1.Text; AdoQueryFiltroOS.Parameters.paramByName('Rota2').Value:= EditRota2.Text; AdoQueryFiltroOS.Parameters.ParamByName('STATUS').Value:= 'PG'; AdoQueryFiltroOS.Open; while not ADOQueryFiltroOS.Eof do begin FormRelatorioOS.QuickRepOS.Preview; AdoQueryFiltroOS.Next; end; end; http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Natiii Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 5, 2007 beleza... parabéns... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites