public bool FormatReport(string fullPathXmlFileName, string fullPathReportGeneratorFileName)
        {
            if (string.IsNullOrEmpty(fullPathXmlFileName) || string.IsNullOrEmpty(fullPathReportGeneratorFileName))
            {
                return(false);
            }

            // check for existences of files
            if (!File.Exists(fullPathXmlFileName))
            {
                return(false);
            }

            if (!File.Exists(fullPathReportGeneratorFileName))
            {
                return(false);
            }

            if (cryRptDoc == null)
            {
                cryRptDoc = new ReportDocument();
                if (cryRptDoc == null)
                {
                    return(false);
                }
            }

            // create temp dataset to read xml information
            RunDataSet1 dsTempReport = new RunDataSet1();

            try
            {
                // using ReadXml method of DataSet read XML data from books.xml file
                dsTempReport.ReadXml(fullPathXmlFileName, XmlReadMode.IgnoreSchema);

                GetTableData(dsTempReport);

                cryRptDoc.Load(fullPathReportGeneratorFileName);
                cryRptDoc.SetDataSource(dsTempReport);
                AdjustLayout(cryRptDoc);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(false);
            }
            return(true);
        }
        private void GetTableData(RunDataSet1 dsTempReport)
        {
            if (dsTempReport == null)
            {
                return;
            }

            ClearDisplayElementData();

            for (int i = 0; i < dsTempReport.Tables.Count; i++)
            {
                DataTable dtable = dsTempReport.Tables[i];
                if (dtable.TableName == TableNameRunDetails)
                {
                    for (int j = 0; j < dtable.Rows.Count; j++)
                    {
                        DataRow objDataRow = dtable.Rows[j];
                        if (objDataRow == null)
                        {
                            continue;
                        }

                        int nIndex = 0;
                        foreach (DataColumn objDataColumn in dtable.Columns)
                        {
                            System.Diagnostics.Debug.WriteLine(String.Format("Column Name = {0}, Value = {1}", objDataColumn.ColumnName, objDataRow[objDataColumn]));

                            if ((objDataRow[objDataColumn] != null || objDataRow[objDataColumn] != System.DBNull.Value) && objDataRow[objDataColumn].GetType() == (typeof(string)))
                            {
                                string sData = (string)objDataRow[objDataColumn];
                                if (string.IsNullOrEmpty(sData))
                                {
                                    continue;
                                }

                                nIndex = 0;
                                do
                                {
                                    nIndex = lstRunDetailsDisplayElements.FindIndex(nIndex, x => { return(!string.IsNullOrEmpty(x.TableFieldName) && x.TableFieldName.ToLower() == objDataColumn.ColumnName.ToLower()); });
                                    if (0 <= nIndex)
                                    {
                                        if (string.IsNullOrEmpty(lstRunDetailsDisplayElements[nIndex].Name))
                                        {
                                            lstRunDetailsDisplayElements[nIndex].Name = sData;
                                        }
                                        else
                                        {
                                            // assume longer strings occupy more spaces.
                                            if (lstRunDetailsDisplayElements[nIndex].Name.Length < sData.Length)
                                            {
                                                lstRunDetailsDisplayElements[nIndex].Name = sData;
                                            }
                                        }
                                        nIndex++;
                                    }
                                } while (0 <= nIndex);
                            }
                        }
                    }
                }

                if (dtable.TableName == TableNameRunSummary)
                {
                    for (int j = 0; j < dtable.Rows.Count; j++)
                    {
                        DataRow objDataRow = dtable.Rows[j];
                        if (objDataRow == null)
                        {
                            continue;
                        }

                        int nIndex = 0;
                        foreach (DataColumn objDataColumn in dtable.Columns)
                        {
                            if ((objDataRow[objDataColumn] != null || objDataRow[objDataColumn] != System.DBNull.Value) && objDataRow[objDataColumn].GetType() == (typeof(string)))
                            {
                                string sData = (string)objDataRow[objDataColumn];
                                if (string.IsNullOrEmpty(sData))
                                {
                                    continue;
                                }

                                nIndex = lstRunSummaryDisplayElements.FindIndex(x => { return(!string.IsNullOrEmpty(x.ColumnName) && x.ColumnName.ToLower() == objDataColumn.ColumnName.ToLower()); });
                                if (0 <= nIndex)
                                {
                                    lstRunSummaryDisplayElements[nIndex].ListData.Add(sData);
                                }
                            }
                        }
                    }
                }
            }
        }