init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
191
Kreta.BusinessLogic/Classes/SDAPrintReport.cs
Normal file
191
Kreta.BusinessLogic/Classes/SDAPrintReport.cs
Normal file
|
@ -0,0 +1,191 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using FastReport;
|
||||
|
||||
namespace Kreta.BusinessLogic.Classes
|
||||
{
|
||||
public enum PrintReportStatus
|
||||
{
|
||||
Sikeres,
|
||||
Hibas,
|
||||
NincsTemplate
|
||||
}
|
||||
|
||||
public static class SDAPrintReport
|
||||
{
|
||||
//public static byte[] PrintDataTableReport(Kreta.Enums.FormTypeEnum FormType, DataTable tblData, out PrintReportStatus status)
|
||||
//{
|
||||
// string strReport = "";
|
||||
// byte[] strRetVal = null;
|
||||
// FastReport.Report report = new Report();
|
||||
// status = PrintReportStatus.Hibas;
|
||||
|
||||
// //Nyomtatási template-k betöltése
|
||||
|
||||
// Kreta.Framework.Caching.TemplateCache cache = SDAServer.Instance.CacheManager.AquireCache<Kreta.Framework.Caching.TemplateCache>();
|
||||
// Dictionary<int, string> frTemplates = null;
|
||||
|
||||
// //Amennyiben nem volt template
|
||||
// if (frTemplates.Count > 0)
|
||||
// {
|
||||
// foreach (int TemplateId in frTemplates.Keys)
|
||||
// {
|
||||
// strReport = cache.GetTemplate(TemplateId);
|
||||
// }
|
||||
|
||||
// if (!string.IsNullOrWhiteSpace(strReport))
|
||||
// {
|
||||
// byte[] myByte = System.Text.Encoding.Default.GetBytes(strReport);
|
||||
// System.IO.MemoryStream myStream = new System.IO.MemoryStream(myByte);
|
||||
// report.Load(myStream);
|
||||
// report.RegisterData(tblData, tblData.TableName);
|
||||
|
||||
// strRetVal = ExportFR3ToPDF(report);
|
||||
// status = PrintReportStatus.Sikeres;
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// status = PrintReportStatus.NincsTemplate;
|
||||
// }
|
||||
|
||||
// return strRetVal;
|
||||
//}
|
||||
|
||||
private static void GeneratePrintData(Report report, DataTable tblData)
|
||||
{
|
||||
report.RegisterData(tblData, tblData.TableName);
|
||||
report.Prepare(true);
|
||||
}
|
||||
|
||||
private static string ExportFR3ToHTML(Report report)
|
||||
{
|
||||
report.ReportInfo.Author = "Kréta.NET Egységes Tanulmányi Rendszer";
|
||||
report.PrintSettings.ShowDialog = false;
|
||||
|
||||
FastReport.Export.Html.HTMLExport export = new FastReport.Export.Html.HTMLExport();
|
||||
export.ShowProgress = false;
|
||||
|
||||
System.IO.MemoryStream ms = new System.IO.MemoryStream();
|
||||
StringBuilder build = new StringBuilder();
|
||||
export.Export(report, ms);
|
||||
|
||||
ms.Position = 0;
|
||||
ms.Seek(0, SeekOrigin.Begin);
|
||||
StreamReader rd = new StreamReader(ms);
|
||||
char[] bytes = new char[ms.Length];
|
||||
rd.ReadBlock(bytes, 0, (int)ms.Length);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.EnsureCapacity((int)ms.Length);
|
||||
sb.Append(bytes);
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
/// <summary>
|
||||
/// Elkészült FR exportálása PDF formátumba
|
||||
/// </summary>
|
||||
/// <param name="report">ReportClass, amiből PDF -et szeretnénk készíteni</param>
|
||||
/// <returns></returns>
|
||||
public static byte[] ExportFR3ToPDF(Report report)
|
||||
{
|
||||
report.Prepare(true);
|
||||
System.IO.MemoryStream ms = new System.IO.MemoryStream();
|
||||
|
||||
FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport();
|
||||
|
||||
export.ShowProgress = false;
|
||||
export.EmbeddingFonts = true;
|
||||
report.ReportInfo.Author = "Kréta.NET Egységes Tanulmányi Rendszer";
|
||||
report.PrintSettings.ShowDialog = false;
|
||||
export.Export(report, ms);
|
||||
ms.Position = 0;
|
||||
return ms.ToArray();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Leellenőrzi, hogy a paraméterül kapott templateben lévő összes hivatkozás szerepel-e az adattábla oszlopai között
|
||||
/// </summary>
|
||||
/// <param name="template"></param>
|
||||
/// <param name="table"></param>
|
||||
/// <returns>Ha volt eltérés, akkor azok a hivatkozások, amellyek az adattáblában nem szerepelnek, de a templateben igen</returns>
|
||||
public static string CheckTableColumnNamesAndReportDatas(string template, DataTable table)
|
||||
{
|
||||
string tmp = template;
|
||||
List<string> templatebenhivatkozasok = new List<string>();
|
||||
// Fejlécben lévő hivatkozások kiszedése
|
||||
int oeleje = tmp.IndexOf("<Column"); // oszlop elem kiszedése xml-ből (eleje)
|
||||
int ovege = tmp.IndexOf("/>", oeleje); // oszlop elem kiszedése xml-ből (vége)
|
||||
int neleje = -1; // a fejlcében lévő hivatkozások Name tagnak az eleje
|
||||
int nvege = -1; // a fejlcében lévő hivatkozások Name tagnak a vége
|
||||
string seged = "";
|
||||
while (oeleje > -1)
|
||||
{
|
||||
ovege = tmp.IndexOf("/>", oeleje);
|
||||
seged = tmp.Substring(oeleje, ovege - oeleje + 2);
|
||||
tmp = tmp.Remove(0, ovege + 2);
|
||||
neleje = seged.IndexOf("Name=");
|
||||
if (neleje > -1)
|
||||
{
|
||||
nvege = seged.IndexOf('"', neleje + 7);
|
||||
templatebenhivatkozasok.Add(seged.Substring(neleje + 6, nvege - (neleje + 6)).ToUpper());
|
||||
}
|
||||
oeleje = tmp.IndexOf("<Column");
|
||||
}
|
||||
// Törzsben lévő hivatkozások kiszedése
|
||||
oeleje = tmp.IndexOf("<TextObject"); // textobject elem kiszedése xml-ből (eleje)
|
||||
ovege = tmp.IndexOf("/>", oeleje); // tectobjoct elem kiszedése xml-ből (vége)
|
||||
neleje = -1; // a törzsben lévő hivatkozások Text tagnak az eleje
|
||||
nvege = -1; // a törzsben lévő hivatkozások Text tagnak a vége
|
||||
seged = "";
|
||||
string seged2 = "";
|
||||
while (oeleje > -1)
|
||||
{
|
||||
ovege = tmp.IndexOf("/>", oeleje);
|
||||
seged = tmp.Substring(oeleje, ovege - oeleje + 2);
|
||||
tmp = tmp.Remove(0, ovege + 2);
|
||||
neleje = seged.IndexOf("Text=\"[");
|
||||
if (neleje > -1)
|
||||
{
|
||||
nvege = seged.IndexOf(']', neleje + 8);
|
||||
seged2 = seged.Substring(neleje + 7, nvege - (neleje + 7));
|
||||
neleje = seged2.IndexOf('.');
|
||||
nvege = seged2.Length;
|
||||
if (neleje > -1)
|
||||
{
|
||||
templatebenhivatkozasok.Add(seged2.Substring(neleje + 1, nvege - (neleje + 1)).ToUpper());
|
||||
}
|
||||
}
|
||||
oeleje = tmp.IndexOf("<TextObject");
|
||||
}
|
||||
// Az adattáblában lévő oszlopneve
|
||||
List<string> columnnames = new List<string>();
|
||||
for (int i = 0; i < table.Columns.Count; i++)
|
||||
{
|
||||
columnnames.Add(table.Columns[i].ColumnName.ToUpper());
|
||||
}
|
||||
|
||||
string result = "Az adattáblában lévő oszlopok között nem szerepelnek a következő hivatkozások a reportban: ";
|
||||
List<string> nemletezooszlophivatkozasok = new List<string>();
|
||||
foreach (string s in templatebenhivatkozasok)
|
||||
{
|
||||
if (!columnnames.Contains(s))
|
||||
{
|
||||
nemletezooszlophivatkozasok.Add(s);
|
||||
}
|
||||
}
|
||||
if (nemletezooszlophivatkozasok.Count == 0)
|
||||
{
|
||||
result = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
result += string.Join(",", nemletezooszlophivatkozasok);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue