Je suppose qu'il s'agit d'un problème de syntaxe simple, mais je suis bloqué.MS Access Remplir un formulaire à partir d'une requête directe
J'ai cette fonction:
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
Lorsqu'un bouton est pressé sur mon formulaire ce que l'on appelle.
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
Mon problème est que je ne peux pas remplir le formulaire avec les résultats de la requête directe. Essentiellement, comment puis-je déclarer le jeu d'enregistrements afin que je puisse remplir le formulaire comme Moi. [Hospital Number] = MyRS ("HospitalNumber") ne fonctionne pas car "MyRS" est fonction non définie.
bon endroit Gustav, j'ai eu « myquerydef.ReturnsRecords = False » et « myquerydef.ReturnsRecords = True », je l'ai enlevé le « Faux » un, mais toujours le même Erreur. – Paul
J'ai donc suivi votre conseil tel que je le comprends mais j'ai "Variable non définie" sur "XQuery", qui est la requête créée dans le sous 'MyRs = XQuery.OpenRecordset()' 'Me! ] .Value = MyRs! HospitalNumber.Value ' – Paul