Como monto isto em SQL ?

Delphi

31/10/2005

DM.tbordem.SQL.Clear;
DM.tbordem.SQL.Add(´select * from tbordem where preparador = :FUNC or auxiliar = :FUNC order by CARGO´);
DM.tbordem.ParamByName(´FUNC´).AsString:=nome;
DM.tbordem.open;


Agora quero fazer isso entre um periodo. Quero que sejam selecionados todos os preparadores ou auxiliares de um certo nome em um periodo de data... do dia 10/08/2005 até 10/09/2005.

Se puderem me ajudar com o periodo fico agradecido !


Geisonc

Geisonc

Curtidas 0

Respostas

Geisonc

Geisonc

31/10/2005

pra ficar mais fácil e mais objetivo, preciso apenas saber como eu seleciono todos os registros de uma tabela enrte uma data inicial e uma data final !!!


Obrigado...


GOSTEI 0
Geisonc

Geisonc

31/10/2005

bom..... estou fazendo assim... mas nao ta mostrando o que deve mostrar...

DM.tbordem.SQL.Clear;
dm.tbordem.SQL.Add(´SELECT * FROM tbordem WHERE Data >= :DataInicial AND Data <= :DataFinal´);
DM.tbordem.ParamByName(´DataInicial´).AsString:=e1.Text;
DM.tbordem.ParamByName(´DataFinal´).AsString:=e2.text;
dm.tbordem.Open;



GOSTEI 0
Gameiro

Gameiro

31/10/2005

Utilize

between :data1 and :data2

DM.tbordem.SQL.Clear;
dm.tbordem.SQL.Add(´SELECT * FROM tbordem WHERE Data
between :data1 and :data2
DM.tbordem.ParamByName(´Data1´).AsString:=e1.Text;
DM.tbordem.ParamByName(´Data2´).AsString:=e2.text;
dm.tbordem.Open;


Ate mais. :)


GOSTEI 0
Geisonc

Geisonc

31/10/2005

humm... funcionou em partes... por exemplo, peco pra ele fazer um relatorio do dia 10/05/2005 até 15/05/2005.

ele ta mostranso 10/05/2005, 10/06/2005, 10/07/2005 e eu queria apenas do mes 5..


obs.. meu campo de data está do tipo varchar(10)... isso influi alguma coisa ?


GOSTEI 0
Michael

Michael

31/10/2005

Influencia sim. Campos data, ou melhor, tipos data são na verdade número reais, onde geralmente (eu diria que sempre) a parte inteira representa a data, e a parte fracionária, a hora (caso o campo seja DateTime).

Portanto, 10/05/2005, como data, é um número menor do que o 10/06/2005, e a ordenação funciona. Já como varchar não. Se vc ordenar as strings 1, 2 e 10, vai obter 1, 10, 2, o que não é correto caso eles representem valores.

[]´s


GOSTEI 0
Geisonc

Geisonc

31/10/2005

legal.. obrigado a todos.... converti o campo para DATE, e ficou perfeito agora... meu codigo ficou assim, caso algum dia alguem precise.

DM.tbordem.SQL.Clear;
dm.tbordem.SQL.Add(´SELECT * FROM tbordem WHERE preparador = :funcionario or auxiliar = :funcionario and DataFalecimenton between :data1 and :data2 order by data´);
DM.tbordem.ParamByName(´Data1´).AsString:=e1.Text;
DM.tbordem.ParamByName(´Data2´).AsString:=e2.text;
DM.tbordem.ParamByName(´funcionario´).AsString:=l1.text;
dm.tbordem.Open;



GOSTEI 0
Geisonc

Geisonc

31/10/2005

:x

apenas um erro.

Quando peço para fazer um relatorio de um periodo, ele tá pegando os só os dias nao os meses...., isto é, ... peco um relatorio do dia 1 ao dia 30 do mes 9, todos os campos que tiverem com data um até trinta, ele mostra.. sem se importar com o mes...

como será que eu resolvo isso ?

no aguardo..


GOSTEI 0
Wiltonfenix

Wiltonfenix

31/10/2005

Acredito que se você fizer assim, funcionará:

DM.tbordem.ParamByName(´Data1´).AsDate:=StrToDate(e1.Text);
DM.tbordem.ParamByName(´Data2´).AsDate:=StrToDate(e2.text);

Para ter certeza, seria bom você falar qual banco de dados esta usando.


GOSTEI 0
Geisonc

Geisonc

31/10/2005

tbem nao funcionou... uso interbase/firebird... estranho...


GOSTEI 0
Geisonc

Geisonc

31/10/2005

fiz essa instrução diretamente no console do interbase ...
SELECT * FROM tbordem WHERE DATAFALECIMENTON BETWEEN ´9/29/2005´ AND ´10/31/2005´ AND PREPARADOR = ´VICENTE´ OR AUXILIAR = ´VICENTE´ ORDER BY DATAFALECIMENTON




mas eu queria saber o que o dia 3/11/2005 ta fazendo no resultado... q merda...


GOSTEI 0
Geisonc

Geisonc

31/10/2005

opa.. perdao.. eu queria saber o que o dia 31/8/2005 ta fazendo no resultado sql, se nao foi esta data que eu estipulei.


GOSTEI 0
Imoreira

Imoreira

31/10/2005

DM.tbordem.SQL.Clear;
dm.tbordem.SQL.Add(´SELECT * FROM tbordem WHERE [color=red:2e38fe7c72]([/color:2e38fe7c72]preparador = :funcionario or auxiliar = :funcionario[color=red:2e38fe7c72])[/color:2e38fe7c72] and DataFalecimenton between :data1 and :data2 order by data´);
DM.tbordem.ParamByName(´Data1´).AsString:=e1.Text;
DM.tbordem.ParamByName(´Data2´).AsString:=e2.text;
DM.tbordem.ParamByName(´funcionario´).AsString:=l1.text;
dm.tbordem.Open;


GOSTEI 0
Geisonc

Geisonc

31/10/2005

:shock:

nao acredito....
putz....

agora deu certo...

Muito obrigado mesmo...


GOSTEI 0
POSTAR