填充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
答
你也可以试试这个:
da.Fill(ds)
con.Close()
MaxRows = ds.Tables(0).Rows.Count
所以,当你在SQL2直接执行SQL对Access数据库,你的记录回来? – DeanOC 2013-05-01 02:29:03
尝试将您的数据集更改为数据表对象。我认为你的问题是你正在尝试重命名表。 – SSS 2013-05-01 03:39:51
或者您可以尝试更改您的查询以“通过ProdNo选择*从产品AS ComputerWarehouseProject订单” – SSS 2013-05-01 03:40:45