Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET] Problema con esecuzione storeprocedure

Piccolo problema da cui non riesco a venirne a capo.
Eccovi il codice della funzione incriminata.
If cn.State= ConnectionState.Closed Then
cn.Open()
End If
Dim tr As SqlTransaction = cn.BeginTransaction(IsolationLevel.Serializable)
Dim cmd1 As New SqlCommand("StatMissione", cn, tr)
cmd1.CommandType = CommandType.StoredProcedure
cmd1.Parameters.Add("@RETURN_VALUE", SqlDbType.Int)
cmd1.Parameters("@RETURN_VALUE").Direction = ParameterDirection.ReturnValue
cmd1.Parameters.Add("@IDMissione", SelMiss.IDMissione)
cmd1.Parameters.Add("@Oneri", SelMiss.Oneri)
cmd1.Parameters.Add("@Stato", SelMiss.Stato)
cmd1.Parameters.Add("@Bloccato", SelMiss.Bloccato)
cmd1.Parameters.Add("@IDOpe", SqlDbType.NVarChar, 20)
cmd1.Parameters("@IDOpe").Value = "0"
cmd1.Parameters("@IDOpe").Direction = ParameterDirection.InputOutput
Dim dr1 As SqlDataReader = cmd1.ExecuteReader
dr1.Close()
Ora tutto funziona lisco fino alla penultima riga.
La Store in oggetto non fa altro che controllare il DB e inserire o 
modificare un record.
Restituisce 0 se trova errori,Restituisce 1 se non trova errori e registra 
il valore della chiave della tabella nel parametro @IDOpe
Questo in teoria.
Invece, quello che ottengo, al momento  di eseguire la riga Dim dr1 as 
SqlDataReader = cm1.ExecuteReader è il classico:
Eccezione non gestita di tipo "System.Data.SqlClient.SqlException" in 
system.data.dll
Informazioni aggiuntive: Errore di sistema.
Ok, le ho provate tutte, ma non capisco cosa sta succedendo.
Guardando nel Visualizatore degli oggetti vedo che:
 dr1     Nothing     System.Data.SqlClient.SqlDataReader
quindi dr1 non è stato inizializzato.
Da qui comprendo che l'errore è appunto nella riga di definizione di dr1. Ma 
dove?
Sto impazzendo.
BTW per caso la Transazione aperta all'inizio potrebbe esserne la causa?
Inoltre, per ulteriori info... la Store così come è attualmente, e per i 
valor iche sto usando non dovrebbe mai ridare alcuna riga indietro (agisce 
su una tabella completamente vuota, è il primo inserimento che va a fare).
Vorrei evitare di mandare direttamente codice SQL con comandi testuali, 
vorrei usare le store. ma con .NET sto impazzendo.
BTW ho già visto la guida (F1), li mette la apertura della connessione prima 
di esegurie l'executereader, ma a me il risultato non cambia, sempre in 
errore.
Ora cercherò anche su google.
Si lo so dovevo farlo prima, ma so già che dalle vostre risposte partiranno 
altre domande da parte mia, tipo (e questa la pongo subito)
"Conviene Usare le Store Procedure od il classico comando SQL tramite 
composizione testuale della stringa SQL?"
Lo so a volte però con le store ..... puoi fare cose che via codice sarebbe 
difficile fare (tipo farti ridare immediatamente quale parametro l'IDENTITY 
dell'ultimo aggiornamento od insermento, ma altre volte.... 

 ha scritto nel messaggio news:...


 dr1.Close()
Hai provato a racchiudere il codice nella gestione errori, tipo:
 Try
            'codice
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
e leggere l'errore da ex.Message ?
Ave
giuseppeD
---
CCR
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it