我怀疑这是一个简单的语法问题,但我被卡住了。
我有这个功能:
Function CreateSPT(SPTQueryName As String, SQLString As String, _
ConnectString As String)
Dim mydatabase As Database, myquerydef As QueryDef, MyRS As Recordset
Set mydatabase = DBEngine.Workspaces(0).Databases(0)
Set myquerydef = mydatabase.CreateQueryDef(SPTQueryName)
myquerydef.Connect = ConnectString
myquerydef.SQL = SQLString
myquerydef.ReturnsRecords = False
myquerydef.ReturnsRecords = True
Set MyRS = myquerydef.OpenRecordset()
'MyRS.MoveFirst
DoCmd.OpenQuery SPTQueryName, acViewNormal, acReadOnly
myquerydef.Close End Function
当在我的表单上按下按钮时,这被调用。
Private Sub Btn_Search_Click()
If Not IsNull(DLookup("[AccessionNumber]", "[SA2001]", "[AccessionNumber] = '" & [Forms]![SA2001]![Txt_LabEpNo] & "'")) Then
'MsgBox "Found"
'Populates the form as required
'I've removed the code as it's messy
Else
'MsgBox "Not Found"
Me.Refresh
Dim SPTQueryName As String
Dim SQLString As String
Dim ConnectString As String
DoCmd.Close acQuery, "XQuery"
DoCmd.DeleteObject acQuery, "XQuery"
SPTQueryName = "XQuery"
SQLString = "SELECT SQLUser.EP_VisitNumber.EPVIS_DebtorNumber_DR as HospitalNumber, SQLUser.EP_VisitNumber.EPVIS_GivenName as Forename, SQLUser.EP_VisitNumber.EPVIS_Surname as Surname, SQLUser.EP_VisitNumber.EPVIS_DateOfBirth as DOB, SQLUser.EP_VisitNumber.EPVIS_DoctorCode_DR->CTDR_Surname as CONS, SQLUser.EP_VisitNumber.EPVIS_VisitNumber as AccessionNumber, SQLUser.EP_VisitNumber.EPVIS_DateOfCollection as SampleReceivedDate, SQLUser.EP_VisitTestSet.VISTS_TestSet_DR->CTTS_Department_DR->CTDEP_NAME as LabDept FROM SQLUser.EP_VisitTestSet, SQLUser.EP_VisitNumber WHERE ( SQLUser.EP_VisitTestSet.VISTS_ParRef=SQLUser.EP_VisitNumber.EPVIS_VisitNumber ) AND ( SQLUser.EP_VisitTestSet.VISTS_ParRef = '1500000000')"
ConnectString = "ODBC;DSN=DSNNAME;SERVER=IPADDRESS;PORT=1972;DATABASE=DATABASENAME;AUTHENTICATION METHOD=0;UID=USERNAME;PWD=PASSWORD;STATIC CURSORS=0;QUERY TIMEOUT=0;UNICODE SQLTYPES=0"
Call CreateSPT(SPTQueryName, SQLString, ConnectString)
'Me.[Hospital Number] = rec("HospitalNumber")
Me.Refresh
Me.[Hospital Number] = Null
Me.[Hospital Number] = MyRS("HospitalNumber")
End If End Sub
我的问题是我无法使用传递查询的结果填充表单。
本质上,我如何声明记录集以便我可以将表单填充为 Me.[Hospital Number] = MyRS("HospitalNumber") 不起作用,因为“MyRS”是未定义的函数。