2

我正在尝试从 VB 运行一个 Access db 查询。我要运行的一般查询是

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

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

然后我阅读了关于编写一个函数并使用它的信息,但是,我不断收到一个错误,上面写着 Function not defined,但是在单步执行代码时,它似乎可以工作。

这是我的功能:

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

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

4

1 回答 1

2

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

您可以使用 OLE DB Provider 来执行查询。我确定您知道如何执行此操作,但以防万一,这里有一些有用的信息: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

于 2012-05-05T07:33:20.093 回答