我正在尝试从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
我很困惑和沮丧。谢谢你的帮助
答案 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