ADOStoredProcedure

Delphi

12/02/2004

Estou utilizando o componente ADOStoredProcedure da paleta ADO, para fazer uma chamada a uma Procedure no SQL Server.
A procedure esta funcionando, mas não consigo chama-la pelo Delphi!
A procedure, recebe 4 parametros ( string, todos eles ) e ele diz que não encontra o parametro!

O que estou fazendo de errado? :roll:

1. Adciono o Componente ADOStoredProcedure!
2. Crio a string de conexão com o SQL-Server ( propriedade: ConnectionString )
3. Seleciono o nome da Procedure ( propriedade: procedureName )

Obrigado.


Jack_loco

Jack_loco

Curtidas 0

Respostas

Cbritojunior

Cbritojunior

12/02/2004

Verifique na propriedade Parameters do ADOStoredProcedure se todos os seus parametros estão lá. Além de verificar se os tipos de parametros estão corretos. Se todos são strings como vc disse, todos devem estar como ftString. Verifique também o size do campo. Se ainda sim vc tiver problemas acesse os parametros pelos seus índices, mas lembre-se sempre o primeiro parametro de procedures é o @RETURN_VALUES, portanto o seu primeiro parametro será 1.

with ADOStoredProcedure
begin
Parameter[1].Value := ...;
.
.
Paramater[n].Value : ...;
ExecProc;
end;


GOSTEI 0
Cbritojunior

Cbritojunior

12/02/2004

outra coisa....
além de ter esquecido do ´do´ na intrução, não se esqueça
que todo parâmetro ou variável em Transact-SQL começam por ´@´. Portanto quando vc chamar o parametro pelo nome coloque ´@nome´


GOSTEI 0
Jack_loco

Jack_loco

12/02/2004

procedure TformMain.IWButton1Click(Sender: TObject);
begin
ADOStoredProc1.ProcedureName := ´CONSULTA_PRODUTIVIDADE_SECAO´;
ADOStoredProc1.Parameters.AddParameter.Name := ´@RETURN_VALUE´;
ADOStoredProc1.Parameters.AddParameter.DataType := ftInteger;
ADOStoredProc1.Parameters.AddParameter.Direction := pdReturnValue;
ADOStoredProc1.Parameters.AddParameter.Name := ´@CODAREA´;
ADOStoredProc1.Parameters.AddParameter.DataType := ftWideString;
ADOStoredProc1.Parameters.AddParameter.Direction := pdInput;
ADOStoredProc1.Parameters.AddParameter.Name := ´@DATAINICIAL´;
ADOStoredProc1.Parameters.AddParameter.DataType := ftDateTime;
ADOStoredProc1.Parameters.AddParameter.Direction := pdInput;
ADOStoredProc1.Parameters.AddParameter.Name := ´@DATAFINAL´;
ADOStoredProc1.Parameters.AddParameter.DataType := ftDateTime;
ADOStoredProc1.Parameters.AddParameter.Direction := pdInput;
ADOStoredProc1.Parameters.ParamByName(´@CODAREA´).Value := cbosetor.Text;
ADOStoredProc1.Parameters.ParamByName(´@DATAINICIAL´).Value := dtpde.Date;
ADOStoredProc1.Parameters.ParamByName(´@DATAFINAL´).Value := dtpate.Date;

ADOStoredProc1.Prepared;
ADOStoredProc1.ExecProc;
end;

Ocorre o seguinte erro, quando executo:

´Parameter object is improperly defined. Inconsistent or incomplete information was provided´

Alguem sabe o que devo fazer?

Essa StoredProcedure é definida todos os parametros e propriedades em run-time, pois a utilizo para acessar outras StoredProcedures!!!


GOSTEI 0
POSTAR