Così a prima vista mi sembra che la tua funzione 'crea_dreader' non ritorni nessun dato o sbaglio?
Forse così va meglio...
codice:Public Function crea_dreader(ByVal sql As String) as SqlClient.SqlDataReader 'Creazione datareader, viene passata la stringa sql da eseguire Dim objCommand As SqlClient.SqlCommand Dim objReader As SqlClient.SqlDataReader Dim cnPath As String cnPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\cn.txt" Dim objConnection As New SqlClient.SqlConnection objConnection.ConnectionString = verNameFile(cnPath) objConnection.Open() If (objConnection.State = ConnectionState.Open) Then objCommand = New SqlClient.SqlCommand(sql, objConnection) objReader = objCommand.ExecuteReader() 'objReader = Nothing objConnection.Close() Return objReader End If End Function![]()