0
Моя проблема заключается в получении данных из моей базы данных доступа для отображения в представлении. Всякий раз, когда я запускаю приложение, он выдает ошибки перед da2.Fill (ds2, «Inventory»). Таблицы, которые я использую, называются Product и Inventory. Попробовали все, что я мог придумать, любые подсказки/источники, которые были бы очень полезными.Заполнение 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
Итак, когда вы выполняете SQL в SQL2 непосредственно с базой данных Access, вы получите записи обратно? – DeanOC
Попробуйте изменить свой набор данных на объект данных. Я думаю, ваша проблема в том, что вы пытаетесь переименовать таблицу. – SSS
Или вы можете попробовать изменить запрос на «SELECT * FROM Product AS ComputerWarehouseProject order by ProdNo» – SSS