// 将 DataReader 的数据转储到 Grid++Report 的数据集中 public static void FillRecordToReport(IGridppReport Report, IDataReader dr) { MatchFieldPairType[] MatchFieldPairs = new MatchFieldPairType[Math.Min(Report.DetailGrid.Recordset.Fields.Count, dr.FieldCount)]; //根据字段名称与列名称进行匹配,建立DataReader字段与Grid++Report记录集的字段之间的对应关系 int MatchFieldCount = 0; for (int i = 0; i < dr.FieldCount; ++i) { foreach (IGRField fld in Report.DetailGrid.Recordset.Fields) { if (String.Compare(fld.RunningDBField, dr.GetName(i), true) == 0) { MatchFieldPairs[MatchFieldCount].grField = fld; MatchFieldPairs[MatchFieldCount].MatchColumnIndex = i; ++MatchFieldCount; break; } } } // Loop through the contents of the OleDbDataReader object. // 将 DataReader 中的每一条记录转储到Grid++Report 的数据集中去 while (dr.Read()) { Report.DetailGrid.Recordset.Append(); for (int i = 0; i < MatchFieldCount; ++i) { if (!dr.IsDBNull(MatchFieldPairs[i].MatchColumnIndex)) { MatchFieldPairs[i].grField.Value = dr.GetValue(MatchFieldPairs[i].MatchColumnIndex); } } Report.DetailGrid.Recordset.Post(); } }
private void PrintReport(DataTable dtData) { try { grproLib.GridppReportClass gridReportObject = new grproLib.GridppReportClass(); gridReportObject.LoadFromFile(Reports.药库药品明细三级分类账); //gridReportObject.get_ReportHeader( 1 ).Visible = false; //gridReportObject.get_ReportFooter( 1 ).Visible = false; gridReportObject.ParameterByName("科室").AsString = InstanceForm._currentDept.DeptName; gridReportObject.FetchRecord += delegate() { if (dtData != null) { int index; MatchFieldPairType[] typeArray = new MatchFieldPairType[Math.Min(gridReportObject.DetailGrid.Recordset.Fields.Count, dtData.Columns.Count)]; int num = 0; for (index = 0; index < dtData.Columns.Count; index++) { foreach (grproLib.IGRField field in gridReportObject.DetailGrid.Recordset.Fields) { if (string.Compare(field.Name, dtData.Columns[index].ColumnName, true) == 0) { typeArray[num].grField = field; typeArray[num].MatchColumnIndex = index; num++; break; } } } foreach (DataRow row in dtData.Rows) { gridReportObject.DetailGrid.Recordset.Append(); for (index = 0; index < num; index++) { if (!row.IsNull(typeArray[index].MatchColumnIndex)) { typeArray[index].grField.Value = row[typeArray[index].MatchColumnIndex]; } } gridReportObject.DetailGrid.Recordset.Post(); } } }; gridReportObject.PrintPreviewEx(grproLib.GRPrintGenerateStyle.grpgsOnlyContent, true, false); } catch { } }
// 将 DataTable 的数据转储到 Grid++Report 的数据集中(jchl) public static void FillDataTableToReport(IGridppReport Report, DataTable dt) { MatchFieldPairType[] MatchFieldPairs = new MatchFieldPairType[Math.Min(Report.DetailGrid.Recordset.Fields.Count, dt.Columns.Count)]; //根据字段名称与列名称进行匹配,建立DataReader字段与Grid++Report记录集的字段之间的对应关系 int MatchFieldCount = 0; for (int i = 0; i < dt.Columns.Count; ++i) { foreach (IGRField fld in Report.DetailGrid.Recordset.Fields) { if (String.Compare(fld.DBFieldName, dt.Columns[i].ColumnName, true) == 0) { MatchFieldPairs[MatchFieldCount].grField = fld; MatchFieldPairs[MatchFieldCount].MatchColumnIndex = i; ++MatchFieldCount; break; } } } //Report.DetailGrid.Recordset. // 将 DataTable 中的每一条记录转储到 Grid++Report 的数据集中去 foreach (DataRow dr in dt.Rows) { Report.DetailGrid.Recordset.Append(); //Report.DetailGrid.AppendBlankRowAtLast = true; //Report.DetailGrid.Recordset.Assign //Report. for (int i = 0; i < MatchFieldCount; ++i) { if (!dr.IsNull(MatchFieldPairs[i].MatchColumnIndex)) { MatchFieldPairs[i].grField.Value = dr[MatchFieldPairs[i].MatchColumnIndex]; } } Report.DetailGrid.Recordset.Post(); } }