将OleDbDataReader转换为String以在列表视图中显示COUNT命令

时间:2015-06-01 03:14:41

标签: vb.net oledb

我希望在使用两个ListView查询时显示特定员工姓名的COUNT MS Access。正在显示的COUNT只有0,1或2,但没有多少" ----"数据库中的值。

该命令绑定到RadioButton

Private Sub RadioButton2_Click(sender As Object, e As EventArgs) Handles RadioButton2.Click      

    Dim con As New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\sheetlog.mdb;Jet OLEDB:Database Password = 'password';")
        con.Open()

        Dim try2 As String = "----"
        Dim try3 As String
        Dim oledbCmd, oledbCmd2 As OleDbCommand
        Dim cmd, cmd2 As String


        cmd = "SELECT DISTINCT empname FROM sheet"
        oledbCmd = New OleDbCommand(cmd, con)
        Dim oledbReader As OleDbDataReader = oledbCmd.ExecuteReader()

        ListView1.Clear()
        ListView1.GridLines = True
        ListView1.FullRowSelect = True
        ListView1.View = View.Details
        ListView1.MultiSelect = False
        ListView1.Columns.Add("Employee Name", 130)
        ListView1.Columns.Add("New", 80)
        ListView1.Columns.Add("Rev1", 80)
        ListView1.Columns.Add("Rev2", 80)
        ListView1.Columns.Add("Rev3", 80)
        ListView1.Columns.Add("Rev4", 80)
        ListView1.Columns.Add("Rev5", 80)

        While (oledbReader.Read)

            try3 = oledbReader("empname").ToString

            cmd2 = "SELECT count(new) AS cnew, count(rev1) AS crev1, count(rev2) AS crev2, count(rev3) AS crev3, count(rev4) AS crev4, count(rev5) AS crev5 FROM sheet WHERE empname = '" & try3 & "' AND rev1 <> '" & try2 & "' AND rev2 <> '" & try2 & "' AND rev3 <> '" & try2 & "'  AND rev4 <> '" & try2 & "'  AND rev5 <> '" & try2 & "'"

            oledbCmd2 = New OleDbCommand(cmd2, con)

            Dim oledbReader2 As OleDbDataReader = oledbCmd2.ExecuteReader()

            While (oledbReader2.Read)

            With ListView1.Items.Add(oledbReader("empname"))
                .subitems.add(oledbReader2("cnew"))
                .subitems.add(oledbReader2("crev1"))
                .subitems.add(oledbReader2("crev2"))
                .subitems.add(oledbReader2("crev3"))
                .subitems.add(oledbReader2("crev4"))
                .subitems.add(oledbReader2("crev5"))
            End With

        End While

        End While


        con.Close()

    End Sub

1 个答案:

答案 0 :(得分:0)

我已经远离VB.NET了一段时间,但我认为你需要为第二个DataReader做While(oledbReader2.Read())

Dim oledbReader2 As OleDbDataReader = oledbCmd2.ExecuteReader()
' I think you need this here:
While (oledbReader2.Read)
    With ListView1.Items.Add(oledbReader("empname"))
        .subitems.add(oledbReader2("cnew"))
        .subitems.add(oledbReader2("crev1"))
        .subitems.add(oledbReader2("crev2"))
        .subitems.add(oledbReader2("crev3"))
        .subitems.add(oledbReader2("crev4"))
        .subitems.add(oledbReader2("crev5"))
    End With
End While