3 messaggi dal 06 marzo 2007
Ciao a tutti,

io sto utilizzando un datareader per gestire i dati provenienti da una interrogazione SQL, il problema nasce perchè nella logica di gestione utilizzo dei metodi che a volte prendono in ingresso la riga corrente altre volte la riga precente.
(non voglio utilizzare una DataTable)

La soluzione potrebbe essere implentare una datarow e passargli il contenuto del datareader ma nn riesco a farlo.....
501 messaggi dal 09 giugno 2006
Contributi
Ciao.

Molto più semplicemente puoi lavorare con banali array. Ti riporto un esempio che non è completo ma ti fornisce l'idea su come gestire il record corrente e quello precedente:

    ' VB.NET, .NET 2.0
    Sub Main()

        Dim rd As DbDataReader
        Dim rigaC() As Object = Nothing
        Dim rigaP() As Object = Nothing

        ' L'oggetto rd (DbDataReader) viene aperto ...

        Do While rd.Read()
            If rigaC IsNot Nothing Then
                rigaP = rigaC
            End If
            rigaC = Array.CreateInstance(GetType(Object), rd.FieldCount)
            rd.GetValues(rigaC)

            ' A questo punto:
            ' rigaC è un array di oggetti con i valori del record corrente (stessi valori del DbDataReader)
            ' rigaP è un array di oggetti con i valori del record precedente oppure è Nothing (la prima volta)

            ' Assumendo che rigaP non sia Nothing posso leggere il valore in questo modo.
            Dim codicePrecedente As String
            codicePrecedente = CType(rigaP(rd.GetOrdinal("CampoCodice")), String)
        Loop

    End Sub


Il codice può essere facilmente esteso per utilizzare collection/IList o altro in alternativa agli array in modo tale da bufferizzare il numero di righe richiesto dall'applicazione.

Ciao.

.:. Marcello Rutter .:.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.