填充DataGridView

问题描述:

我的问题是从我的访问数据库中获取数据以显示在视图中。每次运行应用程序时,都会在da2.Fill(ds2,“Inventory”)之前出错。我正在使用的表称为产品和库存。尝试过所有我能想到的,任何提示/来源为什么会非常appriciated。填充DataGridView

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 
+0

所以,当你在SQL2直接执行SQL对Access数据库,你的记录回来? – DeanOC 2013-05-01 02:29:03

+0

尝试将您的数据集更改为数据表对象。我认为你的问题是你正在尝试重命名表。 – SSS 2013-05-01 03:39:51

+0

或者您可以尝试更改您的查询以“通过ProdNo选择*从产品AS ComputerWarehouseProject订单” – SSS 2013-05-01 03:40:45

你也可以试试这个:

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