Estou trabalhando em projeto Access acessando um BD SQL Server, para inserção de dados, criei a seguinte Stored Procedure:
ALTER PROCEDURE [dbo].[sp_InsercaoEPI_Requisicao]
(
@id_EPI_EmpregadoRequisicao int output,
@id_Empregado int,
@dataRequisicao DateTime,
@id_tipoDeFornecimentoEPI int
)
AS
INSERT INTO EPI_EmpregadoRequisicao ( id_Empregado, dataRequisicao, id_tipoDeFornecimentoEPI )
VALUES (@id_Empregado, @dataRequisicao, @id_tipoDeFornecimentoEPI)
SET @id_EPI_EmpregadoRequisicao = SCOPE_IDENTITY()
Para executar a Stored Procedure e obter o ID do registro criado, estou usando o código:
Set cmd = New ADODB.Command
Dim ret
'Criar Requisição
With cmd
.ActiveConnection = cn
.CommandType = adCmdStoredProc
.Parameters.Append cmd.CreateParameter("@id_Empregado", adBigInt, adParamInput, , lng_idEmpregado)
.Parameters.Append cmd.CreateParameter("@dataRequisicao", adDate, adParamInput, , FormatDateTime(Now, vbShortDate))
.Parameters.Append cmd.CreateParameter("@id_tipoDeFornecimentoEPI", adBigInt, adParamInput, , Me.cbo_tipoDeFornecimento.Value)
.Parameters.Append cmd.CreateParameter("@id_EPI_EmpregadoRequisicao", adBigInt, adParamOutput)
.CommandText = "sp_InsercaoEPI_Requisicao"
.Execute , , adExecuteNoRecords
End With
ret = cmd.Parameters("@id_EPI_EmpregadoRequisicao")
O meu problema está em recuperar o valor do parâmetro (@id_EPI_EmpregadoRequisicao) que contem o valor do id do registro incluído. Ao executar o comando (.execute) aparece a mensagem:
"Conversão implícita de tipo de dados para int não é permitido. Use a função CONVERT para executar esta consulta"