예제 #1
0
        private static void GenSingleTableRdlc(string rdlcFileName, ReportParameter rptParams, DataTable tabDesigner, string RealTableName, bool isDetails, DataRelation relation)
        {
            DataTable dtDataDic = GetDDTable(rptParams.ClientType, rptParams.SelectAlias, RealTableName);
            XmlDocument doc = new XmlDocument();
            doc.Load(rdlcFileName);

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
            nsmgr.AddNamespace("ms", ms);
            nsmgr.AddNamespace("rd", rd);
            //生成DataSources
            GenDataSources(doc, nsmgr);
            //生成DataSets
            GenDataSets(doc, nsmgr, tabDesigner);

            XmlNode startNode = GetStartXPathNode(doc, nsmgr, false, isDetails);
            XmlNode temNode = startNode;
            //ReportItems
            if (!isDetails)
            {
                temNode = doc.CreateElement("ReportItems", startNode.NamespaceURI);
            }
            ReportTable rptTable = isDetails ? rptParams.RptSet.ReportTables[1] : rptParams.RptSet.ReportTables[0];
            if (isDetails)
            {
                XmlNode nReport = doc.SelectSingleNode("ms:Report", nsmgr);
                //ReportParameters
                XmlNode nReportParameters = doc.CreateElement("ReportParameters", nReport.NamespaceURI);
                foreach (DataColumn parentCol in relation.ParentColumns)
                {
                    //ReportParameter
                    XmlNode nReportParameter = doc.CreateElement("ReportParameter", nReport.NamespaceURI);
                    XmlAttribute aReportParameterName = doc.CreateAttribute("Name");
                    aReportParameterName.Value = "p" + parentCol.ColumnName;
                    nReportParameter.Attributes.Append(aReportParameterName);
                    //ReportParameter.DataType
                    XmlNode nDataType = doc.CreateElement("DataType", nReport.NamespaceURI);
                    string type = parentCol.DataType.ToString();
                    if (type.IndexOf('.') != -1)
                        type = type.Substring(type.LastIndexOf('.') + 1);
                    if (type.StartsWith("Int"))
                        type = "Integer";
                    nDataType.InnerText = type;
                    nReportParameter.AppendChild(nDataType);
                    //ReportParameter.AllowBlank
                    XmlNode nAllowBlank = doc.CreateElement("AllowBlank", nReport.NamespaceURI);
                    nAllowBlank.InnerText = "true";
                    nReportParameter.AppendChild(nAllowBlank);
                    //ReportParameter.Prompt
                    XmlNode nPrompt = doc.CreateElement("Prompt", nReport.NamespaceURI);
                    nPrompt.InnerText = parentCol.ColumnName;
                    nReportParameter.AppendChild(nPrompt);
                    nReportParameters.AppendChild(nReportParameter);
                }
                nReport.AppendChild(nReportParameters);
                //caption
                float childColLeft = 0.25f;
                float childColTop = 0.25f;
                //XmlDocument docrealContext = startNode.OwnerDocument;
                //XmlNode temNode = startNode;
                //temNode = docrealContext.CreateElement("ReportItems", temNode.NamespaceURI);
                foreach (DataColumn parentCol in relation.ParentColumns)
                {
                    //caption
                    GenLabel(temNode, childColLeft, childColTop, "cap" + parentCol.ColumnName, GetFieldCaption(dtDataDic, parentCol.ColumnName), rptParams.HorGaps, rptParams.VertGaps, false);
                    childColLeft += (float)Convert.ToDouble(rptParams.HorGaps);
                    //value
                    GenLabel(temNode, childColLeft, childColTop, "txt" + parentCol.ColumnName, "=Parameters!p" + parentCol.ColumnName + ".Value", rptParams.HorGaps, rptParams.VertGaps, false);
                    childColLeft += (float)Convert.ToDouble(rptParams.HorGaps) + 0.5f;
                }
            }
            else
            {
                //给Title赋值
                XmlNode nTitleValue = GetTitleNode(doc, nsmgr, false).SelectSingleNode("ms:Value", nsmgr);
                nTitleValue.InnerText = rptTable.TableDescription;
            }

            #region GenDataRegion
            //float curLeft = 0.5f;
            float curTop = 0.5f;
            if (isDetails)
            {
                curTop = GetDataRegionTop(doc, nsmgr, false, isDetails);
            }
            //Table
            XmlNode nTable = doc.CreateElement("Table", startNode.NamespaceURI);
            XmlAttribute aTableName = doc.CreateAttribute("Name");
            aTableName.Value = "table1";
            nTable.Attributes.Append(aTableName);
            if (isDetails)
            {
                //Filters
                XmlNode nFilters = doc.CreateElement("Filters", nTable.NamespaceURI);

                for (int i = 0; i < relation.ParentColumns.Length; i++)
                {
                    //Filters.Filter
                    XmlNode nFilter = doc.CreateElement("Filter", nTable.NamespaceURI);
                    //Filters.Filter.Operator
                    XmlNode nOperator = doc.CreateElement("Operator", nTable.NamespaceURI);
                    nOperator.InnerText = "Equal";
                    nFilter.AppendChild(nOperator);
                    //Filters.Filter.FilterValues
                    XmlNode nFilterValues = doc.CreateElement("FilterValues", nTable.NamespaceURI);
                    //Filters.Filter.FilterValues.FilterValue
                    XmlNode nFilterValue = doc.CreateElement("FilterValue", nTable.NamespaceURI);
                    nFilterValue.InnerText = "=Parameters!p" + relation.ParentColumns[i].ColumnName + ".Value";
                    nFilterValues.AppendChild(nFilterValue);
                    nFilter.AppendChild(nFilterValues);
                    //Filters.Filter.FilterExpression
                    XmlNode nFilterExpression = doc.CreateElement("FilterExpression", nTable.NamespaceURI);
                    nFilterExpression.InnerText = "=Fields!" + relation.ChildColumns[i].ColumnName + ".Value";
                    nFilter.AppendChild(nFilterExpression);
                    nFilters.AppendChild(nFilter);
                }
                nTable.AppendChild(nFilters);
            }
            //Table.Left
            XmlNode nTableLeft = doc.CreateElement("Left", startNode.NamespaceURI);
            nTableLeft.InnerText = "0.5cm";
            nTable.AppendChild(nTableLeft);
            //Table.Top
            XmlNode nTableTop = doc.CreateElement("Top", startNode.NamespaceURI);
            nTableTop.InnerText = curTop.ToString() + "cm";
            nTable.AppendChild(nTableTop);
            //Table.DataSetName
            XmlNode nTableDataSetName = doc.CreateElement("DataSetName", startNode.NamespaceURI);
            nTableDataSetName.InnerText = "NewDataSet_" + tabDesigner.TableName;
            nTable.AppendChild(nTableDataSetName);
            //Table.ZIndex
            XmlNode nTableZIndex = doc.CreateElement("ZIndex", startNode.NamespaceURI);
            nTableZIndex.InnerText = "2";
            nTable.AppendChild(nTableZIndex);
            //Table.Width
            XmlNode nWidth = doc.CreateElement("Width", startNode.NamespaceURI);
            nWidth.InnerText = (2.7f * rptTable.ReportColumns.Count).ToString() + "cm";
            nTable.AppendChild(nWidth);
            //Table.Style
            XmlNode nTableStyle = doc.CreateElement("Style", startNode.NamespaceURI);
            //Table.Style.FontFamily
            XmlNode nFontFamily = doc.CreateElement("FontFamily", startNode.NamespaceURI);
            nFontFamily.InnerText = "PMingLiU";
            nTableStyle.AppendChild(nFontFamily);
            nTable.AppendChild(nTableStyle);
            //Table.TableGroups
            if (HasGroupCondition(rptTable))
            {
                GenTableGroups(nTable, rptTable, rptParams, RealTableName);
            }
            //Table.Header
            XmlNode nHeader = doc.CreateElement("Header", startNode.NamespaceURI);
            GenTableRows(nHeader, rptTable, rptParams, "hd", rptParams.ClientType, rptParams.SelectAlias, RealTableName);
            //Table.Header.RepeatOnNewPage
            XmlNode nRepeatOnNewPage = doc.CreateElement("RepeatOnNewPage", startNode.NamespaceURI);
            nRepeatOnNewPage.InnerText = "true";
            nHeader.AppendChild(nRepeatOnNewPage);
            nTable.AppendChild(nHeader);
            //Table.Details
            XmlNode nDetails = doc.CreateElement("Details", startNode.NamespaceURI);
            GenTableRows(nDetails, rptTable, rptParams, "cnt", rptParams.ClientType, rptParams.SelectAlias, RealTableName);
            nTable.AppendChild(nDetails);
            //Table.TableColumns
            GenTableColumns(nTable, rptTable.ReportColumns.Count, rptParams.HorGaps);
            temNode.AppendChild(nTable);
            if (!isDetails)
            {
                startNode.AppendChild(temNode);
            }
            #endregion
            doc.Save(rdlcFileName);
        }
