我有一个链接到SQL Server数据库的多用户Access UI,用于为抵押贷款公司执行贷款审核。用户当前正在使用Access中已存在的“查找记录”功能,并且查找记录需要很长时间。虽然我确实理解为什么它需要这么长时间以及它理论上需要做什么,但我无法找出编写代码直接执行所需记录的最佳方法。它需要是一个类似于现有查找记录功能的消息框,但它执行最有效的方式。我尝试了以下内容,其中不包含消息框,但它不起作用:
Private Sub txtFindLoan_AfterUpdate()
Dim sSQL As String
sSQL = "SELECT * FROM dbo_PreCloseAuditEnc WHERE LOAN_NUM = '" &
Me.txtFindLoan & "'"
Me.RecordSource = sSQL
Me.Requery
End Sub
提前致谢!
答案 0 :(得分:1)
由于您只使用外部数据并将表单直接绑定到已过滤的ADODB
记录集,因此您可能最不习惯使用ADODB
。
正如Sean Lange所说,你应该参数化你的查询,你可以使用DAO或ADO,但不能修改Me.RecordSource
属性
Private Sub txtFindLoan_AfterUpdate()
Dim sSQL As String
'I'm assuming your table name in MS SQL is dbo.PreCloseAuditEnc
sSQL = "SELECT * FROM dbo.PreCloseAuditEnc WHERE LOAN_NUM = ?"
Dim adoConn As New ADODB.Connection
'Enter a valid OLEDB connection string here:
adoConn.Open "Provider=SQLNCLI11;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;"
Dim cmd As New ADODB.Command
cmd.ActiveConnection = adoConn
cmd.CommandText = sSQL
cmd.Parameters.Append cmd.CreateParameter(Type:=adChar, Value:=Me.txtFindLoan)
Me.RecordSet = cmd.Execute
End Sub