ADOStoredProcedure
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.
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
Curtidas 0
Respostas
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;
with ADOStoredProcedure
begin
Parameter[1].Value := ...;
.
.
Paramater[n].Value : ...;
ExecProc;
end;
GOSTEI 0
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´
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
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!!!
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