Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 填充DataGridView_Vb.net_Ms Access_Datagridview_Vba - Fatal编程技术网

Vb.net 填充DataGridView

Vb.net 填充DataGridView,vb.net,ms-access,datagridview,vba,Vb.net,Ms Access,Datagridview,Vba,我的问题是从access数据库获取数据以显示在视图中。每当我运行应用程序时,它都会在da2.Fill(ds2,“Inventory”)之前出错。我正在使用的表称为Product and Inventory。我已经尝试了我能想到的一切,任何提示/来源都会非常感激 Public Class Form1 Dim con As New OleDb.OleDbConnection Dim ds As New DataSet ' in memory version of database Dim da As

我的问题是从access数据库获取数据以显示在视图中。每当我运行应用程序时,它都会在da2.Fill(ds2,“Inventory”)之前出错。我正在使用的表称为Product and Inventory。我已经尝试了我能想到的一切,任何提示/来源都会非常感激

Public Class Form1
Dim con As New OleDb.OleDbConnection
Dim ds As New DataSet ' in memory version of database
Dim da As OleDb.OleDbDataAdapter
Dim sql As String

Dim ds2 As New DataSet
Dim da2 As OleDb.OleDbDataAdapter
Dim sql2 As String

Dim strProdNo As String
Dim inc, MaxRows As Integer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'ComputerWarehouseProjectDataSet.Product' table. You can move, or remove it, as needed.
    'Me.ProductTableAdapter.Fill(Me.ComputerWarehouseProjectDataSet.Product)
    con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = ComputerWarehouseProject.mdb"
    con.Open() 'put a try catch around this
    sql = "SELECT * FROM Product order by ProdNo"
    da = New OleDb.OleDbDataAdapter(sql, con)
    da.Fill(ds, "ComputerWarehouseProject")
    con.Close()
    MaxRows = ds.Tables("ComputerWarehouseProject").Rows.Count
    inc = 0
    NavigateRecords()

End Sub
Private Sub NavigateRecords()
    Try
        txtId.Text = ds.Tables("ComputerWarehouseProject").Rows(inc).Item(0)
        txtPart.Text = ds.Tables("ComputerWarehouseProject").Rows(inc).Item(1)
        txtQoh.Text = ds.Tables("ComputerWarehouseProject").Rows(inc).Item(3)
        txtCost.Text = ds.Tables("ComputerWarehouseProject").Rows(inc).Item(4)
        'MessageBox.Show("Works 1")
        txtSugPrice.Text = ds.Tables("ComputerWarehouseProject").Rows(inc).Item(5)
        cbProd.Text = ds.Tables("ComputerWarehouseProject").Rows(inc).Item(0) & " " & ds.Tables("ComputerWarehouseProject").Rows(inc).Item(1)
        'MessageBox.Show("Works 2")
        txtRecBeg.Text = (inc + 1).ToString
        'MessageBox.Show("Works 3")
        txtRecEnd.Text = ds.Tables("ComputerWarehouseProject").Rows.Count.ToString
        'MessageBox.Show("Works 4")
        bldInv()
        'MessageBox.Show("Works 5")
    Catch
        MessageBox.Show("Data Error! Cannot Navigate to Selected Record at position " & inc.ToString)

    End Try

End Sub
Private Sub bldInv()

    strProdNo = ds.Tables("ComputerWarehouseProject").Rows(inc).Item(0)
    sql2 = "Select * from Inventory where ProdNo = " + strProdNo
    ds2.Clear()
    MessageBox.Show(sql2)
    da2 = New OleDb.OleDbDataAdapter(sql2, con)

    MessageBox.Show("Right before fill")
    da2.Fill(ds2, "Inventory")


    dgvInv.DataSource = ds2.Tables("Inventory")
    dgvInv.AutoResizeColumns()


End Sub

您也可以尝试以下方法:

da.Fill(ds)
con.Close()
MaxRows = ds.Tables(0).Rows.Count

因此,当您直接对Access数据库执行sql2中的SQL时,您可以恢复记录?请尝试将数据集更改为datatable对象。我认为您的问题在于您试图重命名该表。或者您可以尝试将查询更改为“按ProdNo从Product AS COMPUTERWAREHOUSE PROJECT order by ProdNo中选择*”。堆栈跟踪和您获得的异常类型将非常有用。@DeanOC Yes我会将记录返回到数据网格视图中。