Migrando um software para dbexpress.. erro na consulta
Boa tarde pessoal,
estou encontrando dificuldades em migrar um sistema
que tenho para dbexpress.. e queria contar com a ajuda
de vcs mais uma vez..
tenho um banco de dados no sqlserver2000 chamado Teste.
-Liguei o sqlconnection ao bd(com o nome de LOGAR);
-Pus um sqldataset e configurei : Select * from retorno(no commandtext)
e LOGAR(no sqlconnection do sqldataset)
-Pus um datasetprovider e em dataset pus sqldataset1;
-Pus um clientdataset1 e liguei ao datasetprovider;
-Pus um datasource e liguei ao dataset;
até aí tudo jóia.. faço a baixa do arquivo que vem em arquivo texto..
depois tenho que fazer os relatórios.. aí que o bicho pega..
estou fazendo da seguinteforma..
-Pus um sqlquery conectei ao sqlconnection
e na propriedade sql pus uma consulta mto fácil;
SELECT * FROM RETORNO WHERE DT_INFRA BETWEEN:DTINICIAL AND:DTFINAL
acho que nos parâmetros que o bicho pega.. pq no meu bd eu configurei
DT_Infra como um smalldatetime..
qdo olho nas propriedades do clientdataset ele está como:TSQLTimeStampField..
Nos parametros do sqlquery configurei paramtype como ptinput;
no datatype já tentei: ftdatetime com o valor 01/01/2004
já tentei ftstring com o valor ´01/01/2004´
já tentei fttimestamp com o valor 01/01/2004 e tb com ´01/01/2004´
.. não sei mais o que fazer..
valeu pela força
Eric
estou encontrando dificuldades em migrar um sistema
que tenho para dbexpress.. e queria contar com a ajuda
de vcs mais uma vez..
tenho um banco de dados no sqlserver2000 chamado Teste.
-Liguei o sqlconnection ao bd(com o nome de LOGAR);
-Pus um sqldataset e configurei : Select * from retorno(no commandtext)
e LOGAR(no sqlconnection do sqldataset)
-Pus um datasetprovider e em dataset pus sqldataset1;
-Pus um clientdataset1 e liguei ao datasetprovider;
-Pus um datasource e liguei ao dataset;
até aí tudo jóia.. faço a baixa do arquivo que vem em arquivo texto..
depois tenho que fazer os relatórios.. aí que o bicho pega..
estou fazendo da seguinteforma..
-Pus um sqlquery conectei ao sqlconnection
e na propriedade sql pus uma consulta mto fácil;
SELECT * FROM RETORNO WHERE DT_INFRA BETWEEN:DTINICIAL AND:DTFINAL
acho que nos parâmetros que o bicho pega.. pq no meu bd eu configurei
DT_Infra como um smalldatetime..
qdo olho nas propriedades do clientdataset ele está como:TSQLTimeStampField..
Nos parametros do sqlquery configurei paramtype como ptinput;
no datatype já tentei: ftdatetime com o valor 01/01/2004
já tentei ftstring com o valor ´01/01/2004´
já tentei fttimestamp com o valor 01/01/2004 e tb com ´01/01/2004´
.. não sei mais o que fazer..
valeu pela força
Eric
Eric.miranda
Curtidas 0
Respostas
Bruno_fantin
17/11/2004
Não precisa mudar a data para string... usada como TDateTime mesmo...
Só um exemplo...
with SQLQuery do
begin
SQL.Add(Select * From Tabela Where Data Between :Data1 and :Data2);
Params[0].AsDateTime := Date - 365;
Params[1].AsDateTime := Date;
Open;
end;
Só um exemplo...
with SQLQuery do
begin
SQL.Add(Select * From Tabela Where Data Between :Data1 and :Data2);
Params[0].AsDateTime := Date - 365;
Params[1].AsDateTime := Date;
Open;
end;
GOSTEI 0
Eric.miranda
17/11/2004
essa forma foi a primeira que tentei..
ela como as outras dão invalid field type..
mas mesmo assim valeu
ela como as outras dão invalid field type..
mas mesmo assim valeu
GOSTEI 0
Gandalf.nho
17/11/2004
Tente usar essa função DateTimeToSQLTimeStamp (converte um DataTime para SQLTimeStamp)
GOSTEI 0
Vinicius2k
17/11/2004
Colega,
Mude o tipo do parametro para ftTimeStamp e ao invés de utilizar AsDate ou AsDateTime, utilize Value informando uma data, por exemplo :
Ou
Acrestente a unit [b:8b56283fcc]SqlTimSt[/b:8b56283fcc] na lista de uses e utilize a função de conversão de DateTime para SQLTimeStamp :
Espero ter ajudado...
T+
Mude o tipo do parametro para ftTimeStamp e ao invés de utilizar AsDate ou AsDateTime, utilize Value informando uma data, por exemplo :
with SQLDataSet1 do
begin
Close;
CommandText:= ´select * from <TABELA> where <CAMPO> between :P1 and :P2´;
{ **** }
ParamByName(´P1´).DataType:= ftTimeStamp;
ParamByName(´P1´).Value:= StrToDate(´17/11/2004´);
{ **** }
ParamByName(´P2´).DataType:= ftTimeStamp;
ParamByName(´P2´).Value:= StrToDate(´17/11/2004´);
{ **** }
Open;
end;Ou
Acrestente a unit [b:8b56283fcc]SqlTimSt[/b:8b56283fcc] na lista de uses e utilize a função de conversão de DateTime para SQLTimeStamp :
with SQLDataSet1 do
begin
Close;
CommandText:= ´select * from <TABELA> where <CAMPO> between :P1 and :P2´;
{ **** }
ParamByName(´P1´).AsSQLTimeStamp:= DateTimeToSQLTimeStamp(StrToDate(´17/11/2004´));
{ **** }
ParamByName(´P2´).AsSQLTimeStamp:= DateTimeToSQLTimeStamp(StrToDate(´17/11/2004´));
{ **** }
Open;
end;Espero ter ajudado...
T+
GOSTEI 0
Eric.miranda
17/11/2004
mas pq esse campo fica como TSQLTimeStampField
sendo que ele é um datetime normal..
o clientdataset tem esses problemas??
usando a query não tinha esses problemas..
valeu
sendo que ele é um datetime normal..
o clientdataset tem esses problemas??
usando a query não tinha esses problemas..
valeu
GOSTEI 0
Gandalf.nho
17/11/2004
Acho que isso é uma característica do DBExpress
GOSTEI 0