I am somewhat new to VB and CR so some of my code may actually be from tutorials and other help sources. Crassmnt1cr9 is the report object and declaring it this way might not be necessary, but the sources I use seem to take the class concept to the extreme. I'll give you my code for the report form and connection class. Also, I didn't have any luck setting the subreport location outside the class.
'''''''' REPORT FORM ''''''''''''''
Option Explicit
Dim Assmnt1cr9 As New crassmnt1cr9
Dim crConnect As New clsCrystalCOnnection
Private Sub Form_Load()
Set Assmnt1cr9 = New crassmnt1cr9
AddDataBase
Assmnt1cr9.PaperOrientation = crLandscape
Assmnt1cr9.ParameterFields(1).ClearCurrentValueAndRange
Assmnt1cr9.ParameterFields(1).AddCurrentValue (frmAcctMaster.mskfrmAddrMasterAccountNo)
Screen.MousePointer = vbHourglass
CRViewer91.ReportSource = Assmnt1cr9
Assmnt1cr9.PrinterSetup (0)
CRViewer91.ViewReport
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
End Sub
Public Sub AddDataBase()
'Dimension the variables that we need
Dim strDLLName As String
Dim strServerName As String
Dim strDatabaseName As String
Dim strUserName As String
Dim strPassword As String
Dim crSections As CRAXDRT.Sections
Dim crsection As CRAXDRT.Section
Dim crsubreport As CRAXDRT.Report
Dim intobjcount As Integer
Dim x As Integer
Dim strsubreportname As String
'Set the variables according to the Registry entries that
'clsCrystalConnection retrieves
strDLLName = crConnect.DLLName
strServerName = crConnect.ServerName
strDatabaseName = crConnect.DatabaseName
strUserName = crConnect.UserName
strPassword = crConnect.Password
'Log it on
Assmnt1cr9.Database.LogOnServer strDLLName, strServerName, strDatabaseName, strUserName, strPassword
For x = 1 To Assmnt1cr9.Database.Tables.Count
With Assmnt1cr9.Database.Tables(x).ConnectionProperties
.Item("Database"

= strDatabaseName
.Item("Server"

= "strDatabaseName"
.Item("User ID"

= "strUserName"
.Item("Password"

= "strPassword"
End With
Assmnt1cr9.Database.Tables.Item(x).Location = Assmnt1cr9.Database.Tables.Item(x).Location
Next
Set crSections = Assmnt1cr9.Sections
For Each crsection In crSections
intobjcount = crsection.ReportObjects.Count
For x = 1 To intobjcount
If crsection.ReportObjects.Item(x).Kind = 5 Then
strsubreportname = crsection.ReportObjects.Item(x).SubreportName
Set crsubreport = Assmnt1cr9.OpenSubreport(strsubreportname)
End If
Next x
Next
End Sub
Private Sub Form_Unload(Cancel As Integer)
Assmnt1cr9.ParameterFields(1).ClearCurrentValueAndRange
Set Assmnt1cr9 = Nothing
Set crConnect = Nothing
End Sub
'''''''''''' CONNECTION CLASS ''''''''''''
Option Explicit
Private mstrProvider As String
Private mstrServerName As String
Private mstrDatabaseName As String
Private mstrDLLName As String
Private mstrDLLConnectionString As String
Private gcnProp As ADODB.Connection
Private DBConnection As clsDatabaseConnection
Private crReport As CRAXDRT.Report
Private Sub Class_Initialize()
Dim strConnect As String
Set gcnProp = New ADODB.Connection
Set DBConnection = New clsDatabaseConnection
If DBConnection.LoginSucceeded Then
strConnect = DBConnection.ConnectionString
gcnProp.Open strConnect
End If
End Sub
Private Sub Class_Terminate()
gcnProp.Close
Set gcnProp = Nothing
End Sub
Public Property Get DLLName() As String
DLLName = GetSetting("sandw", App.Title, "CrystalDLL", "p2ssql.dll"

'DLLName = GetSetting("sandw", App.Title, "CrystalDLL", "p2soledb.dll"

End Property
Public Property Let DLLName(ByVal strDLLName As String)
mstrDLLName = strDLLName
SaveSetting "sandw", App.Title, "CrystalDLL", mstrDLLName
End Property
Public Property Get Provider() As String
Provider = GetSetting("sandw", App.Title, "Provider", "Provider=SQLOLEDB.1"

End Property
Public Property Let Provider(ByVal strProvider As String)
mstrProvider = strProvider
SaveSetting "sandw", App.Title, "Provider", mstrProvider
End Property
Public Property Get ServerName() As String
ServerName = GetSetting("sandw", App.Title, "ServerName"

End Property
Public Property Let ServerName(ByVal strServerName As String)
mstrServerName = strServerName
SaveSetting "sandw", App.Title, "ServerName", strServerName
End Property
Public Property Get UserName() As String
UserName = GetSetting("sandw", App.Title, "SQLUsername"

End Property
Public Property Let UserName(ByVal strUserName As String)
mstrUserName = strUserName
SaveSetting "sandw", App.Title, "SQLUserName", strUserName
End Property
Public Property Get Password() As String
Password = GetSetting("sandw", App.Title, "Password"

End Property
Public Property Let Password(ByVal strPassword As String)
mstrPassword = strPassword
SaveSetting "sandw", App.Title, "Password", strPassword
End Property
Public Property Get DatabaseName() As String
DatabaseName = GetSetting("sandw", App.Title, "DatabaseName"
End Property
Public Property Let DatabaseName(ByVal strDatabaseName As String)
mstrDatabaseName = strDatabaseName
SaveSetting "sandw", App.Title, "DatabaseName", strDatabaseName
End Property
Thanks again for any help.