예제 #2
0
        private ReportParameter GetRptParams()
        {
            ReportParameter rptParams = new ReportParameter();
            string dsName = "NewDataSet";
            if (_isWebReport)
            {
                rptParams.RptRootName = this.cmbRootName.Text;
                rptParams.RptXSDFile = this.cmbXSDName.Text;
                if (this.cmbXSDName.Text.IndexOf(".xsd") != -1)
                    dsName = this.cmbXSDName.Text.Substring(0, this.cmbXSDName.Text.IndexOf(".xsd"));
            }
            else
            {
                rptParams.RptProjName = this.cmbProName.Text;
                rptParams.RptXSDFile = this.cmbWinXSDName.Text;
                if (this.cmbWinXSDName.Text.IndexOf(".xsd") != -1)
                    dsName = this.cmbWinXSDName.Text.Substring(0, this.cmbWinXSDName.Text.IndexOf(".xsd"));
            }
            rptParams.RptFileNames = new string[] { this.txtRptFileName.Text, this.txtDetailsRptFileName.Text };
            rptParams.IsMasterDetails = this.chkIsMasterDetails.Checked;
            rptParams.RptStyle = (EEPReportStyle)this.cmbMasterReportStyle.SelectedIndex;
            rptParams.LayoutColumnNum = (int)this.numLayoutColumn.Value;
            rptParams.SelectAlias = this.cmbSelectAlias.Text;
            rptParams.ClientType = (ClientType)this.cmbDataBaseType.SelectedIndex;
            rptParams.RptSet = new ReportSet(dsName);
            rptParams.HorGaps = this.tbHorGaps.Text;
            rptParams.VertGaps = this.tbVertGaps.Text;

            foreach (System.Windows.Forms.TreeNode tabNode in this.tvGroupSelect.Nodes)
            {
                ReportTable tab = null;
                if (rptParams.IsMasterDetails)
                {
                    if (ds.Relations.Count > 0 && tabNode.Text != ds.Relations[0].ParentTable.TableName)
                        tab = new ReportTable(tabNode.Text);
                    else
                        tab = new ReportTable(tabNode.Text, this.txtRptCaption.Text);
                }
                else
                {
                    tab = new ReportTable(tabNode.Text, this.txtRptCaption.Text);
                }

                foreach (System.Windows.Forms.TreeNode colNode in tabNode.Nodes)
                {
                    tab.ReportColumns.Add(new ReportColumn(colNode.Text, colNode.Checked));
                }
                rptParams.RptSet.ReportTables.Add(tab);
            }

            return rptParams;
        }
