Ciao a Tutti!!!
Ho una stored_procedure che mi restituisce l'IDFotografia, sia nel caso di inserimento di una nuova fotografia che nel caso di modifica, di una foto già presente.
Il mio problema è che non riesco a sapere questo IDFotografia da una
procedura che ho creato in VB. L'errore si genera sull'istruzione
mioCmd.Execute ed è questo:
Errore di run-time '-2147217913 (800040e07)':
[Microsoft][ODBC SQL Server] Si è verificato un errore durante la
conversione del tipo di dati da varchar a int.
Dov'è che sbaglio?
La store_procedure e la sub sono le seguente:
codice:
CREATE PROCEDURE sp_SalvatbFotografie
@mioIDFotografia INT = 0,@mioNomeFotografia varchar(50), @miaDescrizione
varchar(500)
AS
IF @mioIDFotografia=0
BEGIN
INSERT INTO tbFotografie (NomeFotografia,Descrizione) VALUES
(@mioNomeFotografia, @miaDescrizione)
END
ELSE
BEGIN
UPDATE tbFotografie SET NomeFotografia=@mioNomeFotografia,
Descrizione= @miaDescrizione
WHERE IDFotografia = @mioIDFotografia
END
select @mioIDFotografia = @@identity
GO
Public Sub Salvataggio()
Dim mioCmd As New ADODB.Command
Dim mioPar As ADODB.Parameter
'Oggetto Command per lanciare la stored procedure
mioCmd.CommandType = adCmdStoredProc
mioCmd.CommandText = "sp_SalvatbFotografie"
mioCmd.ActiveConnection = miaConn
'Il parametro di ritorno per primo
Set mioPar = New ADODB.Parameter
mioPar.Direction = adParamReturnValue
mioPar.Name = "RETURN_VALUE"
mioPar.Type = adInteger
mioPar.Size = 4
mioCmd.Parameters.Append mioPar
'Poi tutti gli altri, ecco un esempio del primo
Set mioPar = New ADODB.Parameter
mioPar.Direction = adParamInput
mioPar.Name = "@mioNomeFotografia"
mioPar.Type = adVarChar
mioPar.Size = 50
mioPar.Value = txtNomeFotografia.Text
mioCmd.Parameters.Append mioPar
Set mioPar = New ADODB.Parameter
mioPar.Direction = adParamInput
mioPar.Name = "@miaDescrizione"
mioPar.Type = adVarChar
mioPar.Size = 500
mioPar.Value = txtDescrizione.Text
mioCmd.Parameters.Append mioPar
'Dopo aver costruito i parametri lancio la stored
mioCmd.Execute
'e quindi recupero il valore di ritorno
If mioIDFotografia = 0 Then mioIDOut = mioCmd.Parameters(0).Value
End Sub
Grazie Mille a Tutti!!!