dbExpress Error

Delphi

12/07/2005

Pessoal, muito bom dia!!!

Estou tentando usar DBExpress (SQLQuery, ClientDataSet, DataSetProvider, etc.) com SQL Server.

Já fiz a conexão com o banco.
Criei um cadastro pequeno só pra testar.
Liguei os componentes corretamente. Até ai, blz!!!

Dentro do SQLQuery, passei a seguinte query:
select ID_CLIENTE, NOME, CPF, CIDADE, ESTADO, ENDERECO, CEP, DATACADASTRO
from CLIENTES
where ID_CLIENTE like :P_IDCLI
order by NOME

Ai que vem o erro: quando eu clico na propriedade Active para passar para True, da o seguinte erro:
Database Server Error: SQL State: HY000, SQL Error Code: 0
Invalid input parameter values. Check the status values for detail.
Ai, eu tiro a cláusula where o erro para. Mas quero passar parâmetro na query.

O que pode ser isso???
Alguém pode me ajudar???

Obrigado!!!

Cristiano Mário


Cristianojedi

Cristianojedi

Curtidas 0

Respostas

Beppe

Beppe

12/07/2005

Vc precisa inicialar o parâmetro P_IDCLI antes de abrir.


GOSTEI 0
Cristianojedi

Cristianojedi

12/07/2005

Como assim inicializar o parâmetro P_IDCLI ???

Como eu faço isso ???

Obrigado!!!

Cristiano Mário


GOSTEI 0
Beppe

Beppe

12/07/2005

Oi!

Tempo de projeto: veja a propriedade Parameters(ou Params), terá um ítem chamado P_IDCLI. Duplo-clique e dê um valor a ele.

ou

Tempo de execução: DataSet1.Params(´ P_IDCLI´).AsInteger := algum id;


GOSTEI 0
Cristianojedi

Cristianojedi

12/07/2005

Isso não resolveu o problema, amigo!!!

Tem mais alguma sugestão???
Alguém sabe o que pode ser???

PS: Estou usando Delphi 2005 com SQL Server 2000.

Obrigado!!!

Cristiano Mário


GOSTEI 0
Cristianojedi

Cristianojedi

12/07/2005

Mais ninguém pode me ajudar???

Cristiano


GOSTEI 0
Eduardo Pereira

Eduardo Pereira

12/07/2005

Verifica se a propriedade ´DataType´ do parâmetro está setada corretamente. Por default ela fica ajustada em ´tfUnknow´. Mude para ´ftInteger´ (ou ´ftString´ se ID_CLIENTE for string)

[]´s
Eduardo Pereira


GOSTEI 0
Cristianojedi

Cristianojedi

12/07/2005

Esta propriedade ´DataType´ do parâmetro está setada corretamente: ftInteger.

O problema não é esse!!!

Mais alguma sugestão???

Cristiano


GOSTEI 0
Eduardo Pereira

Eduardo Pereira

12/07/2005

Essa é no chute (já que não tenho experiência com MS-SQL Server):

No SQL, torca o ´like´ por ´=´


GOSTEI 0
Cristianojedi

Cristianojedi

12/07/2005

Já tentei!!! Não é isso.

Continuo com o problema.

Tem mais alguém que possa me ajudar???

Cristiano


GOSTEI 0
Kotho

Kotho

12/07/2005

Você precisa informar o tipo do campo (DataType) e o tipo do parâmetro (ParamType)...

O ParamType, normalmente é ptInput.

O DataType varia de banco para banco... No meu caso, eu utilizo Oracle...

Para Char ou Varchar -> ftString
Para Date -> ftTimeStamp
Para Number -> ftBCD

Quanto ao valor, não é necessário para setar Active como True, à menos que se queira checar, por meio de DataControls, os valores...


GOSTEI 0
Cristianojedi

Cristianojedi

12/07/2005

Já informei o tipo do campo (DataType) e o tipo do parâmetro (ParamType). O campo é inteiro e autoincremento Defini assim:
DataType -> ftInteger
ParamType -> ptImput, e continua dando o mesmo erro.
Já tentei outros tipos de DataType e ParamType, só que não resolveu. Tem alguma coisa errada e não consigo descobrir o que é.

Fiz um teste e alterei a query para:
select ID_CLIENTE, NOME, CPF, CIDADE, ESTADO, ENDERECO, CEP, DATACADASTRO
from CLIENTES
where NOME like :P_NOME
order by NOME
Passei corretamente o parâmetro e não ocorreu o erro.

Só que eu quero passar o campo ID_CLIENTE como parãmetro e não o campo NOME como parâmetro.

Mais alguém para me ajudar???

Cristiano


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/07/2005

não use o like, use =, pois seu campo é numérico.

utilizo o sql server com dbexpress e não tenho nenhum tipo de erro. inclusive posso dizer que as dicas dos colegas estão corretas.


GOSTEI 0
Cristianojedi

Cristianojedi

12/07/2005

Amigo,

Tenho plena certeza que as dicas dos colegas estão corretas.

Eu coloquei ´=´ ao invés de ´like´ e ainda não resolveu o problema.

Realmente está difícil de descobrir.

Obrigado!!!

Cristiano


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/07/2005

os valores estão sendo atribuídos no SQLDataset ou no ClientDataset?

a instrução deve ficar no SQLDataset, mas toda e qualquer manipulação deve ser feita no ClientDataset: passagem de parâmetros, abertura, fechamento e demais ações.


GOSTEI 0
Cristianojedi

Cristianojedi

12/07/2005

Sim, está tudo da forma que falou!!!

Vou ver o que eu arrumo aqui. Se eu ver alguma solução, eu coloco no fórum. Deve ser alguma bobeirinha. Vou dar uma olhada detalhada depois.

Abraços e muito obrigado!!!

Cristiano


GOSTEI 0
Beppe

Beppe

12/07/2005

Pode colocar o .dfm aqui? Só o CDS e o SQLCon.

Já tentou refazer do zero?


GOSTEI 0
POSTAR