Somar valores
13/03/2006
0
Tenho uma tabela Paradox com um campo tipo N (Numérico - Float) e sempre que o formulário é aberto, uma rotina de soma dos valores já lançados é acionada.
while not dbContabil.eof do begin
mValor := mValor + dbContabil.FieldByName(´Valor´).AsFloat;
dbContabil.Next;
end;
Acontece que a base está recebendo muitos registros e a rotina desta forma demora a processar a soma e toda vez que o formulário e chamado o operador tem de esperar um bom tempo antes de começar a trabalhar.
Tem com alterar esta rotina usando ´sum´ em tabela paradox ?
Qualquer ajuda será muito bem vinda.
Obrigado.
Zangado
Posts
13/03/2006
Paullsoftware
Select Sum(nValor) as SomaTotal Where AlgumaCondicao
espero ter ajudado :wink:
13/03/2006
Zangado
with qSoma do begin
Close;
SQL.Text := ´Select Sum(cast(Valor as numeric(10,2))) as pEntradas, Sum(cast(Valor as numeric(10,2))) as pSaidas from CaixaLanca.db´;
Open;
end;
ShowMessage(FormatFloat(´#,.00´, pEntradas)+´ ´+FormatFloat(´,.00´, pSaidas));
13/03/2006
Zangado
with qSoma do begin Close; SQL.Text := ´Select Sum(cast(Valor as numeric(10,2))) as pEntradas, Sum(cast(Valor as numeric(10,2))) as pSaidas from CaixaLanca.db´; Open; end; ShowMessage(FormatFloat(´#,.00´, pEntradas)+´ ´+FormatFloat(´,.00´, pSaidas));
O que está errado neste código ???
13/03/2006
Marco Salles
var pSaidas ,pEntradas
bem , eu não sei o proque da instrução cast que vo ce esta usando mas voce pode tentar assim
with qSoma do begin Close; SQL.Text := ´Select Sum(cast(Valor as numeric(10,2))) as pEntradas, Sum(cast(Valor as numeric(10,2))) as pSaidas from CaixaLanca.db´; Open; end; ShowMessage(FormatFloat(´#,.00´, qSoma.FieldByName(´pEntradas´).AsCurrency)+´ ´+ FormatFloat(´,.00´, qSoma.FieldByName(´pSaidas´).AsCurrency);
DO jeito que voce fez , ele esta retornando o conteudo de alguma variavel pEntradas e pSaidas , que apesar de ter o mesmo nome não tem nada a ver com o field da qSoma
14/03/2006
Zangado
A rotina é:
with qSoma do begin Close; SQL.Text := ´Select Sum(Valor) as pEntradas from Caixa.db´; Open; end; ShowMessage(FormatFloat(´#,.00´, qSoma.FieldByName(´Valor´).AsCurrency));
Sempre recebo a mensagem de erro: qSoma: Campo valor não encontrado.
Na verdade o que pretendo é passar o resultado para a variável ´pEntradas´ e apresenta-la no ShowMessage para ver se está funcionando e a partir dai contruir a rotina.
No caso seria:
ShowMessage(FormatFloat(´,.00´, pEntradas));
Antes eu recebia 0,00 como resultado da soma. Agora recebo: qSoma: campo valor não encontrado.
Toda ajuda será muito bem vinda.
Obrigado.
14/03/2006
Zangado
A rotina é:
with qSoma do begin Close; SQL.Text := ´Select Sum(Valor) as pEntradas from Caixa.db´; Open; end; ShowMessage(FormatFloat(´#,.00´, qSoma.FieldByName(´Valor´).AsCurrency));
Sempre recebo a mensagem de erro: qSoma: Campo valor não encontrado.
Na verdade o que pretendo é passar o resultado para a variável ´pEntradas´ e apresenta-la no ShowMessage para ver se está funcionando e a partir dai contruir a rotina.
No caso seria:
ShowMessage(FormatFloat(´,.00´, pEntradas));
Antes eu recebia 0,00 como resultado da soma. Agora recebo: qSoma: campo valor não encontrado.
Toda ajuda será muito bem vinda.
Obrigado.
14/03/2006
Zangado
A rotina é:
with qSoma do begin Close; SQL.Text := ´Select Sum(Valor) as pEntradas from Caixa.db´; Open; end; ShowMessage(FormatFloat(´#,.00´, qSoma.FieldByName(´Valor´).AsCurrency));
Sempre recebo a mensagem de erro: qSoma: Campo valor não encontrado.
Na verdade o que pretendo é passar o resultado para a variável ´pEntradas´ e apresenta-la no ShowMessage para ver se está funcionando e a partir dai contruir a rotina.
No caso seria:
ShowMessage(FormatFloat(´,.00´, pEntradas));
Antes eu recebia 0,00 como resultado da soma. Agora recebo: qSoma: campo valor não encontrado.
Toda ajuda será muito bem vinda.
Obrigado.
14/03/2006
Zangado
A rotina é:
with qSoma do begin Close; SQL.Text := ´Select Sum(Valor) as pEntradas from Caixa.db´; Open; end; ShowMessage(FormatFloat(´#,.00´, qSoma.FieldByName(´Valor´).AsCurrency));
Sempre recebo a mensagem de erro: qSoma: Campo valor não encontrado.
Na verdade o que pretendo é passar o resultado para a variável ´pEntradas´ e apresenta-la no ShowMessage para ver se está funcionando e a partir dai contruir a rotina.
No caso seria:
ShowMessage(FormatFloat(´,.00´, pEntradas));
Antes eu recebia 0,00 como resultado da soma. Agora recebo: qSoma: campo valor não encontrado.
Toda ajuda será muito bem vinda.
Obrigado.
14/03/2006
Zangado
A rotina é:
with qSoma do begin Close; SQL.Text := ´Select Sum(Valor) as pEntradas from Caixa.db´; Open; end; ShowMessage(FormatFloat(´#,.00´, qSoma.FieldByName(´Valor´).AsCurrency));
Sempre recebo a mensagem de erro: qSoma: Campo valor não encontrado.
Na verdade o que pretendo é passar o resultado para a variável ´pEntradas´ e apresenta-la no ShowMessage para ver se está funcionando e a partir dai contruir a rotina.
No caso seria:
ShowMessage(FormatFloat(´,.00´, pEntradas));
Antes eu recebia 0,00 como resultado da soma. Agora recebo: qSoma: campo valor não encontrado.
Toda ajuda será muito bem vinda.
Obrigado.
14/03/2006
Marco Salles
with qSoma do begin Close; SQL.Text := ´Select Sum(Valor) as pEntradas from Caixa.db´; Open; end; ShowMessage(FormatFloat(´#,.00´, qSoma.FieldByName(´Valor´).AsCurrency));
[b:9b063b53fd]Olhe com é o certo [/b:9b063b53fd]
with qSoma do begin Close; SQL.Text := ´Select Sum(Valor) as pEntradas from Caixa.db´; Open; end; ShowMessage(FormatFloat(´,.00´, qSoma.FieldByName(´pEntradas´).AsCurrency));
14/03/2006
Zangado
Uma dúvida: pEntradas é uma variável declarada no sistema e não o nome do campo de uma tabela. Então:
ShowMessage(FormatFloat(´#,.00´, qSoma.FieldByName(´pEntradas´).AsCurrency));
Me parece que aqui você está tratando pEntradas como se fosse o nome do campo de qSoma (o nome do objeto SQL). Ou estou errado?
Se puder me ajudar...
14/03/2006
Marco Salles
Apesar de terem o mesmo nome se tratam de tipos diferentes .. Mas nada impede que voce escolha outro Nome para ser atribuido com o operador AS
Voce disse do erro que esta dando e jura que existe este campo na tabela Então va no Editor de Camps e Limpe-o , qualquer campo declarado aqui , que não for usado na query o compilador reclamara
Pode -se fazer assim
Lembre-se de deixar o editor de Campos ´PELADO´
Clique aqui para fazer login e interagir na Comunidade :)