【问题标题】:Please tell me where is the error here请告诉我这里的错误在哪里
【发布时间】:2013-09-27 14:24:39
【问题描述】:

我想通过 Textbox 控件过滤我的 Dataview,但是当我运行程序时它显示以下错误

“找不到表 0”

这是我的代码

Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles TextBox1.KeyPress

        Dim conn As New OleDbConnection
        conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + IO.Directory.GetCurrentDirectory + "\Kyc.mdb"
        conn.Open()
        Dim cmdfilter As String = " select ID as الرقم_الوطني,fname as الاسم_الاول,sname as الاسم_الثاني,thname as الاسم_الثالث,finame as الاسم_الرابع from O_name "
        Dim dataadabtar As New OleDbDataAdapter(cmdfilter, conn)
        Dim ds As New DataSet
        Dim dsview As DataView
        Dim bs As New BindingSource
        dsview = ds.Tables(0).DefaultView
        bs.DataSource = dsview
        bs.Filter = "الرقم_الوطني LIKE '" & TextBox1.Text & "'"
        DataGridView1.DataSource = bs
        conn.Close()
End Sub 

请帮帮我

【问题讨论】:

  • 错误是你永远不会用任何数据填充ds
  • 您实例化一个空数据集,然后立即尝试引用该数据集中的表。正如错误所述,那里没有表格。所以你不能引用它。

标签: .net


【解决方案1】:

错误来自您的这部分代码..

Dim ds As New DataSet
....
dsview = ds.Tables(0).DefaultView

你永远不会分配 ds

【讨论】:

    【解决方案2】:

    试试这个

        Dim dataadabtar As New OleDbDataAdapter(cmdfilter, conn)
        Dim ds As New DataSet
        Dim dsview As DataView
        Dim bs As New BindingSource
    
        dataadabtar.Fill(ds);
    
        IF ds.Tables.Count > 0 Then
          dsview = ds.Tables(0).DefaultView
          bs.DataSource = dsview
          bs.Filter = "الرقم_الوطني LIKE '" & TextBox1.Text & "'"
          DataGridView1.DataSource = bs
        END IF;
    

    【讨论】:

    • 这有效并消除了错误,但当我在文本框中写入任何数字时没有显示结果,数据网格只是变空,当我从文本框中删除时它保持为空
    • 您确定有您传递的数字的数据吗?这个答案解决了您上面的原始问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    相关资源
    最近更新 更多