Fórum erro ao somar dados #272930
17/03/2005
0
Tenho uma tabela em paradox com os seguintes campos:
indice - autoincremento
meses - alpha
val_recebido - moeda
val_gasto - moeda
val_bruto - moeda
total_recebido - moeda
total_gasto - moeda
total_bruto - moeda
total_mensal - moeda
total_empresa - moeda
utilizando MESES como ALPHA e uma query para mostrar os dados funciona OK.
Segue o codigo usado dentro da query:
DE_meses - é um DBEdit que recebe a variavel MESES:
[color=green:d9b4b98962]select *
from calculo_gastos
where meses like ´¬´+DE_meses.text+´¬´
[/color:d9b4b98962]
Sé que, ao efetuar a soma, com o seguinte codigo tb dendro da query:
[color=green:d9b4b98962]SELECT SUM (Val_recebido)
FROM calculo_gastos
WHERE Meses BETWEEN ´05/03/2005´ AND ´05/04/2005´
[/color:d9b4b98962]
É somado apenas os dias 05/03 e 05/04.
Agora se alterar na tabela paradox os meses para DATE da a mesma coisa... ja digitei a data como [color=red:d9b4b98962]´05/03/2005´ AND ´05/04/2005´[/color:d9b4b98962] assim [color=darkred:d9b4b98962]´03/05/2005´ AND ´04/05/2005´[/color:d9b4b98962] assim [color=darkblue:d9b4b98962]´05/03/05´ AND ´05/04/05´[/color:d9b4b98962] e sempre soma so aqueles dias e não o mes inteiro.
Não sei o que tem de errado se alguem puder me ajudar agradeço
Vagner.oliveira
Curtir tópico
+ 0Posts
17/03/2005
Andremuller
mm/dd/yyyy ou yyyy-mm-dd
Pelo que entendi o paradox está tentando pegar as datas entre
03/05/2005 e 04/05/2005
vê se não é isso.
Isso varia de banco pra banco, por exemplo eu instalei o MSDE em português e o formato default a usar-se era dd/mm/yyyy, nesse caso não consegui mudar isso nem nas configurações regionais, nem em nenhum tipo de colation.
Mas o paradox, até onde saiba é mm/dd/yyyy então execute da seguinte forma
Gostei + 0
18/03/2005
Vagner.oliveira
tel algum outro comando que possa efetuar a soma entre as datas ?
Gostei + 0
18/03/2005
Salupe
SELECT SUM (Val_recebido)
FROM calculo_gastos
WHERE Meses BETWEEN ´´´+FormatDateTime(´mm/dd/yyyy´,strtodate(´03/05/2005´)+´´´ AND ´´´+FormatDateTime(´mm/dd/yyyy´,strtodate(´04/05/2005´)+´´´
Gostei + 0
18/03/2005
Andremuller
select * from parcelas where datasituacao between ´05/01/2004´ and ´05/20/2004´
Ele me trouxe todas as parcelas com situação entre 1-5-2004 e 20-5-2004. Note que se ele interpretasse a segunda data como dd/mm/yyyy teria dado erro visto não existir nenhum mês 20.
Faça o seguinte, execute a query usando o mesmo formato (mm/dd/yyyy) no SQLExplorer e veja o resultado, caso o resultado seja diferente do dado pela aplicação então existe algum outro fator que está bloqueando o resultado total.
Não faz muito sentido mas tente utilizar data >= ´datainicial´ and data <= ´datafinal´, sem between, só pra ver o que acontece.
E então?
Gostei + 0
18/03/2005
Andremuller
seu código gera exatamento a mesma sql que já enviei.
Gostei + 0
18/03/2005
Salupe
só que colocando o formatdatetime ele faz com que o mes seja colocado no inicial, visto que o paradox e alguns outros bds utilizam o padrao mm/dd/yyyy, e com ele faz o bd reconhecer corretamente o padrao dele.
Gostei + 0
18/03/2005
Vagner.oliveira
type mismatch in expression:
e aponta para essa linha:
procedure TForm1.calendarioClick(Sender: TObject);
var meses:TDate;
begin
// atribui o dia de hoje //
//DE_meses.Text:=FormatDateTime(´mm/dd/yy´,Calendario.Date);
//Meses:=Calendario.Date; <<--
sendo q a mesma esta comentada
Gostei + 0
18/03/2005
Vagner.oliveira
copiei o SQL enviado:
[b:3b05c77620]select *
from calculo_gastos
where meses between ´03/05/05´ and ´04/05/2005´[/b:3b05c77620]
e so apresenta os dados:
03/04/05
04/04/05
não apresenta os demais.
Com o comando MAIOR/NEMOR QUE ´<´ ´>´ da o mesmo erro, não tem filtro algum, pois criei uma nova aplicação so com 1 query, 1 data source e 1 dbgrid[/b]
Gostei + 0
18/03/2005
Andremuller
Então eu vejo, estamos divagando demais sobre um problema simples, acho que é apenas um erro de comunicação.
Se a tabela for muito grande exclui os registros que não são desse periodo que tu quer ver
Gostei + 0
21/03/2005
Vagner.oliveira
consegui fazer o calclo funcionar, o problema é que quando compilo a aplicação da erro, type mismatch in expression... desabilitei as 2 querys e mesmo assim da erro....
:twisted: :twisted: :twisted: :twisted:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)