Fórum dbExpress - sqlQuery - Com parâmetros não vai!!! #204304

05/01/2004

0

Estou começando a utilizar a palheta dbExpress, mas assim que tentei passar um select de uma query do BDE para uma sqlQuery do dbExpress me senti frustrado pois a mesma só abre se eu substituir os parâmetros (:alguma_coisa) por valores (´alguma_data´) por exemplo. Gostaria de saber se alguém já obteve o mesmo erro e se/como solucionou, grato, João Paulo.


Jpaulorio

Jpaulorio

Responder

Posts

05/01/2004

Lucas Silva

Pelo que sei...
Se a query tem parâmetros, quando voçê for abrir ela sempre tem que dar uma valor para estes parâmetros, se não ela não te retorna nenhum resultado.

Lucas!


Responder

Gostei + 0

06/01/2004

Jpaulorio

Eu sei... mas quando digo que substituo os parâmetros não é em tempo de execução, mas sim em tempo de design. No BDE quando vc abre uma query em tempo de design não é necessário passar valores para os parâmetros, não sei se com dbExpress é a mesma coisa. Mas mesmo assim... qnd passo os parâmetros em tempo de execução a query não abre e retorna um erro.


Responder

Gostei + 0

08/01/2004

Jpaulorio

Acredito que generalizei demais na primeira mensagem. Acredito que o problema só aparece quando uso parâmetros dentro de uma subquery,
sds, João Paulo.


Responder

Gostei + 0

08/01/2004

Lucas Silva

você configurou os Parâmetros no Delphi??


[b:07dc2561e4]Nas propriedades da query -> Params...[/b:07dc2561e4]

Lucas!


Responder

Gostei + 0

08/01/2004

Marcelo.almeida

já tentou ligar o SqlQuery no ClientDataSet, e clicar com o botão direito no ClientDataSet e clicar no FetchParams
O FetchParams busca os parametros da query e vc passa a direcionar o codigo para ClientDataSet.

Tipo

ClientDataSet.Params.ParamByName(´Codigo´).AsInteger := Int_Codigo;

Até mais
Marcelo


Responder

Gostei + 0

10/01/2004

Jpaulorio

Pessoal já tentei tudo isso e mais um pouco... na realidade eu dissequei o meu select até que a query abrisse... e descobri algumas coisas....

Parâmetros do tipo datetime não são aceitos... se tentar abrir uma query com esse tipo de parâmetro aparecerá o erro ´invalid field type´

Parâmetros dentro de sub-select também não vai... o erro deixa isso bem claro...

Parâmetros dentro de funções, case... nem pensar...

Para aqueles que defendem o dbExpress vai um recado... só vou usar no dia em que eu pegar o meu select que está numa query BDE e puder abrí-lo sem ter que fazer gambiarras e coisas do tipo... abraço, João Paulo


Responder

Gostei + 0

28/02/2004

Roberson

No meu caso estah dando o mesmo erro...

Porem eu descobri que soh dah o erro de invalid data type quando eu coloco asinteger ou as datetime.

Acredito que tenho uma explicacao para isto: como o acesso eh direto ao banco, o proprio nao tem estes tipos integer e datetime. No meu caso em que desenvolvo com Oracle o mesmo utiliza number para identificar um tipo integer.

Agora teria que achar uma propriedade no componente para que ele entenda estes tipos, ou mesmo faça algum tipo de alteração.

Espero ter ajudado de alguma forma.


Responder

Gostei + 0

28/02/2004

Everton

João Paulo, acho que o seu problema é o mesmo do Roberson ... ao invés de colocar AsDateTime coloque AsDate.


Responder

Gostei + 0

01/04/2004

Jpaulorio

estou decepcionado com o dbExpress...
não sei se tem a ver com eu usar o mssql 2000, mas não consigo usar parâmetros do tipo date ou datetime... não posso usar parametros dentro de sub-selects.... será q ele só funciona com o interbase?? e ainda tem gente que critica o BDE...


Responder

Gostei + 0

03/04/2004

Jurandi

PARA QUEM ESTÁ USANDO DBEXPRESS COM DELPHI 6.

COM DB ORACLE E PARAMETROS DO TIPO DATE E DATETIME PASSEM PARAMETROS DO TIPO SQLTIMESTAMP.

VEJAM AS POSSIVEIS FUNCOES DE CONVERSAO NO HELP.

SqlWork.ParamByName(´Data_Inicial´).asSqlTimeStamp := DateTimeToSqlTimeStamp(WData_Inicial);


Responder

Gostei + 0

07/05/2004

Jpaulorio

bem... dessa vez foi a gota d´água... aqui vai o seguinte select:

SELECT CLIE_ID FROM TBCLIE WHERE CLIE_ID = :CLIE_ID

vamos lá... a tabela em questão (TBCLIE) se encontra num banco de dados MSSQL 2000. O campo CLIE_ID é do tipo SMALLINT.
Nem preciso dizer que esse select abre numa query do BDE sem problemas, mas com o DBEXPRESS....
Coloquei esse select na propriedade command text de um TSQLDATASET
e ele automaticamente setou o tipo do parâmetro :CLIE_ID para smallint.

Logo pensei... dessa vez vai... mas...

Agora tenta ativar o dataset.... nem com reza braba... o erro:
INVALID PARAMETER

Então eu pergunto... é a minha DLL q não funciona direito? Esqueci alguma coisa? Ou o quê?

Abraço, João Paulo.


Responder

Gostei + 0

07/05/2004

Fer_nanda

Pelo que sei... Se a query tem parâmetros, quando voçê for abrir ela sempre tem que dar uma valor para estes parâmetros, se não ela não te retorna nenhum resultado.


O Lucas tem razão, vc precisa passar algum valor para o parametro, provavelmente vc está tentando ativá-lo em tempo de projeto não é? então faça o seguinte teste: na propriedade value do parametro CLIE_ID coloque 1, depois tente ativar.


Responder

Gostei + 0

07/05/2004

Emerson Nascimento

os campos do tipo DateTime devem receber parâmetros do tipo TimeStamp.


Responder

Gostei + 0

07/05/2004

Jpaulorio

[quote:c104b0ba02] Pelo que sei... Se a query tem parâmetros, quando voçê for abrir ela sempre tem que dar uma valor para estes parâmetros, se não ela não te retorna nenhum resultado.


O Lucas tem razão, vc precisa passar algum valor para o parametro, provavelmente vc está tentando ativá-lo em tempo de projeto não é? então faça o seguinte teste: na propriedade value do parametro CLIE_ID coloque 1, depois tente ativar.[/quote:c104b0ba02]

Se eu trocar o campo ex: SELECT FANT FROM TBCLIE WHERE FANT = :FANT (fant é do tipo varchar)

daí funciona mesmo sem passar valor pro parâmetro em tempo de projeto :)

Acredito que o problema esteja no tipo int e smallint, alguma coisa no driver do dbExpress... a mesma coisa q acontece com o tipo datetime.


Responder

Gostei + 0

07/05/2004

Kotho

no Oracle eu utilizo ftBCD para parametros numéricos...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar