erro ao somar dados
Pessoal estou tendo muita dificuldade para somar dados do dia 05 de um mês até o outro dia 05.
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
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
Curtidas 0
Respostas
Andremuller
17/03/2005
Normalmente quando tu usa datas em selects deves usar o formato
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
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
SELECT SUM (Val_recebido)
FROM calculo_gastos
WHERE Meses BETWEEN ´03/05/2005´ AND ´04/05/2005´
GOSTEI 0
Vagner.oliveira
17/03/2005
mesma coisa, somou os dias 4 de cada mes apenas.
tel algum outro comando que possa efetuar a soma entre as datas ?
tel algum outro comando que possa efetuar a soma entre as datas ?
GOSTEI 0
Salupe
17/03/2005
Tenta Assim :
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´)+´´´
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
Andremuller
17/03/2005
Tu certamentes está com algum tipo de filtro na aplicação, acabei de executar a seguinte query numa aplicação que tenho em paradox
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?
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
Andremuller
17/03/2005
Caro salupe,
seu código gera exatamento a mesma sql que já enviei.
seu código gera exatamento a mesma sql que já enviei.
GOSTEI 0
Salupe
17/03/2005
realmente
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.
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
Vagner.oliveira
17/03/2005
alterei na tabela o campo MESES de Apha para DATE e agora da erro
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
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
Vagner.oliveira
17/03/2005
a tabela esta como DATE no PARADOX
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]
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
Andremuller
17/03/2005
Cara, tem como compactar essa tabela e essa tua mini aplicação e enviar isso pra muller.a@gmail.com.
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
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
Vagner.oliveira
17/03/2005
:twisted: :twisted: :twisted: :twisted:
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:
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