189 lines
5.9 KiB
C#
189 lines
5.9 KiB
C#
|
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();
|
|||
|
|
|||
|
} }
|
|||
|
}
|