dbexpress com o comando like??

Delphi

18/11/2004

estou tendo a maior dor de cabeça com esse like..
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

Eric.miranda

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

18/11/2004

Você mudou só de tecnologia de acesso ou mudou de banco de dados tb? Outra coisa, pq desmontar os parâmetros Data e passá-los como string? Pq não passa eles direto como tipo Date mesmo?


GOSTEI 0
Eric.miranda

Eric.miranda

18/11/2004

Caro colega.. continuo com o mesmo bd.. só mudei de tecnologia..
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
Vinicius2k

Vinicius2k

18/11/2004

Eric,

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
Eric.miranda

Eric.miranda

18/11/2004

Galera.. não estou entendendo mais nada..
fiz o mesmo teste no interbase e funciona..
o sqlserver trata de forma diferente o like???


GOSTEI 0
Gandalf.nho

Gandalf.nho

18/11/2004

Por via das dúvidas, refaça o teste sem as datas e veja se resulta em algo.


GOSTEI 0
Vinicius2k

Vinicius2k

18/11/2004

Por via das dúvidas, refaça o teste sem as datas e veja se resulta em algo.

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
Eric.miranda

Eric.miranda

18/11/2004

Galera tá complicado.. pq abandonei os parametros da data..
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
Eric.miranda

Eric.miranda

18/11/2004

Galera.. descobri o problema..
>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
POSTAR