Somar dados da Tabela String
25/11/2005
1
Pessoal, é o seguinte, tenho uma tabela PARADOX com os campos [b:3b1936bbfd]ValGasto e ValRecebido que são Alpha[/b:3b1936bbfd] gostaria de somar estes campos. Tentei com o Sum do SQL mas da erro, [color=red:3b1936bbfd]mismatch expression[/color:3b1936bbfd] acredito que seja pelo fato do campo ser string, então como poderia resolver este problema :?:
Responder
Posts
25/11/2005
Vc já tentou efetuar um Cast no campo para efetuar a soma ???
Responder
25/11/2005
[quote:ff41acf78b=´/]/]@t´]Vc já tentou efetuar um Cast no campo para efetuar a soma ???[/quote:ff41acf78b]
:arrow: Como eu utilizo este recurso :?:
:arrow: Como eu utilizo este recurso :?:
Responder
25/11/2005
Olá meu amigo,
Se eu entendi bem eu faria assim:
------------------------------------------
var
d : double;
begin
d:=strtofloat(valgasto) + strtofloat(valrecibo);
Ricardo
Se eu entendi bem eu faria assim:
------------------------------------------
var
d : double;
begin
d:=strtofloat(valgasto) + strtofloat(valrecibo);
Ricardo
Responder
25/11/2005
desculpe mas não me expressei bem.
tenho uma tabela com estes campos, ValGasto e ValRecebido:
Ex;
Nome ValGasto ValRecebido
fulano 10,00 50,00
ciclano 5,00 0,00
beltrano 0,00 10,00
Total 15,00 60,00
gostaria de somar o total de cada campo utilizando um filtro em SQL, pois esse resultado é feito por mês
tenho uma tabela com estes campos, ValGasto e ValRecebido:
Ex;
Nome ValGasto ValRecebido
fulano 10,00 50,00
ciclano 5,00 0,00
beltrano 0,00 10,00
Total 15,00 60,00
gostaria de somar o total de cada campo utilizando um filtro em SQL, pois esse resultado é feito por mês
Responder
25/11/2005
Olá colega tente assim:
Espero ter ajudado.
[]´s.
with Query1 do begin Close; SQL.Text := ´select Sum(cast(Campo1 as numeric(10,2))) as Soma1, Sum(cast(Campo2 as numeric(10,2))) as Soma2 from dbTabela.db´; Open; end;
Espero ter ajudado.
[]´s.
Responder
28/11/2005
Funcionou perfeitamente :lol:
Muito obrigado :wink:
Ele não somou corretamente quando coloquei o valor com virgula.
Quando troquei para ponto ele somou corretamente, só que deu erro, dizendo que não é um ponto flutuante válido.
Como contornar este erro :?:
Responder
28/11/2005
A melhor forma seria você alterar o tipo de campo para number, caso não seja possível, faça a varredura do arquivo e some os valores, dessa forma você terá o controle do campo e poderá identificar falhas de digitação como ´1.000,00´ ou ´1 000.00´
Responder
28/11/2005
Var S: String; VALOR : double; begin VALOR := 0; ProgressBar1.Max := TABELA.RecordCount; ProgressBar1.Position := 0; ProgressBar1.Step := 1; While not TABELA.EOF do begin S := TABELA.FieldByName(´Campo1´).asString; //Remove espaços While pos(´ ´, S) > 0 do Delete(S, Pos(´ ´,S), 1); //Remove ponto de milhar While pos(´.´, S) > 0 do Delete(S, Pos(´.´,S), 1); //Substitui virgula por ponto decimal While pos(´,´, S) > 0 do S[Pos(´,´,S)] := ´.´; //Testa se S é ponto flutuante try StrToFloat( S ); Except On EConvertError do begin ShowMessage(´Erro convertendo "´ + S + ´"´ ); exit; end; end; //Acumula Valor VALOR := VALOR + StrToFloat( S ); //Progresso (pra distrair o usuário, rs) ProgreessBar1.Stepit; //Avança Tabela TABELA.Next; end;
Você pode usar NCampos, NValores e diversos critérios para conversão de dados.
Responder
28/11/2005
:x Uma coisa tão simples que não me dei conta. :oops: :oops:
Agora funcionou legal, valewwwwssssss :P
Agora funcionou legal, valewwwwssssss :P
Responder
Clique aqui para fazer login e interagir na Comunidade :)