OleDbException未处理(没有给出一个或多个必需参数的值。) - Visual Studio 2010

时间:2015-04-03 04:01:55

标签: database vb.net visual-studio-2010 oledb

我正在铁路预订系统上制作一个项目,我希望用户可以访问他的预订历史记录。以下代码访问数据库中两个表的记录。当我只为一个表运行此代码(从一个表访问记录)时,它工作正常,但是当我为两个表运行此代码时,它给出了一个错误,说OleDbexception未处理(没有给出更多必需参数的值)< / p>

da.Fill(ds,&#34; Table2&#34;)

我知道这一行是错误的,因为它只适用于一张桌子,但我不知道如何为两张桌子做这件事。请帮忙 !谢谢 !

Imports System.Data.OleDb

Public Class Form12

Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\AMEN\Documents\Railway.accdb"
Dim MyConn As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim tables As DataTableCollection
Dim source1 As New BindingSource

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    MyConn = New OleDbConnection
    MyConn.ConnectionString = connString
    ds = New DataSet
    tables = ds.Tables
    da = New OleDbDataAdapter("Select P.Tnumber, P.Name , P.Age ,T.PNR_Number,  P.Train_Name , P.SeatNo , P.Berth , P.Coach_Number , T.Starting_Point , T.Destination , T.Departure , T.Arrival , T.Fare From Table1,Table2 Where P.Train_Name = T.Train_Name and P.Phone= TextBox1.Text ", MyConn)
    da.Fill(ds, "Table2")

    Dim view As New DataView(tables(0))
    source1.DataSource = view
    DataGridView1.DataSource = view

End Sub

结束班

1 个答案:

答案 0 :(得分:0)

您的查询中看起来有两个表要加入。我将继续前提,Table1是T,Table2在您的查询中是P.如果它被逆转,只需改变它。

话虽如此,试试这个:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Using cn = New OleDbConnection(connString)
        cn.Open()
        Using da = New OleDbDataAdapter("SELECT P.Tnumber, P.Name , P.Age ,T.PNR_Number,  P.Train_Name , P.SeatNo , P.Berth , P.Coach_Number , T.Starting_Point , T.Destination , T.Departure , T.Arrival , T.Fare FROM Table1 T INNER JOIN Table2 P ON P.Train_Name = T.Train_Name WHERE P.Phone='" & TextBox1.Text & "'", cn)
            Dim dt = New DataTable
            da.Fill(dt)
            DataGridView1.DataSource = dt
        End Using
    End Using
End Sub

将块用于连接和数据适配器等一次性资源也是一个好主意。