Newsgroup: it.comp.lang.visual-basic
Titolo: [VB+SQL Server] Errore di conversione

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:
 
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!!!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Manca un parametro nella collection Parameters?
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

 Manca un parametro nella collection Parameters?
No, ho due parametri e un ID che deve essere restituito dalla
stored_procedure.



Perdonami se insisto ma allora "@mioIDFotografia" cos'è se non un parametro?
Inoltre hai specificato, nella collection parameters, "RETURN_VALUE" quandi
la procedure non ritorna nulla!!!
Se vuoi usare "@mioIDFotografia" come parametro di output devi scrivere :
CREATE PROCEDURE sp_SalvatbFotografie
 @mioIDFotografia INT = 0 OUT ,
 @mioNomeFotografia varchar(50),
 @miaDescrizione varchar(500)
Ti consiglio di usare
    mioCmd.Parameters.Refresh
per popolare la collection parameters fai prima.
Ciaooo


 per popolare la collection parameters fai prima.
salve,
concordo con quanto riportato da nk6310i, tranne sul fatto di effettuare
mioCmd.Parameters.Refresh...
questa operazione e' molto costosa in termini di roundtrip sulla rete... va
benissmo per il test e debug, ma poi rimuovilo al rilascio...
saluti
Andrea Montanari
montanar...@virgilio.it
http://www.asql.biz/DbaMgr.shtm
DbaMgr2k ver 0.2.0  -  DbaMgr ver 0.48.0
(my vb6+sql-dmo little try to provide MS MSDE 1.0 and MSDE 2000 a visual
interface)
--------- remove DMO to reply

 per popolare la collection parameters fai prima.
Ora funziona!!!! Evvai!! Sono contenta!:)
Ho fatto quel cambiamento nella stored_procedure che hai detto tu, e nella
sub ho sostituito: 
mioPar.Direction = adParamReturnValue
mioPar.Name = "RETURN_VALUE"
con
mioPar.Direction = adParamInputOutput
mioPar.Name = "@mioIDFotografia"
Grazie Mille per l'aiuto!!! SMACK!!!!


 benissmo per il test e debug, ma poi rimuovilo al rilascio...
Ora funziona, grazie!!!
Ciao!!!!


 questa operazione e' molto costosa in termini di roundtrip sulla rete...
va
 Questo mi è nuova, se lo dici probabilmente lo hai verificato.
 Però è comoda ;-P
Ciaoo


 Grazie Mille per l'aiuto!!! SMACK!!!!
  Di nulla!!!
  ( SMACK!!?? sei una ragazza si? hehehe ;-) )


   ( SMACK!!?? sei una ragazza si? hehehe ;-) )
Yes!!! Sono una fanciulla:)


 Yes!!! Sono una fanciulla:)
  Meno male per un attimo ho temuto di aver rimediato un bacio telematico da
un'uomo!!!
 Ciaooo
