当记录数为 0 时退出函数

如何解决当记录数为 0 时退出函数

我正在我的列表视图 (ssql) 上应用搜索过滤器。当结果没有找到记录时,我想取消该操作,否则 Listview 为空,我无法撤消过滤器。

Private Sub LoadStandardListview(Optional ByVal sFilter As String = "")

        Try
            Dim ssql As String
            Dim sSubStr As String
            Dim strs As String
            If sFilter = "" Then
                ssql = "SELECT Id,[Document Type],[Document Name],disnummer,XPostnummer,[Last Accessed],[Document Location] FROM Archief WHERE ([Document Type] Is Not Null) AND ([disnummer] Is Not Null) AND ([XPostnummer] Is Not Null) AND ([Last Accessed] Is Not Null) ORDER BY Id DESC"
            Else
                sSubStr = " AND [Document Name] LIKE '%" + sFilter + "%' "
                ssql = "SELECT Id,[Document Location] FROM Archief WHERE ([Document Type] Is Not Null) AND ([disnummer] Is Not Null) AND ([XPostnummer] Is Not Null) AND ([Last Accessed] Is Not Null)" + sSubStr + "ORDER BY Id DESC"
            End If
            strs = "SELECT Count(*) FROM Archief"
            Dim cmd As New OleDb.OleDbCommand(ssql,con)
            Dim cmd2 As New OleDb.OleDbCommand(strs,con)
            Dim dr As OleDb.OleDbDataReader = cmd.ExecuteReader
            Dim dis As String
            Dim docImage As VariantType
            Dim items As New List(Of ListViewItem)
            dr.Read()
            Dim recordCount As Long
            recordCount = cmd2.ExecuteScalar

            ListView1.BeginUpdate()
            ListView1.Items.Clear()
            While dr.Read
            If dr("Document Type").ToString = "PDF" Or dr("Document Type").ToString = "pdf" Then
                docImage = (ImageList1.Images.Count - 1)
            ElseIf dr("Document Type").ToString = "DOC" Or dr("Document Type").ToString = "doc" Then
                docImage = (ImageList1.Images.Count - 3)
            ElseIf dr("Document Type").ToString = "PPT" Or dr("Document Type").ToString = "ppt" Then
                docImage = (ImageList1.Images.Count - 2)
            End If

            dis = dr("Last Accessed").Substring(0,dr("Last Accessed").IndexOf(" "))
            items.Add(New ListViewItem(New String() {"",dr("Document Name").ToString,dr("disnummer"),dr("XPostnummer"),dis,dr("Id").ToString,dr("Document Location").ToString},docImage))
        End While
        ListView1.Items.AddRange(items.ToArray)
        ListView1.EndUpdate()
            sNumRec = items.Count
            If sFilter <> "" Then
                ToolStripTextBox3.Text = sNumRec + " Documents"
            Else
                ToolStripTextBox3.Text = recordCount.ToString + " Documents"
            End If
        Catch ex As Exception
        MsgBox(ex.Message)
        End Try
    End Sub

有没有办法在没有找到记录时取消操作并用所有记录再次填充列表视图?

解决方法

您在哪里使用了 cmd2.ExecuteScalar 的值,即 recordCount?试试这个

If recordCount > 0 Then
   While dr.Read
         ...
   End While
   dr.Close()
Else
   `Refill listview with no filter`
End If
,
Dim sSQL As String
            Dim sSubStr As String
            If sFilter = "" Then
                sSQL = "SELECT Id,[Document Type],[Document Name],DISnummer,XPostnummer,[Last Accessed],[Document Location] FROM Archief ORDER BY Id DESC"
            Else
                sSubStr = "WHERE [Document Name] LIKE '%" + sFilter + "%' "
                sSQL = "SELECT Id,[Document Location] FROM Archief " + sSubStr + " ORDER BY Id DESC"
            End If
            Dim cmd As New OleDbCommand(sSQL,con)
            Using dr As OleDbDataReader = cmd.ExecuteReader
                Dim dis As String
                Dim docImage As VariantType
                Dim items As New List(Of ListViewItem)

                If dr.HasRows() Then

                    ListView1.BeginUpdate()
                    ListView1.Items.Clear()

                    While dr.Read
                        If dr("Document Type").ToString = "PDF" Or dr("Document Type").ToString = "pdf" Then
                            docImage = (ImageList1.Images.Count - 1)
                        ElseIf dr("Document Type").ToString = "doc" Or dr("Document Type").ToString = "docx" Then
                            docImage = (ImageList1.Images.Count - 3)
                        ElseIf dr("Document Type").ToString = "ppt" Or dr("Document Type").ToString = "pptx" Then
                            docImage = (ImageList1.Images.Count - 2)
                        ElseIf dr("Document Type").ToString = "xls" Or dr("Document Type").ToString = "xlsx" Then
                            docImage = (ImageList1.Images.Count - 4)
                        End If

                        dis = dr("Last Accessed").Substring(0,dr("Last Accessed").IndexOf(" "))
                        items.Add(New ListViewItem(New String() {"",dr("Document Name").ToString,dr("DISnummer").ToString,dr("XPostnummer").ToString,dis,dr("Id").ToString,dr("Document Location").ToString},docImage))

                    End While
                    ListView1.Items.AddRange(items.ToArray)
                    ListView1.EndUpdate()
                Else
                    MsgBox("Nothing was found.",Title)
                End If
                dr.Close()

            End Using

我稍微改变了我的代码。我把

Using dr as New OleDbDataReader = cmd.ExecuteReader
If dr.HasRows() Then

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?