Thanks to the helpful staff at Crystal Decisions an answer was provided. Cr 9 uses a very different architecture than cr8/8.5. Here is the code to set the db logon...
' This function logs onto the datbase.
'
Function SetLogonInformation(UID, PWD)
Dim PropertyBag, dbLogonInfos, cDBInfo
Set PropertyBag = Server.CreateObject("CrystalReports.PropertyBag"
' Usually when using the Property Bag it is a good idea to set the EnsureCapacity method as this will
' improve server performace. It will pre allocate memory for the array of items. With this example
' the method was used as we know the fixed number of items that we need to add.
With PropertyBag
.EnsureCapacity (8)
.Item("All"

= true
.Item("IncludeOnDemandSubreport"

= false
.Item("UserName"

= cStr(UID)
.Item("Database DLL"

= "Pdsodbc.dll"
.Item("Database Name"

= "pubs"
.Item("Server Name"

= "pubs"
.Item("Server Type"

= "ODBC - pubs"
End With
' The GetConnectionInfos will return a collection of all the database connection logons on the report
' including subreport logons. We set the attributes of the connection to be the information that we have
' stored in the property bag. For security reasons the password cannot be stored in the property bag.
' This method is better than using the ConnectionInfo object as it will not return subreport logon information.
set cDBInfo =
Session("ReportDoc"

.DatabaseController.GetConnectionInfos(PropertyBag)
For each oDBInfo in cDBInfo
oDBInfo.Attributes = PropertyBag
oDBInfo.Password = cStr(PWD)
Next
Session("ReportDoc"

.DatabaseController.SetConnectionInfos(cDBInfo)
End Function
'
' ------------------------------------------------------------------------
This is the original code sent to me by Crystal. I modified the code to work for my particular instance.
Once I got the hang the new architecture, I managed to set the selection formula too. A formula object needs to be created then set. For further details email me on kim.dadswell@qr.com.au