简体   繁体   English

填充 DataGridView

[英]Filling DataGridView

My issue is getting the data from my access database to show up in the view.我的问题是从我的访问数据库中获取数据以显示在视图中。 Whenever I run the application it errors out right before the da2.Fill(ds2, "Inventory").每当我运行应用程序时,它就会在 da2.Fill(ds2, "Inventory") 之前出错。 The tables that I am using are called Product and Inventory.我使用的表称为产品和库存。 Have tried everything I could think of, any hints/sources why would be very appriciated.已经尝试了我能想到的一切,任何提示/来源为什么会非常受欢迎。

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

You could also try this:你也可以试试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM