从VB运行Access查询,将变量或函数作为查询参数传递

时间:2012-04-07 19:38:03

标签: vb.net ms-access ado.net parameters

我正在尝试从VB运行Access数据库。我想要运行的一般查询是

    SELECT * FROM Patient WHERE Patient.PatientID = ?
or  SELECT * FROM Patient WHERE Patient.PatientLname = ?

我尝试使用一个输入框来捕获用户输入并将该变量传递给查询,但失败了。

然后我读到了编写函数并使用它,但是,我不断收到一个错误,其中说明函数未定义,但是当单步调试代码时,它似乎有效。

这是我的功能:

Module Module1
    Public Function LookUpNow(ByVal userInput As String) As String
        LookUpNow = userInput
        Return userInput
        Exit Function
    End Function
End Module

这里也是查询,因为它目前是

SELECT * FROM Patient WHERE (((Patient.PatientLName)=LookUpNow()))

我正在使用VisualStudio。我是否必须使用OleDBConnection手动编写连接字符串,或VisualStudio是否自动执行此操作?

Private Sub FillBy3ToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FillBy3ToolStripButton.Click
    Dim Input As String
    Input = InputBox("What patientID do you want to lookup?", "PatientID entry Form", "Enter PatientID here")
    Call LookUpNow(Input)


    Try
        Me.PatientTableAdapter.FillBy3(Me.PatientRecordsDataSet.Patient)
    Catch ex As System.Exception
        System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try

End Sub

我很困惑和沮丧。谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

您无法远程(例如OLE DB,ODBC等)运行包含内部定义函数(vba)的Access查询。你得到的错误是完全合法的。

您可以使用OLE DB提供程序执行查询。我相信你知道如何做到这一点,但为了以防万一,这里有一些有用的信息: http://msdn.microsoft.com/en-us/library/6d9ew87b(v=vs.90).aspx

这里有一些例子:http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbparameter(v=vs.90).aspx