StableVersion4.3/HL_FristAidPlatform_Print/GridppReportUtility.cs

189 lines
5.9 KiB
C#
Raw Permalink Normal View History

2024-03-11 09:47:34 +08:00
using gregn6Lib;
using System;
using System.Data;
using System.Windows.Forms;
namespace HL_FristAidPlatform_Print
{
/// <summary>
/// GridppReport <20><>ժҪ˵<D2AA><CBB5><EFBFBD><EFBFBD>
/// </summary>
public class GridppReportUtility
{
//public const string GetDatabaseConnectionString() = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\..\..\Data\Northwind.mdb";
//<2F>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Grid++Report<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>кŴ<D0BA><C5B4><EFBFBD>"AAAAAAA"<22><>"AAAAAAA"<22><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
public static void RegisterGridppReport()
{
GridppReport TempGridppReport = new GridppReport();
bool Succeeded = TempGridppReport.Register("AAAAAAA");
if ( !Succeeded )
System.Windows.Forms.MessageBox.Show("Register Grid++Report Failed, Grid++Report will run in trial mode.", "Register"
,System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation);
}
private struct MatchFieldPairType
{
public IGRField grField;
public int MatchColumnIndex;
}
/// <summary>
/// <20><> DataReader <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD> Grid++Report <20><><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
/// </summary>
/// <param name="Report"></param>
/// <param name="dr"></param>
public static void FillRecordToReport(IGridppReport Report, IDataReader dr)
{
MatchFieldPairType[] MatchFieldPairs = new MatchFieldPairType[Math.Min(Report.DetailGrid.Recordset.Fields.Count, dr.FieldCount)];
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>ƥ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD>DataReader<65>ֶ<EFBFBD><D6B6><EFBFBD>Grid++Report<72><74>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD>Ķ<EFBFBD>Ӧ<EFBFBD><D3A6>ϵ
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.
// <20><> DataReader <20>е<EFBFBD>ÿһ<C3BF><D2BB><EFBFBD><EFBFBD>¼ת<C2BC><D7AA><EFBFBD><EFBFBD>Grid++Report <20><><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>ȥ
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();
}
}
/// <summary>
/// <20><> DataTable <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD> Grid++Report <20><><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
/// </summary>
/// <param name="Report"></param>
/// <param name="dt"></param>
public static void FillRecordToReport(IGridppReport Report, DataTable dt)
{
MatchFieldPairType[] MatchFieldPairs = new MatchFieldPairType[Math.Min(Report.DetailGrid.Recordset.Fields.Count, dt.Columns.Count)];
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>ƥ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD>DataReader<65>ֶ<EFBFBD><D6B6><EFBFBD>Grid++Report<72><74>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD>Ķ<EFBFBD>Ӧ<EFBFBD><D3A6>ϵ
int MatchFieldCount = 0;
for (int i=0; i<dt.Columns.Count; ++i)
{
foreach (IGRField fld in Report.DetailGrid.Recordset.Fields)
{
if (String.Compare(fld.Name, dt.Columns[i].ColumnName, true) == 0)
{
MatchFieldPairs[MatchFieldCount].grField = fld;
MatchFieldPairs[MatchFieldCount].MatchColumnIndex = i;
++MatchFieldCount;
break;
}
}
}
// <20><> DataTable <20>е<EFBFBD>ÿһ<C3BF><D2BB><EFBFBD><EFBFBD>¼ת<C2BC><D7AA><EFBFBD><EFBFBD> Grid++Report <20><><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>ȥ
foreach (DataRow dr in dt.Rows)
{
Report.DetailGrid.Recordset.Append();
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();
}
}
public static uint RGBToOleColor(byte r, byte g, byte b)
{
return ((uint)b)*256*256 + ((uint)g)*256 + r;
}
public static uint ColorToOleColor(System.Drawing.Color val)
{
return RGBToOleColor(val.R, val.G, val.B);
}
public static string GetSampleRootPath()
{
string FileName = Application.StartupPath.ToLower();
int Index = FileName.LastIndexOf("samples");
FileName = FileName.Substring(0, Index);
return FileName + @"samples\";
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ַ
/// </summary>
/// <returns></returns>
public static string GetReportTemplatePath()
{
return GetSampleRootPath() + @"Reports\";
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ַ
/// </summary>
/// <returns></returns>
public static string GetReportDataPath()
{
return GetSampleRootPath() + @"Data\";
}
/// <summary>
/// <20><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
/// </summary>
/// <returns></returns>
public static string GetReportDataPathFile()
{
return GetReportDataPath() + @"NorthWind.mdb";
}
/// <summary>
/// <20>жϵ<D0B6>ǰ<EFBFBD><C7B0><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>64λ<34><CEBB><EFBFBD><EFBFBD>
/// </summary>
/// <returns></returns>
public static bool Is64bitProcess()
{
//IsWow64Process
//Ҳ<><D2B2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>Environment.Is64BitProcess<73><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪDotNet4.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ汾<EFBFBD><EFBFBD>
return (IntPtr.Size == 8);
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
/// </summary>
/// <returns></returns>
public static string GetDatabaseConnectionString()
{
//return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + GetReportDataPathFile();
//Grid++Report<72><74>64λ<34><CEBB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>OLE DB<44><42><EFBFBD><EFBFBD>Access<73><73>32λ<32><CEBB><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AccessDatabaseEngine_X64.exe)û<>и<EFBFBD><D0B8><EFBFBD>Windowsϵͳ<CFB5>Զ<EFBFBD><D4B6><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>
//΢<><CEA2><EFBFBD>ٷ<EFBFBD><D9B7><EFBFBD>վ<EFBFBD><D5BE><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>װ,
//<2F><><EFBFBD>ص<EFBFBD>ַ<EFBFBD><D6B7>https://www.microsoft.com/zh-CN/download/details.aspx?id=13255
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ<EFBFBD><D3B2>ܰ<EFBFBD>װ<EFBFBD><D7B0>Ҫ<EFBFBD>Ƚ<EFBFBD>Ofiiceж<65>غ<EFBFBD><D8BA>ٽ<EFBFBD><D9BD>а<EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD>װOffice<63><65>
return (Is64bitProcess()?
"Provider = Microsoft.ACE.OLEDB.12.0;"
: "Provider=Microsoft.Jet.OLEDB.4.0;")
+ "User ID=Admin;Data Source=" + GetReportDataPathFile();
} }
}