0

私の問題は、アクセス データベースからデータを取得してビューに表示することです。アプリケーションを実行するたびに、da2.Fill(ds2, "Inventory") の直前にエラーが発生します。私が使用しているテーブルは、Product および 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
4

1 に答える 1

0

これを試すこともできます:

da.Fill(ds)
con.Close()
MaxRows = ds.Tables(0).Rows.Count
于 2013-05-02T03:27:24.500 に答える