' Get the VFP app Public Shared Function VFPApp() As String Dim loDataProvider As Framework.Data = New Framework.Data() If loDataProvider.SQLExec("SELECT VFPApp.Numero,VFPApp.Creation,VFPApp.Modifier AS Updated," + _ "VFPApp.Title,VFPApp.NumberTabl,VFPApp.SizeTable,VFPApp.NbreUser,VFPApp.Simulta," + _ "VFPApp.DateStart,Version.Name AS Version,VFPApp.WorldWide," + _ "VFPApp.Notes,VFPApp.Web,IIF(NOT ISNULL(Pays.Pays),Pays.Pays,SPACE(20)) AS Pays," + _ "IIF(NOT ISNULL(Province.Desc),Province.Desc,'') AS State," + _ "IIF(NOT ISNULL(Member.Prenom),Member.Prenom,'') AS FirstName," + _ "IIF(NOT ISNULL(Member.Nom),Member.Nom,'') AS LastName " + _ "FROM VFPApp " + _ "LEFT JOIN " + lcData + "\Member ON VFPApp.NoMember=Member.Numero " + _ "LEFT JOIN " + lcData + "\Pays ON VFPApp.NoCountry=Pays.Numero " + _ "LEFT JOIN " + lcData + "\Province ON VFPApp.NoProvince=Province.Numero " + _ "INNER JOIN " + lcData + "\Version ON VFPApp.NoVersion=Version.Numero", _ Framework.App.aConnection(3)) = False Then Throw New System.Exception("Unable to retrieve the data. " + Framework.App.cError) End If Return Framework.DataXML.DataSetToXml(loDataProvider.oDataSet) End Functionwhere VFPApp comes from the declared connection and the JOINed tables come from a fully qualified path. I can use this approach because they are local. But, as I mentioned, otherwise I would have to use something like OPENROWSET().