Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Sorting a dataset
Message
De
18/07/2013 03:51:23
 
 
À
17/07/2013 14:51:34
Information générale
Forum:
ASP.NET
Catégorie:
Autre
Versions des environnements
Environment:
VB 9.0
OS:
Windows 7
Network:
Windows 2003 Server
Database:
MS SQL Server
Application:
Web
Divers
Thread ID:
01578641
Message ID:
01578687
Vues:
47
>I have this weird situation that I just found and I would like to know if some of you knows something about it.
>
>In my data class, since five years, I have the ability to define a sort field on a dataview. Then, I can scan the dataset rows and they appear in the order of the sort. This has worked well so far but they all have one thing in common. Wherever I was using that, so far, in several applications, it was always on a dataset that I created all the rows manually. Those dataset were not created from a SQL select. So, doing this:
>
>
>        Public oDataSet As DataSet = New DataSet
>        Private oDataView As DataView = New DataView
>
>            oDataSet.Tables.Add("Temp")
>
>            oDataSet.Tables(0).Columns.Add("Extension", GetType(System.String))
>            oDataSet.Tables(0).Columns.Add("LastUpdate", GetType(System.DateTime))
>            oDataSet.Tables(0).Columns.Add("Name", GetType(System.String))
>            oDataSet.Tables(0).Columns.Add("Size", GetType(System.Int32))
>            oDataSet.Tables(0).Columns.Add("JustName", GetType(System.String))
>            oDataSet.Tables(0).Columns.Add("CreationTime", GetType(System.DateTime))
>
>            ' Create the view
>            oDataView = oDataSet.Tables(0).DefaultView
>
>            ' Sort the dataset into the primary key
>            oData.oDataView.Sort = "AI"
>
>            ' For each record
>            For lnCounter = 0 To oData.nCount - 1
>                loRow = oData.oRows(lnCounter)
>
>            Next
>
>
>...is working ok.
>
>But, if I create the dataset from a SQL select such as:
>
>
>                Using loSQLConnection As New SqlConnection(oApp.aConnection(nConnectionString, 1))
>                     oCommand.Connection = loSQLConnection
>                     oDataAdapter.Fill(oDataSet)
>                End Using
>
>                ' Adjust to our default name
>                oDataSet.Tables("Table").TableName = "Temp"
>
>                ' Record count
>                nCount = oDataSet.Tables("Temp").Rows.Count
>
>                oDataView = New DataView
>
>                ' If we have no record
>                If nCount = 0 Then
>                    oRows = Nothing
>                Else
>                    oDataView = oDataSet.Tables("Temp").DefaultView
>                    oRows = oDataSet.Tables("Temp").Rows()
>                End If
>
>                ' Sort the dataset into the primary key
>                oData.oDataView.Sort = "AI"
> 
>                ' For each record
>                For lnCounter = 0 To oData.nCount - 1
>                    loRow = oData.oRows(lnCounter)
>
>                Next
>
>
>...this will not work. I would have to do this in order for the sort to work:
>
>
>        For Each loRowView In oData.oDataView
>        Next
>
>
>Anyone knows why I am forced to use the oData.oDataView approach to have my For Next to scan the records in the sort order when this is build from a SQL select and can obtain the sorting directly from the oDataSet.oRows when I create the dataset manually?

If oData is the table (code doesn't show what it is) then in the first instance you are looping thru that (unsorted) and in the second you are (correctly) using the DataView.

IAC it might be better to use the DataView constructor to specify the sort order (http://msdn.microsoft.com/en-us/library/8sd1cd0a.aspx) rather than using the defaultview reference -

"Creating a DataView without specifying sort or filter criteria and then setting the Sort, RowFilter, or RowStateFilter properties later causes the index to be built at least twice: once when the DataView is created, and again when any of the sort or filter properties are modified." (http://msdn.microsoft.com/en-us/library/hy5b8exc.aspx)
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform