Questione : L'oggetto di Datareader è già messaggio aperto

Ciao,

I che prova a convincere il seguente codice per funzionare.  Una delle discussioni è un oggetto della lista.  Sto provando a collegare attraverso gli oggetti nel lstTechCode ed a restituire un oggetto della lista.  Quando faccio funzionare il codice io ottenere un messaggio di errore che un oggetto del datareader è già aperto.  
class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
funzione comune >Public notpretty GetDatasetList (strMetricName " del class= " del id= " codeSnippet853502 del
           
class= del

Risposta : L'oggetto di Datareader è già messaggio aperto

la prova che gradice questo… dovrebbe funzionare, ma non provato perché non ho lo storedprocedure ecc.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
Funzione comune pubblico GetDatasetList (strMetricName di ByVal come strInputCode di ByVal, della stringa come lstTechCode come lista (di TechnologySet), ByVal di ByVal, della stringa intSelectedYear come numero intero) come lista (di DataSetClass)
        Datasetlist fioco come nuova lista (di DataSetClass)
        CnSql fioco come SqlConnection = BadsDB.GetConnection
        cmdA fioco come SqlCommand
        Lettore fioco come SqlDataReader = niente
        cmdA = nuovo SqlClient.SqlCommand (“up_GetGraphReportDataset„, CnSql)
        cmdA.CommandTimeout = 7200
        Prova
            Per ogni t come TechnologySet nel lstTechCode
                Con cmdA
                    .CommandType = CommandType.StoredProcedure
                    . Parameters.AddWithValue (“@MetricName„, strMetricName.ToString)
                    . Parameters.AddWithValue (“@InputCode„, strInputCode.ToString)
                    . Parameters.AddWithValue (“@TechnologySetCode„, t.TechnologySetCode.ToString)
                    . Parameters.AddWithValue (“@BudgetYear„, intSelectedYear)
                Estremità con
                Se CnSql.State = ConnectionState.Closed allora
                    CnSql.Open ()
                Concluder se
                lettore = cmdA.ExecuteReader (CommandBehavior.CloseConnection)
                DataVersionIdOrd fioco come il numero intero = reader.GetOrdinal (“DataVersionId„)
                Dsc fioco come DataSetClass
                Fare mentre lettore. Leggere
                    dsc = nuovo DataSetClass
                    dsc.DataVersionId = reader.GetString (DataVersionIdOrd)
                    datasetlist. Aggiungere (dsc)
                Ciclo
            lettore. Chiuder ()
            cmdA.Parameters.Clear ()
            Dopo


        excA del fermo come SqlException
            MsgBox (excA.Message, excA.GetType.ToString)
        Infine
            CnSql.Close ()
        Prova di conclusione
        Datasetlist di ritorno
    Funzione di conclusione
Altre soluzioni  
 
programming4us programming4us