예제 #3
0
        private static void GenSingleLabelRdlc(string rdlcFileName, ReportParameter rptParams, DataTable tabDesigner, string RealTableName, bool isMaster, string detailsRptFileName, DataColumn[] relationParentColumns)
        {
            //DataTable dtDataDic = GetDDTable(rptParams.ClientType, rptParams.SelectAlias, tabDesigner.TableName);
            DataTable dtDataDic = GetDDTable(rptParams.ClientType, rptParams.SelectAlias, RealTableName);
            XmlDocument doc = new XmlDocument();
            doc.Load(rdlcFileName);

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
            nsmgr.AddNamespace("ms", ms);
            nsmgr.AddNamespace("rd", rd);
            //生成DataSources
            GenDataSources(doc, nsmgr);
            //生成DataSets
            GenDataSets(doc, nsmgr, tabDesigner);
            //生成List
            GenList(doc, nsmgr, rptParams, tabDesigner.TableName);

            XmlNode startNode = GetStartXPathNode(doc, nsmgr, true, isMaster);
            //给Title赋值
            XmlNode nTitleValue = GetTitleNode(doc, nsmgr, true).SelectSingleNode("ms:Value", nsmgr);
            ReportTable rptTable = rptParams.RptSet.ReportTables[0];
            nTitleValue.InnerText = rptTable.TableDescription;

            #region GenDataRegion
            // Top Init
            float curLeft = 0.5f;
            float curTop = 0.5f;
            int layoutIndex = 0;
            XmlDocument docrealContext = startNode.OwnerDocument;
            XmlNode temNode = startNode;
            if (!isMaster)
            {
                temNode = docrealContext.CreateElement("ReportItems", temNode.NamespaceURI);
            }
            for (int i = 0; i < rptTable.ReportColumns.Count; i++)
            {
                string colName = rptTable.ReportColumns[i].ColumnName;
                string EditMask = GetFieldEditMask(dtDataDic, colName);
                if (layoutIndex >= rptParams.LayoutColumnNum)
                {
                    layoutIndex = 0;
                    curLeft = 0.5f;
                    curTop += 0.94f;

                    //GenLabel
                    GenLabel(temNode, curLeft, curTop, "lbl" + colName, GetFieldCaption(dtDataDic, colName) + ":", rptParams.HorGaps, rptParams.VertGaps, false);
                    //GenrTextBox
                    curLeft += (float)Convert.ToDouble(rptParams.HorGaps);
                    GenLabel(temNode, curLeft, curTop, "txt" + colName, EditMask, rptParams.HorGaps, rptParams.VertGaps, false);
                    layoutIndex++;
                    curLeft += (float)Convert.ToDouble(rptParams.HorGaps) + 0.5f;
                }
                else
                {
                    //GenLabel
                    GenLabel(temNode, curLeft, curTop, "lbl" + colName, GetFieldCaption(dtDataDic, colName) + ":", rptParams.HorGaps, rptParams.VertGaps, false);
                    //GenrTextBox
                    curLeft += (float)Convert.ToDouble(rptParams.HorGaps);
                    GenLabel(temNode, curLeft, curTop, "txt" + colName, EditMask, rptParams.HorGaps, rptParams.VertGaps, false);
                    layoutIndex++;
                    curLeft += (float)Convert.ToDouble(rptParams.HorGaps) + 0.5f;
                }
            }
            if (!isMaster)
            {
                startNode.AppendChild(temNode);
            }

            GenReportBodyHeight(doc, curTop, nsmgr, isMaster);

            #endregion

            if (isMaster)
            {
                XmlNode nSubReport = GetStartXPathNode(doc, nsmgr, true, isMaster).SelectSingleNode("ms:Subreport[@Name='subreport1']", nsmgr);

                //Parameters
                XmlNode nParameters = doc.CreateElement("Parameters", nSubReport.NamespaceURI);
                foreach (DataColumn col in relationParentColumns)
                {
                    //Parameters.Parameter
                    XmlNode nParameter = doc.CreateElement("Parameter", nSubReport.NamespaceURI);
                    XmlAttribute aParamName = doc.CreateAttribute("Name");
                    aParamName.Value = "p" + col.ColumnName;
                    nParameter.Attributes.Append(aParamName);
                    //Parameters.Parameter.Value
                    string EditMask = GetFieldEditMask(dtDataDic, col.ColumnName);
                    XmlNode nParamValue = doc.CreateElement("Value", nSubReport.NamespaceURI);
                    nParamValue.InnerText = EditMask;
                    nParameter.AppendChild(nParamValue);
                    nParameters.AppendChild(nParameter);
                }
                nSubReport.AppendChild(nParameters);

                nSubReport.SelectSingleNode("ms:ReportName", nsmgr).InnerText = detailsRptFileName;
            }
            doc.Save(rdlcFileName);
        }
