Fórum Não consigo somar coluna do DbGrid com Select Sum #339351
26/03/2007
0
FormPrincipal.Compras.Filtered := False;
FormPrincipal.Compras.Close;
FormPrincipal.Compras.SQL.Clear;
FormPrincipal.Compras.Sql.Text:= ´Select Data,SUM(Quant) as Total,Produto,Marca,Modelo,Fornecedor from Compras where DATA between #´ + EditVencInicial.Text + ´ and ´ + EditVencFinal.Text +´´;
FormPrincipal.Compras.SQL.Add(´ order by ´+ComboBoxOrdenar.Text);
FormPrincipal.Compras.Open;
FormPrincipal.Compras.First;
FormPrincipal.DataSourceCompras.Enabled:= True;
LabelTotal.Caption := FloatToStr(Total);
Provavelmente deve ter um erro na utilização do código mas, procurei muito na net sem sucesso antes de recorrer a este fórum.
Preciso também somar a coluna ´Valor´ mas é do tipo TEXT, como faço ?
Obrigado!
Delfai
Curtir tópico
+ 0Posts
26/03/2007
Delfai
Gostei + 0
09/04/2007
Delfai
Faço assim e filtra mas não soma:
Obs.: O campo Valor é tipo TEXTO, então uso VAL() para converter.
FormPrincipal.DataSourceCompras.Enabled:= False;
FormPrincipal.Compras.Filtered := False;
FormPrincipal.Compras.Close;
FormPrincipal.Compras.SQL.Clear;
FormPrincipal.Compras.Sql.Text:= ´Select Data,Docto,Quant,Código,Descrição,Valor,Produto,Marca,Modelo,Fornecedor,SUM(VAL(Valor)) AS Total from Compras where Data Between cdate(´+QuotedStr(EditVencInicial.Text)+´) and cdate(´+QuotedStr(EditVencFinal.Text)+´)´;
FormPrincipal.Compras.SQL.Add(´ Group By Data,Docto,Quant,Código,Descrição,Valor,Produto,Marca,Modelo,Fornecedor´);
FormPrincipal.Compras.SQL.Add(´ Order By ´+ComboBoxOrdenar.Text);
FormPrincipal.DataSourceCompras.Enabled:= True;
LabelTotal.Caption := FormatFloat(´#,0.00´,Total);
Será um erro de sintaxe ou o ADOQuery com Access não suporta essa função?
Desde já agradeço
Gostei + 0
09/04/2007
Rjun
:arrow: Definir como TEXTO um campo que irá armazenar valores numéricos é pedir para ter problema.
:arrow: Não teria que ter um [b:b22ab903dd]Group By[/b:b22ab903dd] na sua instrução SQL?
Gostei + 0
09/04/2007
Delfai
FormPrincipal.DataSourceCompras.Enabled:= False;
FormPrincipal.Compras.Filtered := False;
FormPrincipal.Compras.Close;
FormPrincipal.Compras.SQL.Clear;
FormPrincipal.Compras.Sql.Text:= ´Select Data,Docto,Quant,Código,Descrição,Valor,Produto,Marca,Modelo,Fornecedor,SUM(Quant * Valor) AS Total from Compras where Data Between cdate(´+QuotedStr(EditVencInicial.Text)+´) and cdate(´+QuotedStr(EditVencFinal.Text)+´)´;
FormPrincipal.Compras.SQL.Add(´ Group By Data,Docto,Quant,Código,Descrição,Valor,Produto,Marca,Modelo,Fornecedor´);
FormPrincipal.Compras.SQL.Add(´ Order By ´+ComboBoxOrdenar.Text);
FormPrincipal.Compras.Close;
FormPrincipal.DataSourceCompras.Enabled:= True;
LabelTotal.Caption := FormatFloat(´#,0.00´,FormPrincipal.Compras.FieldByName(´Total´).AsFloat); // Aqui se trata do campo criado virtualmente, podendo ser exibido no DbGrid com o valor total ( Quant * Valor) = AQUI FUNCIONA mas não quero o calculo da linha, quero o total da coluna ´Total´, eu poderia consegui com o While not FormPrincipal.Compras.eof mas, com muitos registros vai demorar muito.
No exemplo anterior, eu tinha criado a variavel Total, neste aqui eu não declarei variável nenhuma, o Total agora é o campo virtual.
Eu não necessito que fique agrupado usando o Group By, só quero filtrar entre datas e mostrar o total comprado neste período.
Pode me ajudar? grato!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)