dbExpress Error
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
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
Curtidas 0
Respostas
Beppe
12/07/2005
Vc precisa inicialar o parâmetro P_IDCLI antes de abrir.
GOSTEI 0
Cristianojedi
12/07/2005
Como assim inicializar o parâmetro P_IDCLI ???
Como eu faço isso ???
Obrigado!!!
Cristiano Mário
Como eu faço isso ???
Obrigado!!!
Cristiano Mário
GOSTEI 0
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;
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
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
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
12/07/2005
Mais ninguém pode me ajudar???
Cristiano
Cristiano
GOSTEI 0
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
[]´s
Eduardo Pereira
GOSTEI 0
Cristianojedi
12/07/2005
Esta propriedade ´DataType´ do parâmetro está setada corretamente: ftInteger.
O problema não é esse!!!
Mais alguma sugestão???
Cristiano
O problema não é esse!!!
Mais alguma sugestão???
Cristiano
GOSTEI 0
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 ´=´
No SQL, torca o ´like´ por ´=´
GOSTEI 0
Cristianojedi
12/07/2005
Já tentei!!! Não é isso.
Continuo com o problema.
Tem mais alguém que possa me ajudar???
Cristiano
Continuo com o problema.
Tem mais alguém que possa me ajudar???
Cristiano
GOSTEI 0
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...
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
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
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
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.
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
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
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
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.
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
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
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
12/07/2005
Pode colocar o .dfm aqui? Só o CDS e o SQLCon.
Já tentou refazer do zero?
Já tentou refazer do zero?
GOSTEI 0