예제 #4
0
 private static void GenSingleTableRdlc(string rdlcFileName, ReportParameter rptParams, DataTable tabDesigner, string RealTableName)
 {
     GenSingleTableRdlc(rdlcFileName, rptParams, tabDesigner, RealTableName, false, null);
 }
예제 #5
0
        private static void GenList(XmlDocument doc, XmlNamespaceManager nsmgr, ReportParameter rptParams, string designerTableName)
        {
            XmlNode nBodyRptItems = doc.SelectSingleNode("ms:Report/ms:Body/ms:ReportItems", nsmgr);
            XmlNode nRect = nBodyRptItems.SelectSingleNode("ms:Rectangle[@Name='rectContainer']", nsmgr);
            nBodyRptItems.RemoveChild(nRect);

            //List
            XmlNode nList = doc.CreateElement("List", nBodyRptItems.NamespaceURI);
            XmlAttribute aListName = doc.CreateAttribute("Name");
            aListName.Value = "lstContainer";
            nList.Attributes.Append(aListName);
            //生成Group设置
            if (HasGroupCondition(rptParams.RptSet.ReportTables[0]))
            {
                //Grouping
                XmlNode nGrouping = doc.CreateElement("Grouping", nList.NamespaceURI);
                XmlAttribute aGroupingName = doc.CreateAttribute("Name");
                aGroupingName.Value = "lstContainer_Details_" + designerTableName;
                nGrouping.Attributes.Append(aGroupingName);
                //Grouping.PageBreakAtEnd
                XmlNode nPageBreakAtEnd = doc.CreateElement("PageBreakAtEnd", nList.NamespaceURI);
                nPageBreakAtEnd.InnerText = "true";
                nGrouping.AppendChild(nPageBreakAtEnd);
                //Grouping.GroupExpressions
                XmlNode nGroupExpressions = doc.CreateElement("GroupExpressions", nList.NamespaceURI);
                List<ReportColumn> lstGroupConditionFields = GetGroupConditionRptColumns(rptParams.RptSet.ReportTables[0]);
                foreach (ReportColumn cdtField in lstGroupConditionFields)
                {
                    //Grouping.GroupExpressions.GroupExpression
                    XmlNode nGroupExpression = doc.CreateElement("GroupExpression", nList.NamespaceURI);

                    nGroupExpression.InnerText = "=Fields!" + cdtField.ColumnName + ".Value";
                    nGroupExpressions.AppendChild(nGroupExpression);
                }
                nGrouping.AppendChild(nGroupExpressions);
                nList.AppendChild(nGrouping);
            }
            //List.ReportItems
            XmlNode nListRptItems = doc.CreateElement("ReportItems", nBodyRptItems.NamespaceURI);
            nListRptItems.AppendChild(nRect);
            nList.AppendChild(nListRptItems);
            //List.Style
            XmlNode nListStyle = doc.CreateElement("Style", nBodyRptItems.NamespaceURI);
            //List.Style.FontFamily
            XmlNode nFont = doc.CreateElement("FontFamily", nBodyRptItems.NamespaceURI);
            nFont.InnerText = "PMingLiU";
            nListStyle.AppendChild(nFont);
            nList.AppendChild(nListStyle);
            nBodyRptItems.AppendChild(nList);
        }
