natiii 0 Denunciar post Postado Outubro 10, 2007 Olá amigos, Estou tentando somar todos os campos da coluna 'Valor' de um DBGrid e o resultado quero que apareça automaticamente em um Edit. Lembrando que eu não estou usando DataModule. Estou usando AdoQuery. Se alguém souber e puder ajudar, desde já agradeço. Estou precisando disso urgente :) []'s http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Outubro 10, 2007 Logo após dar o OPEN na query você pode ou fazer um While na Query e ir somando... ou então fazer um comando SUM em uma query para pegar o valor somado... ou então no evento do grid você já ir somando... E ai depois é só jogar no Edit... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
icefusion 0 Denunciar post Postado Outubro 10, 2007 se tiver jeito... faça um select sum manualmente... eu faço usando o dbexpress...naum sei se no ado da essa possibilidade pq nunca mexi com ele!!! segue abaixo um exemplo!! var alocados : integer; sqlAuxiliar : TSQLQuery;begin sqlAuxiliar:=TSQLQuery.Create(Self); with sqlAuxiliar do begin SQLConnection:=dmBASE.Conexao; SQL.Clear; SQL.Add('SELECT SUM(COMPITAL_QUANTIDADE) AS TOTAL FROM COMPRAFROTA_ITEM_ALOCACAO'); SQL.Add(' WHERE PES_DOCTO = :PES_DOCTO AND '); SQL.Add(' COMP_NOTA_SERIE = :COMP_NOTA_SERIE AND '); SQL.Add(' COMP_NOTA_NUMERO = :COMP_NOTA_NUMERO AND '); SQL.Add(' EQTP_CODIGO = :EQTP_CODIGO AND '); SQL.Add(' EQUI_CODIGO = :EQUI_CODIGO '); ParamByName('PES_DOCTO').AsString:=edPes_Docto.Text; ParamByName('COMP_NOTA_SERIE').AsString:=edSerie.Text; ParamByName('COMP_NOTA_NUMERO').AsInteger:=StrToInt(edNumeroNF.Text); ParamByName('EQTP_CODIGO').AsInteger:=StrToInt(edTpEq_Codigo.Text); ParamByName('EQUI_CODIGO').AsInteger:=StrToInt(edEquiCodigo.Text); Open; alocados:=FindField('TOTAL').AsInteger; Close; end; Compartilhar este post Link para o post Compartilhar em outros sites
natiii 0 Denunciar post Postado Outubro 11, 2007 Amigos, Eu tentei fazer com esse código, quando faço a pesquisa pelo CDC e pela Data de Vencimento, aparece no DbGrid juntamente com o valor, mas esse valor deveria aparecer no Edit e está aparecendo 0,00. Não sei mais o que pode ser... Essa soma deveria servir para no caso: Se tiver um CDC com uma data de vencimento com varias faturas, essas faturas apareceriam no DBGrid, e o campo Vamor deveria ser somado e aparecer no Edit. VEjam o código, se puderem ajuar, agradeço muito.... procedure TFormCobrancas.Button1Click(Sender: TObject); begin with AdoQueryCobranca do begin filter:= 'CDC =' + EditCdcCobranca.Text + ' and DataVencimento =' + EditDataVencCobranca.Text; If not filtered then filtered:= true; with AdoQuerySoma do //Essa AdoQuerySoma tem como campo o Total q guarda a soma begin Close; SQL.Text:= 'select sum(Valor) as Total from Faturas where Status <>''PG'' and CDC = ' + EditCdcCobranca.text + ' and DataVencimento = ' + EditDataVencCobranca.Text; Open; EditSomaValores.Text:= FormatFloat(',0.00', Fieldbyname('Total').AsFloat); end; end; end; http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
icefusion 0 Denunciar post Postado Outubro 11, 2007 tente desta forma.... SQL.add( 'select sum(Valor) as Total from Faturas where Status <> :stat and CDC = :cdc and DataVencimento = :data'); ParamByName('stat').AsString:='PG'; ParamByName('cdc').AsString:= EditCdcCobranca.text; ParamByName('data'):= EditDataVencCobranca.Text;Open EditSomaValores.Text:=IntTOStr(FindField('Total').asfloat;Close; post os resultados!!! Compartilhar este post Link para o post Compartilhar em outros sites
natiii 0 Denunciar post Postado Outubro 15, 2007 Usei o código: AdoQuerySoma.Close; AdoQuerySoma.SQL.Add('select sum(Valor) as Total from Faturas where Status <> :STATUS and cdc = :CDC and vencimento = :VENCTO'); AdoQuerySoma.Parameters.ParamByName('STATUS').Value:= 'PG'; AdoQuerySoma.Parameters.ParamByName('CDC').Value := StrToInt(EditCdcCobranca.Text); AdoQuerySoma.Parameters.ParamByName('VENCTO').Value := StrToDate(EditDataVencCobranca.Text); AdoQuerySoma.Open; EditSoma.Text:= FormatFloat(',0.00', AdoQuerySoma.Fieldbyname('Total').AsFloat); Mas na hora da pesquisa está dando erro, diz que: Caracteres encontrados após o final da instrução SQL. Por favor, me ajudem! 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 Outubro 15, 2007 Usei o código: AdoQuerySoma.Close; AdoQuerySoma.SQL.Add('select sum(Valor) as Total from Faturas where Status <> :STATUS and cdc = :CDC and vencimento = :VENCTO'); AdoQuerySoma.Parameters.ParamByName('STATUS').Value:= 'PG'; AdoQuerySoma.Parameters.ParamByName('CDC').Value := StrToInt(EditCdcCobranca.Text); AdoQuerySoma.Parameters.ParamByName('VENCTO').Value := StrToDate(EditDataVencCobranca.Text); AdoQuerySoma.Open; EditSoma.Text:= FormatFloat(',0.00', AdoQuerySoma.Fieldbyname('Total').AsFloat); Mas na hora da pesquisa está dando erro, diz que: Caracteres encontrados após o final da instrução SQL.Por favor, me ajudem! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif NatiiiTeria como colocar o seu comando SQL ? Compartilhar este post Link para o post Compartilhar em outros sites
natiii 0 Denunciar post Postado Outubro 15, 2007 Teria como colocar o seu comando SQL ? Bem, o comando sql que coloquei foi na propriedade SQL do AdoQuery, foi assim: select sum(Valor) as Total from Faturas where Status <> 'PG'; Mas aí tirei o ponto e vírgula da propriedade e o erro que apareceu foi: Erro de sintaxe, na expressão de consulta 'Status <> 'PG' . Select sum(Valor) as Total from Faturas where Status <> ? and cdc = ? and vencimento = ? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
natiii 0 Denunciar post Postado Outubro 16, 2007 Amigos! Consegui! O problema era uma grande besteira que eu não prestei atenção... O erro dizia que faltava um ou mais parâmetros, então olhei que o campo Vencimento que havia colocado na verdade era DataVencimento. Aii que raiva! Passei varios dias e não percebi! Bom, de qualquer forma, muito obrigada pela ajuda, me ajudou bastante. Meu código ficou da seguinte forma: AdoQuerySoma.Close; AdoQuerySoma.SQL.Add('select sum(Valor) as Total from Faturas where Status <> :STATUS and cdc = :CDC and DataVencimento = :VENCTO'); AdoQuerySoma.Parameters.ParamByName('STATUS').Value:= 'PG'; AdoQuerySoma.Parameters.ParamByName('CDC').Value := EditCdcCobranca.Text; AdoQuerySoma.Parameters.ParamByName('VENCTO').Value := StrToDate(EditDataVencCobranca.Text); AdoQuerySoma.Open; EditSoma.Text:= FormatFloat(',0.00', AdoQuerySoma.Fieldbyname('Total').AsFloat); end; OBS.: Em AdoQuerySoma.Parameters.ParamByName('CDC').Value := EditCdcCobranca.Text; ficou apenas := EditCdcCobranca.Text sem o StrToInt pq o CDC no banco é Texto, quando ele ia procurar o inteiro, procurava por exemplo o numero '97' e lá no banco estava CDC '0000097' como texto. Obrigada e até a próxima! 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 16, 2007 Coisa ótima que conseguiu achar o problema, realmente as vezes os menores erros são os mais complicados e chatos de se encontrar...Seu código ficou muito bom, parabéns... Compartilhar este post Link para o post Compartilhar em outros sites
natiii 0 Denunciar post Postado Outubro 17, 2007 Obrigada amigo! Vou precisar muito ainda da ajuda de vocês! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif []'s Nattiii Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 17, 2007 Certio... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
[VAZA] 0 Denunciar post Postado Dezembro 10, 2008 O que eu notei e to morrendo de raiva, é que o SUM do SQL não segue o Filter do componente ClientDataSet por exemplo :( ou seja..se você filtrar os dados pelo Filter, o sum nao atualiza segundo o filtro :( Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Dezembro 10, 2008 O que eu notei e to morrendo de raiva, é que o SUM do SQL não segue o Filter do componente ClientDataSet por exemplo :( ou seja..se você filtrar os dados pelo Filter, o sum nao atualiza segundo o filtro :( Ah sim, no caso você apenas esta refinando as informações, fazendo o filtro e tirando eles de exibição... Compartilhar este post Link para o post Compartilhar em outros sites