dbexpress com o comando like??
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:
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
Curtidas 0
Respostas
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
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
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
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...
Espero ter ajudado...
T+
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
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???
fiz o mesmo teste no interbase e funciona..
o sqlserver trata de forma diferente o like???
GOSTEI 0
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
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
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..
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
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
>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