I have the program that runs the following code in the report form.

Code:
Private Sub PrintSelectedFK()

        Dim FK As Integer
        If C58frmMain.C58ADataGridView.SelectedRows.Count = 0 And C58frmMain.C58ADataGridView.RowCount = 0 And C58frmMain.C58ADataGridView.SelectedCells.Count = 0 Then
            MessageBox.Show("Update not allowed as no row/cell is selected!", ".NET Remoting Sample", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        'If cell only is selected, use this to find the UserID
        If C58frmMain.C58ADataGridView.SelectedRows.Count = 0 And C58frmMain.C58ADataGridView.SelectedCells.Count > 0 Then
            FK = CType(C58frmMain.C58ADataGridView.Rows(C58frmMain.C58ADataGridView.SelectedCells(0).RowIndex).Cells("FKDataGridViewTextBox").Value, Integer)
            'If full row is selected, use this to find the UserID
        ElseIf C58frmMain.C58ADataGridView.SelectedRows.Count > 0 And C58frmMain.C58ADataGridView.SelectedCells.Count > 0 Then
            FK = CType(C58frmMain.C58ADataGridView.Rows(C58frmMain.C58ADataGridView.SelectedCells(0).RowIndex).Cells("FKDataGridViewTextBox").Value, Integer)
        End If

        'Define the remote object
        'Dim data As RemoteObject.Reports = Nothing
        'Dim data As RemoteObject.Reports
        Dim data As RemoteObject.Reports
        'Define a class type and class name of the object you're going to access

        Dim className As String = "Reports"
        Dim classType As Type = GetType(RemoteObject.Reports)


        Try
            'Creates a proxy object based on the specific class type & name at the specific address and port
            data = CType(Activator.GetObject(classType, "tcp://" & Address & ":" & Port.ToString & "/" & className), RemoteObject.Reports)
            'Makes a call to a specific function available in the remoting object.
            'ReportView.DataSource = data.GetBasicReport
            'data.GetBasicReport(CType(MainForm.txtStartDate.Text, Date), CType(MainForm.txtEndDate.Text, Date))
            'Dim userData1 As DataTable = data.PrintC58SelectedFK(FK)


            Dim userData As DataTable = data.PrintC58SelectedFK(FK)
            'Dim userData1 As DataTable = data.PrintC58SelectedFKGoods(FK)

            'frmMain.DataGridView.DataSource = userData

            Dim applicationPath As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.GetModules()(0).FullyQualifiedName)
            Dim cr As New ReportDocument

            'Dim ds As New DataSet
            'ds.Tables.Add(userData)
            'ds.WriteXmlSchema(applicationPath & "\UserData.xsd")

            cr.Load(applicationPath & "\C58Report.rpt")
            cr.SetDataSource(userData)



            'CrystalReportViewer1.ShowRefreshButton = False
            'CrystalReportViewer1.ShowCloseButton = False
            'CrystalReportViewer1.ShowGroupTreeButton = False
            CrystalReportViewer1.ReportSource = cr

            'MessageBox.Show("Request completed.", ".NET Remoting Sample", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ex As Exception
            MessageBox.Show("An unhandled error occured: " & ex.Message, ".NET Remoting Client", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub
I also have this code on the remote object that will retreive the data from the server.

Code:
Public Function PrintC58SelectedFK(ByVal FK As String) As DataTable 'Implements IUsers.GetAllUsers

        Dim dt As DataTable = Nothing
        'Dim dt1 As DataTable = Nothing
        Try
            Console.WriteLine("Get Selected C58 request started at:" & Now.ToString)
            Dim dal As New DataAccessLayer
            dt = dal.PrintC58SelectedFK(FK)
            'dt1 = dal.PrintC58SelectedFK(FK)
            dal = Nothing
            Console.WriteLine("Get Selected C58 request completed at:" & Now.ToString)
        Catch ex As Exception
            Console.WriteLine("An unhandled error occured : " & ex.Message)
            Throw New Exception("An unhandled error occured : " & ex.Message & " in AllUsers")
        End Try

        Return dt

    End Function

    Public Function PrintC58SelectedFKGoods(ByVal FK As String) As DataTable 'Implements IUsers.GetAllUsers

        Dim dt1 As DataTable = Nothing

        Try
            Console.WriteLine("Get Selected C58 request started at:" & Now.ToString)
            Dim dal1 As New DataAccessLayer
            dt1 = dal1.C58PrintSelectedFKGoods(FK)
            dal1 = Nothing
            Console.WriteLine("Get Selected C58 request completed at:" & Now.ToString)
        Catch ex As Exception
            Console.WriteLine("An unhandled error occured : " & ex.Message)
            Throw New Exception("An unhandled error occured : " & ex.Message & " in AllUsers")
        End Try

        Return dt1

    End Function
    Public Function PrintC58SelectedFKAll(ByVal FK As String) As DataTable 'Implements IUsers.GetAllUsers

        Dim dt As DataTable = Nothing

        Try
            Console.WriteLine("Get Selected C58 request started at:" & Now.ToString)
            Dim dal As New DataAccessLayer
            dt = dal.C58PrintSelectedFKAll(FK)
            
            dal = Nothing
            Console.WriteLine("Get Selected C58 request completed at:" & Now.ToString)
        Catch ex As Exception
            Console.WriteLine("An unhandled error occured : " & ex.Message)
            Throw New Exception("An unhandled error occured : " & ex.Message & " in AllUsers")
        End Try

        Return dt

    End Function
#End Region


Public Function PrintC58SelectedFK(ByVal FK As Integer) As System.Data.DataTable 'Implements IUsers.UserDelete

        Dim cn As System.Data.SqlClient.SqlConnection = Nothing
        Dim cmd As System.Data.SqlClient.SqlCommand
        Dim da As SqlClient.SqlDataAdapter = Nothing
        Dim dt As DataTable = Nothing
        Dim dt1 As DataTable = Nothing

        Try
            cn = New System.Data.SqlClient.SqlConnection
            cn.ConnectionString = _connectionString
            cn.Open()
            cmd = New System.Data.SqlClient.SqlCommand
            With cmd
                .Connection = cn
                .CommandText = "C58PrintSelectedFK"
                .CommandType = CommandType.StoredProcedure
                .CommandTimeout = 30
                .Parameters.Add("FK", SqlDbType.Int)
                .Parameters("FK").Direction = ParameterDirection.Input
                .Parameters("FK").Value = FK
            End With

            dt = New DataTable("C58A")
            dt1 = New DataTable("C58AGoods")
            da = New SqlClient.SqlDataAdapter(cmd)
            da.Fill(dt)
            da.Fill(dt1)
        Catch ex As SqlClient.SqlException
            Throw ex
        Catch ex As Exception
            Throw ex
        Finally
            If cn IsNot Nothing Then
                If cn.State = ConnectionState.Open Then cn.Close()
            End If
        End Try

        cn = Nothing

        Return dt

    End Function

    Public Function C58PrintSelectedFKGoods(ByVal FK As Integer) As System.Data.DataTable 'Implements IUsers.UserDelete

        Dim cn1 As System.Data.SqlClient.SqlConnection = Nothing
        Dim cmd1 As System.Data.SqlClient.SqlCommand
        Dim da1 As SqlClient.SqlDataAdapter = Nothing
        Dim dt1 As DataTable = Nothing

        Try
            cn1 = New System.Data.SqlClient.SqlConnection
            cn1.ConnectionString = _connectionString
            cn1.Open()
            cmd1 = New System.Data.SqlClient.SqlCommand
            With cmd1
                .Connection = cn1
                .CommandText = "C58PrintSelectedFKGoods"
                .CommandType = CommandType.StoredProcedure
                .CommandTimeout = 30
                .Parameters.Add("FK", SqlDbType.Int)
                .Parameters("FK").Direction = ParameterDirection.Input
                .Parameters("FK").Value = FK
            End With

            dt1 = New DataTable("C58AGoods")
            da1 = New SqlClient.SqlDataAdapter(cmd1)
            da1.Fill(dt1)
        Catch ex As SqlClient.SqlException
            Throw ex
        Catch ex As Exception
            Throw ex
        Finally
            If cn1 IsNot Nothing Then
                If cn1.State = ConnectionState.Open Then cn1.Close()
            End If
        End Try

        cn1 = Nothing

        Return dt1

    End Function
The thing is that those two reports individually are working but when they are combine they cannot produce both data as a report with a sub report.

Thanks in advance.