Somar valores
Olá programadores,
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.
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
Curtidas 0
Respostas
Paullsoftware
13/03/2006
Bem, vc pode tentar usar uma Query e fazer assim:
espero ter ajudado :wink:
Select Sum(nValor) as SomaTotal Where AlgumaCondicao
espero ter ajudado :wink:
GOSTEI 0
Zangado
13/03/2006
Estou tendo desta forma, más sempre me retorna 0,00.
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));
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));
GOSTEI 0
Zangado
13/03/2006
Estou tentando desta forma, más sempre retorna 0,00.
O que está errado neste código ???
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 ???
GOSTEI 0
Marco Salles
13/03/2006
engraçado zangado , não devia nen retornar , de fato não devia nen compilar , a não ser que voce tenha definido uma variavel
bem , eu não sei o proque da instrução cast que vo ce esta usando mas voce pode tentar assim
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
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
GOSTEI 0
Zangado
13/03/2006
Ainda não consegui. O objeto SQL está lincado em uma tabela Caixa (Paradox). Nesta Tabela existe o campo ´Valor´. pEntradas é uma variável da classe ´Real´. Na instrução SQL do objeto tenho ´Select * from Caixa´.
A rotina é:
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:
Antes eu recebia 0,00 como resultado da soma. Agora recebo: qSoma: campo valor não encontrado.
Toda ajuda será muito bem vinda.
Obrigado.
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.
GOSTEI 0
Zangado
13/03/2006
Ainda não consegui. O objeto SQL está lincado em uma tabela Caixa (Paradox). Nesta Tabela existe o campo ´Valor´. pEntradas é uma variável da classe ´Real´. Na instrução SQL do objeto tenho ´Select * from Caixa´.
A rotina é:
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:
Antes eu recebia 0,00 como resultado da soma. Agora recebo: qSoma: campo valor não encontrado.
Toda ajuda será muito bem vinda.
Obrigado.
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.
GOSTEI 0
Zangado
13/03/2006
Ainda não consegui. O objeto SQL está lincado em uma tabela Caixa (Paradox). Nesta Tabela existe o campo ´Valor´. pEntradas é uma variável da classe ´Real´. Na instrução SQL do objeto tenho ´Select * from Caixa´.
A rotina é:
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:
Antes eu recebia 0,00 como resultado da soma. Agora recebo: qSoma: campo valor não encontrado.
Toda ajuda será muito bem vinda.
Obrigado.
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.
GOSTEI 0
Zangado
13/03/2006
Ainda não consegui. O objeto SQL está lincado em uma tabela Caixa (Paradox). Nesta Tabela existe o campo ´Valor´. pEntradas é uma variável da classe ´Real´. Na instrução SQL do objeto tenho ´Select * from Caixa´.
A rotina é:
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:
Antes eu recebia 0,00 como resultado da soma. Agora recebo: qSoma: campo valor não encontrado.
Toda ajuda será muito bem vinda.
Obrigado.
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.
GOSTEI 0
Zangado
13/03/2006
Ainda não consegui. O objeto SQL está lincado em uma tabela Caixa (Paradox). Nesta Tabela existe o campo ´Valor´. pEntradas é uma variável da classe ´Real´. Na instrução SQL do objeto tenho ´Select * from Caixa´.
A rotina é:
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:
Antes eu recebia 0,00 como resultado da soma. Agora recebo: qSoma: campo valor não encontrado.
Toda ajuda será muito bem vinda.
Obrigado.
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.
GOSTEI 0
Marco Salles
13/03/2006
[b:9b063b53fd]Olhe o que voce esta fazendo[/b:9b063b53fd]
[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(´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));
GOSTEI 0
Zangado
13/03/2006
Está dando erro: ´Invalid field name: valor´ e no entanto é este o nome do campo na tabela Caixa onde está lincado o objeto SQL.
Uma dúvida: pEntradas é uma variável declarada no sistema e não o nome do campo de uma tabela. Então:
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...
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...
GOSTEI 0
Marco Salles
13/03/2006
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...
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
Está dando erro: ´Invalid field name: valor´ e no entanto é este o nome do campo na tabela Caixa onde está lincado o objeto SQL.
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
with qSoma do begin
Close;
SQL.Text := ´Select Sum(Valor) as NomeQualquer from Caixa.db´;
Open;
end;
ShowMessage(FormatFloat(´#,.00´, qSoma.FieldByName(´NomeQualquer´).AsCurrency));
Lembre-se de deixar o editor de Campos ´PELADO´
GOSTEI 0
Zangado
13/03/2006
Obrigado Marco Salles. Agora funcionou sem problemas.
GOSTEI 0