예제 #6
0
        private static void GenMasterDetailsRdlc(string rdlcMasterFileName, string rdlcDetailsFileName, ReportParameter rptParams, DataSet dsDesigner, string masterRealTableName, string detailRealTabelName)
        {
            DataRelation relation = dsDesigner.Relations[0];
            //Master
            string rdlcName = rdlcDetailsFileName.Substring(rdlcDetailsFileName.LastIndexOf('\\') + 1, rdlcDetailsFileName.LastIndexOf('.') - rdlcDetailsFileName.LastIndexOf('\\') - 1);
            try
            {
                GenSingleLabelRdlc(rdlcMasterFileName, rptParams, dsDesigner.Tables[0], masterRealTableName, true, rdlcName, relation.ParentColumns);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            //Details
            try
            {
                GenSingleTableRdlc(rdlcDetailsFileName, rptParams, dsDesigner.Tables[1], detailRealTabelName, true, relation);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #7
0
        public static void GenWinReportFiles(Project ownerProj, ProjectItem projItem, ReportParameter rptParams, List<string> rptFileNames, List<string> RealTableName)
        {
            DataSet dsDesigner = new DataSet();
            string projDir = ownerProj.FullName.Substring(0, ownerProj.FullName.IndexOf(ownerProj.Name));
            string ctPath = EEPRegistry.Client;
            string ct = "";
            if (ctPath.ToLower().IndexOf("eepnetclient") != -1)
                ct = "eepnetclient";
            else if (ctPath.ToLower().IndexOf("eepnetflclient") != -1)
                ct = "eepnetflclient";
            if (!string.IsNullOrEmpty(ct))
                ctPath = ctPath.Substring(0, ctPath.ToLower().IndexOf(ct));
            dsDesigner.ReadXmlSchema(projDir + ownerProj.Name + "\\" + projItem.Name);
            if (rptParams.RptSet.ReportTables.Count == 1) // Single
            {
                string filename = GetRptFileName(rptFileNames[0]);
                if (!IsFileExisted(ownerProj.ProjectItems, filename))
                    return;

                if (rptParams.RptStyle == EEPReportStyle.Label)
                {
                    ProjectItem genItem = ownerProj.ProjectItems.AddFromFileCopy(ctPath + @"EEPNetReport\SingleLabel.rdlc");
                    genItem.Name = filename;
                    try
                    {
                        GenSingleLabelRdlc(projDir + ownerProj.Name + "\\" + filename, rptParams, dsDesigner.Tables[0], RealTableName[0]);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else if (rptParams.RptStyle == EEPReportStyle.Table)
                {
                    ProjectItem genItem = ownerProj.ProjectItems.AddFromFileCopy(ctPath + @"EEPNetReport\SingleTable.rdlc");
                    genItem.Name = filename;
                    try
                    {
                        GenSingleTableRdlc(projDir + ownerProj.Name + "\\" + filename, rptParams, dsDesigner.Tables[0], RealTableName[0]);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else if (rptParams.RptSet.ReportTables.Count >= 2) // Master-Details
            {
                string masterFileName = GetRptFileName(rptFileNames[0]);
                string detailsFileName = GetRptFileName(rptFileNames[1]);
                string masterRealTableName = RealTableName[0];
                string detailRealTableName = RealTableName[1];
                if (!IsFileExisted(ownerProj.ProjectItems, masterFileName) || !IsFileExisted(ownerProj.ProjectItems, detailsFileName))
                    return;

                ProjectItem masterItem = ownerProj.ProjectItems.AddFromFileCopy(ctPath + @"EEPNetReport\LabelMaster.rdlc");
                masterItem.Name = masterFileName;

                ProjectItem detailsItem = ownerProj.ProjectItems.AddFromFileCopy(ctPath + @"EEPNetReport\TableDetails.rdlc");
                detailsItem.Name = detailsFileName;

                try
                {
                    GenMasterDetailsRdlc(projDir + ownerProj.Name + "\\" + masterItem.Name, projDir + ownerProj.Name + "\\" + detailsItem.Name, rptParams, dsDesigner, masterRealTableName, detailRealTableName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
예제 #8
0
        public static void GenWebReportFiles(ProjectItem ownerProj, ProjectItem projItem, ReportParameter rptParams, List<string> rptFileNames, List<string>RealTableName)
        {
            DataSet dsDesigner = new DataSet();
            string projDir = ownerProj.ContainingProject.FullName;
            string dir = projDir + ownerProj.Name + "\\";
            dsDesigner.ReadXmlSchema(dir + projItem.Name);
            if (rptParams.RptSet.ReportTables.Count == 1) // Single
            {
                string filename = GetRptFileName(rptFileNames[0]);
                if (!IsFileExisted(ownerProj.ProjectItems, filename))
                    return;

                if (rptParams.RptStyle == EEPReportStyle.Label)
                {
                    ProjectItem genItem = ownerProj.ProjectItems.AddFromFileCopy(projDir + @"Template\SingleLabel.rdlc");
                    genItem.Name = filename;
                    GenSingleLabelRdlc(dir + filename, rptParams, dsDesigner.Tables[0], RealTableName[0]);
                }
                else if (rptParams.RptStyle == EEPReportStyle.Table)
                {
                    ProjectItem genItem = ownerProj.ProjectItems.AddFromFileCopy(projDir + @"Template\SingleTable.rdlc");
                    genItem.Name = filename;
                    GenSingleTableRdlc(dir + filename, rptParams, dsDesigner.Tables[0], RealTableName[0]);
                }
            }
            else if (rptParams.RptSet.ReportTables.Count >= 2) // Master-Details
            {
                string masterFileName = GetRptFileName(rptFileNames[0]);
                string detailsFileName = GetRptFileName(rptFileNames[1]);
                string masterRealTableName = RealTableName[0];
                string detailRealTableName = RealTableName[1];
                if (!IsFileExisted(ownerProj.ProjectItems, masterFileName) || !IsFileExisted(ownerProj.ProjectItems, detailsFileName))
                    return;

                ProjectItem masterItem = ownerProj.ProjectItems.AddFromFileCopy(projDir + @"Template\LabelMaster.rdlc");
                masterItem.Name = masterFileName;

                ProjectItem detailsItem = ownerProj.ProjectItems.AddFromFileCopy(projDir + @"Template\TableDetails.rdlc");
                detailsItem.Name = detailsFileName;

                GenMasterDetailsRdlc(dir + masterItem.Name, dir + detailsItem.Name, rptParams, dsDesigner, masterRealTableName, detailRealTableName);
            }
        }
예제 #9
0
 public static void GenTableRows(XmlNode nParent, ReportTable rptTable, ReportParameter rptParams, string tag, ClientType dataBaseType, string dbName, string RealTableName)
 {
     XmlDocument doc = nParent.OwnerDocument;
     //TableRows
     XmlNode nTableRows = doc.CreateElement("TableRows", nParent.NamespaceURI);
     //TableRows.TableRow
     XmlNode nTableRow = doc.CreateElement("TableRow", nParent.NamespaceURI);
     GenTableCells(nTableRow, rptTable, rptParams, tag, dataBaseType, dbName, RealTableName);
     //TableRows.TableRow.Height
     XmlNode nHeight = doc.CreateElement("Height", nParent.NamespaceURI);
     nHeight.InnerText = rptParams.VertGaps + "cm";
     nTableRow.AppendChild(nHeight);
     nTableRows.AppendChild(nTableRow);
     nParent.AppendChild(nTableRows);
 }
예제 #10
0
        public static void GenTableGroups(XmlNode nParent, ReportTable rptTable, ReportParameter rptParams, string RealTableName)
        {
            XmlDocument doc = nParent.OwnerDocument;
            //TableGroups
            XmlNode nTableGroups = doc.CreateElement("TableGroups", nParent.NamespaceURI);
            //TableGroups.TableGroup
            XmlNode nTableGroup = doc.CreateElement("TableGroup", nParent.NamespaceURI);
            //TableGroups.TableGroup.Header
            XmlNode nHeader = doc.CreateElement("Header", nParent.NamespaceURI);
            GenTableRows(nHeader, rptTable, rptParams, "hdg", ClientType.ctMsSql, string.Empty, RealTableName);
            nTableGroup.AppendChild(nHeader);

            //TableGroups.TableGroup.Grouping
            XmlNode nGrouping = doc.CreateElement("Grouping", nParent.NamespaceURI);
            XmlAttribute aGroupingName = doc.CreateAttribute("Name");
            aGroupingName.Value = "table1_Group1";
            nGrouping.Attributes.Append(aGroupingName);
            //TableGroups.TableGroup.Grouping.PageBreakAtEnd
            XmlNode nPageBreakAtEnd = doc.CreateElement("PageBreakAtEnd", nParent.NamespaceURI);
            nPageBreakAtEnd.InnerText = "true";
            nGrouping.AppendChild(nPageBreakAtEnd);
            //TableGroups.TableGroup.Grouping.GroupExpressions
            XmlNode nGroupExpressions = doc.CreateElement("GroupExpressions", nParent.NamespaceURI);
            List<ReportColumn> lstGroupConditionFields = GetGroupConditionRptColumns(rptTable);
            foreach (ReportColumn cdtField in lstGroupConditionFields)
            {
                //TableGroups.TableGroup.Grouping.GroupExpressions.GroupExpression
                XmlNode nGroupExpression = doc.CreateElement("GroupExpression", nParent.NamespaceURI);
                nGroupExpression.InnerText = "=Fields!" + cdtField.ColumnName + ".Value";
                nGroupExpressions.AppendChild(nGroupExpression);
            }
            nGrouping.AppendChild(nGroupExpressions);
            nTableGroup.AppendChild(nGrouping);
            nTableGroups.AppendChild(nTableGroup);
            nParent.AppendChild(nTableGroups);
        }
예제 #11
0
        public static void GenTableCells(XmlNode nParent, ReportTable rptTable, ReportParameter rptParams, string tag, ClientType databaseType, string dbName, string RealTableName)
        {
            DataTable tabDataDic = null;
            //if (tag == "hd")
            //{
            tabDataDic = GetDDTable(databaseType, dbName, RealTableName);
            //}
            XmlDocument doc = nParent.OwnerDocument;
            //TableCells
            XmlNode nTableCells = doc.CreateElement("TableCells", nParent.NamespaceURI);
            List<ReportColumn> lstGCols = GetGroupConditionRptColumns(rptTable);
            foreach (ReportColumn rptCol in rptTable.ReportColumns)
            {
                if (!lstGCols.Contains(rptCol))
                {
                    lstGCols.Add(rptCol);
                }
            }
            foreach (ReportColumn rptCol in lstGCols)
            {
                //TableCells.TableCell
                XmlNode nTableCell = doc.CreateElement("TableCell", nParent.NamespaceURI);
                //TableCells.TableCell.ReportItems
                XmlNode nReportItems = doc.CreateElement("ReportItems", nParent.NamespaceURI);
                //TableCell Expression
                if (tag == "hd")
                {
                    GenLabel(nReportItems, 0, 0, tag + rptCol.ColumnName, GetFieldCaption(tabDataDic, rptCol.ColumnName), rptParams.HorGaps, rptParams.VertGaps, true);
                }
                else if (tag == "cnt")
                {
                    if (!rptCol.IsGroupCondition)
                    {

                        string EditMask = GetFieldEditMask(tabDataDic, rptCol.ColumnName);
                        GenLabel(nReportItems, 0, 0, tag + rptCol.ColumnName, EditMask, rptParams.HorGaps, rptParams.VertGaps, true);
                    }
                    else
                    {
                        GenLabel(nReportItems, 0, 0, tag + rptCol.ColumnName, "", rptParams.HorGaps, rptParams.VertGaps, true);
                    }
                }
                else if (tag == "hdg")
                {
                    if (rptCol.IsGroupCondition)
                    {

                        string EditMask = GetFieldEditMask(tabDataDic, rptCol.ColumnName);
                        GenLabel(nReportItems, 0, 0, tag + rptCol.ColumnName, EditMask, rptParams.HorGaps, rptParams.VertGaps, true);
                    }
                    else
                    {
                        GenLabel(nReportItems, 0, 0, tag + rptCol.ColumnName, "", rptParams.HorGaps, rptParams.VertGaps, true);
                    }
                }
                nTableCell.AppendChild(nReportItems);
                nTableCells.AppendChild(nTableCell);
            }
            nParent.AppendChild(nTableCells);
        }