TSqlClientDataSet - parametros en RunTime

27/09/2004

Ola a todos

Preciso passar Tres parametros para o Componente TSQlClientDateSet da paleta DbExpress
em tempo de execução (RunTime).
O Meu CommandText dentro do componente é o seguinte:

[color=blue:8c10f67649]Select F. COD_FILME,
F.COD_CLASS,
F.DATA_COMPRA,
F.TITULO_FILME,
C.DESC_CLASS
From VW_FILMES F
Join Vw_Classificacao C on (C.Cod_CLass = F.Cod_Class) [/color:8c10f67649]

Agora passo os parametros dessa maneira (em RunTime):

[color=green:8c10f67649] With Sql_Filmes do
begin
Close;
CommandText:= sql;// Select informado acima no CommandText do Comp.
CommandText:= CommandText+ ´ Where F.COD_CLASS= ´+IntToStr(CodClass);
CommandText:= CommandText+ ´ and F.DATA_COMPRA Between (´+ TRIM(EdtDataAnt.Text) +´)´;
CommandText:= CommandText+ ´ and (´+ TRIM(EdtDataAtual.Text) + ´)´;
CommandText:= CommandText+ ´ Order by F.COD_FILME´ ;
Memo1.Text := CommandText;
Open;
end;[/color:8c10f67649]

Agora meu CommandText ficou assim :

[color=blue:8c10f67649]Select F. COD_FILME,
F.COD_CLASS,
F.DATA_COMPRA,
F.TITULO_FILME,
C.DESC_CLASS
From VW_FILMES F
Join Vw_Classificacao C on (C.Cod_CLass = F.Cod_Class)
Where F.COD_CLASS = 1 and F.DATA_COMPRA Between (27/08/2004) and (26/09/2004)
Order by F.COD_FILME[/color:8c10f67649]

Quando executo a aplicação ela me retorna o seguinte erro :
´ Conversion error from string ´0´ ´
Ja mudei os formatos de data para [color=red:8c10f67649]´yyyy/dd/mm´ [/color:8c10f67649]e [color=red:8c10f67649]´mm/dd/yyyy´ [/color:8c10f67649]e mesmo assim ocorre o erro


não sei mais o que fazer , se ajguem puder me ajudar agradeço desde já...
ou se vc souber como adicionar parametros em rumtime par o componente
muito obrigado


Alexrol

Respostas

27/09/2004

Rômulo Barros

Problema simples, amigo.. já passei muito por isso utilizando o Oracle.

A sua data deve estar entre aspas. Veja:

Select F. COD_FILME,
F.COD_CLASS,
F.DATA_COMPRA,
F.TITULO_FILME,
C.DESC_CLASS
From VW_FILMES F
Join Vw_Classificacao C on (C.Cod_CLass = F.Cod_Class)
Where F.COD_CLASS = 1 and [color=red:14583da9ef]F.DATA_COMPRA Between (´27/08/2004´) and (´26/09/2004´)[/color:14583da9ef]
Order by F.COD_FILME

Para isso, uso o comando QuoteDStr();

Segue o código correto:

With Sql_Filmes do
begin
Close;
CommandText:= sql;// Select informado acima no CommandText do Comp.
CommandText:= CommandText+ ´ Where F.COD_CLASS= ´+IntToStr(CodClass);
[color=red:14583da9ef]CommandText:= CommandText + ´ and F.DATA_COMPRA Between (´+ QuoteDStr(TRIM(EdtDataAnt.Text)) +´)´;
CommandText:= CommandText+ ´ and (´+ QuoteDStr(TRIM(EdtDataAtual.Text)) + ´)´; [/color:14583da9ef]
CommandText:= CommandText+ ´ Order by F.COD_FILME´ ;
Memo1.Text := CommandText;
Open;
end;


Responder Citar