Fórum dbexpress com o comando like?? #259011
18/11/2004
0
tinha um programa que usava query e datasource ligados a um database..
ele tem a seguinte sql..
SELECT AIT, PLACA, ´QUANT_AUTO´=COUNT(AUTO)
FROM RETORNO
WHERE PLACA LIKE :FINAL
AND DT_INFRA BETWEEN:DTINCIAL AND:DTFINAL
GROUP BY PLACA,AIT
[b:efef776133]FAZIA A CHAMADA DESSA FORMA..[/b:efef776133]
DT1:= COPY(DATETOSTR(DTINICIAL.DATE),4,2)+´/´+COPY(DATETOSTR(DTINICIAL.DATE),1,2)+´/´+COPY(DATETOSTR(DTINICIAL.DATE),7,4);
DT2:= COPY(DATETOSTR(DTFINAL.DATE),4,2)+´/´+COPY(DATETOSTR(DTFINAL.DATE),1,2)+´/´+COPY(DATETOSTR(DTFINAL.DATE),7,4);
FOR I:= 0 TO 9 DO
BEGIN
DTMDB.FinalPlaca.Close;
DTMDB.FinalPlaca.ParamByName(´FINAL´).ASSTRING:= ´¬´+INTTOSTR(I);
DTMDB.FinalPlaca.ParamByName(´DTINCIAL´).ASSTRING:= DT1;
DTMDB.FinalPlaca.ParamByName(´DTFINAL´).ASSTRING:= DT2;
DTMDB.FinalPlaca.Prepare;
DTMDB.FinalPlaca.Open;
Q[I]:=DTMDB.FinalPlaca.RecordCount;
END;
AGORA PASSEI PARA PARA O DBEXPRESS..
TENHO UM SQLCONNECTION,UM SQLQUERY(FINALPLACA),UM DATASETPROVIDER(DSPFINALPLACA),UM CLIENTDATASET(CDSFINALPLACA), UM DATASOURCE(DSFINALPLACA)..
USO A MESMA SQL ACIMA NO SQLQUERY..
E FAÇO A CHAMADA DEPOIS DA SEGUINTE FORMA..
DT1:= COPY(DATETOSTR(DTINICIAL.DATE),4,2)+´/´+COPY(DATETOSTR(DTINICIAL.DATE),1,2)+´/´+COPY(DATETOSTR(DTINICIAL.DATE),7,4);
DT2:= COPY(DATETOSTR(DTFINAL.DATE),4,2)+´/´+COPY(DATETOSTR(DTFINAL.DATE),1,2)+´/´+COPY(DATETOSTR(DTFINAL.DATE),7,4);
FOR I:= 0 TO 9 DO
BEGIN
DTMDB.CDSFinalPlaca.Close;
DTMDB.CDSFinalPlaca.Params.ParamByName(´FINAL´).ASSTRING:= ´¬´+INTTOSTR(I);
DTMDB.CDSFinalPlaca.Params.ParamByName(´DTINCIAL´).ASSTRING:= DT1;
DTMDB.CDSFinalPlaca.Params.ParamByName(´DTFINAL´).ASSTRING:= DT2;
// DTMDB.QUERY2.Prepare;
DTMDB.CDSFinalPlaca.Open;
Q[I]:=DTMDB.CDSFinalPlaca.RecordCount;
END;
.
SÓ QUE NESSA OS VALORES SEMPRE DÃO ZERO.. PELOS TESTES QUE FIZ É UM PROBLEMA NO LIKE..
VCS ESTÃO VENDO ONDE ESTOU ERRANDO
VALEU MESMO
ERIC :cry: :cry: :cry:
Eric.miranda
Curtir tópico
+ 0Posts
18/11/2004
Gandalf.nho
Gostei + 0
18/11/2004
Eric.miranda
qto a data.. não me importa mto não..
até poderia excluir ela da consulta.. o importante pra mim era o like..
que não funciona não sei pq.. o pior é que funciona com a query...
abraço e obrigado pela força
Eric
Gostei + 0
18/11/2004
Vinicius2k
A único *possível* problema que vejo, à princípio, é o fato de vc ter a instrução SQL na SQLQuery, mas estar passando os parametros no ClientDataSet, sem chamar o método FetchParams antes de passar os valores...
... DTMDB.CDSFinalPlaca.Close; DTMDB.CDSFinalPlaca.FetchParams; // <-- acrescente esta linha DTMDB.CDSFinalPlaca.Params.ParamByName(´FINAL´).ASSTRING:= ´¬´+INTTOSTR(I); DTMDB.CDSFinalPlaca.Params.ParamByName(´DTINCIAL´).ASSTRING:= DT1; DTMDB.CDSFinalPlaca.Params.ParamByName(´DTFINAL´).ASSTRING:= DT2; DTMDB.CDSFinalPlaca.Open; ...
Espero ter ajudado...
T+
Gostei + 0
19/11/2004
Eric.miranda
fiz o mesmo teste no interbase e funciona..
o sqlserver trata de forma diferente o like???
Gostei + 0
19/11/2004
Gandalf.nho
Gostei + 0
19/11/2004
Vinicius2k
Humm... faz muito sentido !
Eric, lembra-se do seu problema anterior com as colunas DateTime que são interpretadas como SQLTimeStamp no dbExpress?
A forma como vc está informando as datas para os parametros, pode não estar sendo interpretada corretamente...
T+
Gostei + 0
19/11/2004
Eric.miranda
estou tentando usar só o like agora..
teria como vcs fazerem um exemplozinho de consulta do sqlserver usando o bd northwind só pra ver se é pau no meu sqlserver??
se tiver ficaria mto grato a vcs..
meu email é eric@politran.com.br
está estourando meu prazo e eu não consigo..
valeu mesmo pela força de vcs..
Gostei + 0
22/11/2004
Eric.miranda
>percebi que no meu usava o campo do tipo char.. qdo mudei para varchar ele
>funcionou perfeitamente..
>
>valeu pela ajuda ajuda de todos, especialmente o Vinicius que me mandou um exemplo e me ajudou mto.. que Deus lhe pague..
>
>abraço
>Eric
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)