vb.net - 从 VB 在 Access 上运行查询,传递变量或函数作为查询参数

标签 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

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

最佳答案

您无法远程(例如 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

关于vb.net - 从 VB 在 Access 上运行查询,传递变量或函数作为查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10057699/

相关文章:

sql-server - 在 SQL Server 中,如何从 MS Access 数据库读取数据以更新一个或多个表列中的数据?

java - 在未安装 MS Access 的情况下将 Java 连接到 MS Access 数据库

c++ - 崩溃填充数据适配器

c# - DbConnection 超出范围时是否关闭并处置?

c# - 如何从 webclient 获取状态码?

vb.net - 在 VB.NET 中通过 LINQ 对通用列表进行分组

c# - 哈希函数获取有限长度的结果

.net - 在 backgroundworker 中使用 Thread.Sleep 方法有什么好处?

ms-access - 如何通过表单收集输入并传递到 Access 中的报告查询

c# - 连接突然中断时 ADO.Net 事务的命运