当前,此代码获取列的唯一值 “文件夹”并返回说明的列。这是在VB中。
| Folder| Times
------------------------
| ABC | 3 |
| CDE | 2 |
| ACD | 2 |
| ABC | 1 |
这给了我一个新集合,其行名为Folder。 但是没有列时间。
如何修改代码,使其同时显示文件夹和时间列。 但是我只想检查文件夹列的唯一值。
预期结果
| Folder| Times
------------------------
| CDE | 2 |
| ACD | 2 |
Dim objUniqueValues As DataTable
Dim objSortedInput As DataTable
objUniqueValues = GetDataTable(ColumnName,"System.String")
InputCollection.DefaultView.Sort = ColumnName
objSortedInput = InputCollection.DefaultView.ToTable
Dim strValue As String
strValue = ""
Dim drInput as DataRow
For Each drInput in objSortedInput.Rows
If(strValue <> drInput(ColumnName))
strValue = drInput(ColumnName)
Dim row As DataRow = objUniqueValues.NewRow()
row(ColumnName) = strValue
objUniqueValues.Rows.Add(row)
End If
Next
UniqueValues = objUniqueValues
谢谢!
答案 0 :(得分:1)
我认为您想要的是一个文件夹表,该表在列表和与该文件夹相关联的时间中仅出现一次。如果此信息存储在数据库中,则可以使用以下select语句来完成。我以MS SQL Server为例。
Private Sub GetUnique()
Dim dt As New DataTable
Using cn As New SqlConnection("Your Connection String")
Dim strSQL As String = "Select Folder, Count(Folder) As Unique, Sum(Times) TotalTimes From MyTable Where Unique = 1 Group By Folder;"
Using cmd As New SqlCommand(strSQL, cn)
cn.Open()
Using dr As SqlDataReader = cmd.ExecuteReader
dt.Load(dr)
End Using
End Using
End Using
DataGridView1.DataSource = dt
End Sub