Я подозреваю, что это простая проблема синтаксиса, но я застрял.MS Access Заполнение формы из сквозного запроса
У меня есть эта функция:
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
Моя проблема: я не могу заполнить форму результатами сквозного запроса.
По существу, как объявить набор записей, чтобы я мог заполнить форму как «Я». [Номер больницы] = MyRS («HospitalNumber») не работает, поскольку функция «MyRS» не определена.
Хорошее место Густав, я на самом деле было «myquerydef.ReturnsRecords = False» и «myquerydef.ReturnsRecords = True», я удалил «False» один, но все тот же ошибка. – Paul
Итак, я следил за вашим советом, как я его понимаю, но я получаю «Variable not defined» в «XQuery», который является запросом, созданным в Sub MyPs = XQuery.OpenRecordset() '' Me! [Номер больницы ] .Value = MyRs! HospitalNumber.Value ' – Paul