- HiFi műszaki szemmel - sztereó hangrendszerek
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Home server / házi szerver építése
- A Windows 11 lett az úr az asztali PC-k piacán
- Házimozi belépő szinten
- Milyen billentyűzetet vegyek?
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Hisense LCD és LED TV-k
- OLED TV topic
- Bronz hatásfokú Rosewill tápok 12V-2x6 csatolóval
Új hozzászólás Aktív témák
-
NoMan
csendes tag
Hát igen nagyjából ez! Csak annyi hogy én ezt kiheréltem ki kicsit.
És, hogyan tudom én mindezt a memóriában végrehajtani? Mert tényleg nagyon zavaró ez a 5-7mp, amíg történik valami. Ezzel a programmal emberek dolgoznak és az én anyám szidjak, hogy mit tököl ez a sz...r program.
Egyszóval közellenség vagyok, így ezt valahol meg kell oldanom.
Van valakinek ötlete?
-
NoMan
csendes tag
Akkor is legalább 3mp a render idő, ha csak egy label elem van az rdclen, amibe beleírtam egy szöveget. Tehát teljesen adatfüggetlen nyomtatási kép esetén is lassú a render idő.
Így hívom meg az osztályt:
LocalReport report = new LocalReport();
report.ReportEmbeddedResource = "<rdcl neve>.rdlc";
Report_DataSet dataSet = new Report_DataSet();
DataTable dataTable = dataSet.dataGridView_List;
DataRow dataRow = null;
foreach (DataGridViewRow row in dataGridViewProductList.Rows)
{
dataRow = dataTable.NewRow();
dataRow["productId"] = ((row.Cells["colProductId"].Value != null) ? row.Cells["colProductId"].Value.ToString() : "");
dataRow["productName"] = ((row.Cells["colProductName"].Value != null) ? row.Cells["colProductName"].Value.ToString() : "");
dataRow["productCount"] = ((row.Cells["colProductCount"].Value != null) ? row.Cells["colProductCount"].Value.ToString() : "");
dataTable.Rows.Add(dataRow);
}
report.DataSources.Add(new ReportDataSource("dataGridView_List", dataTable));
using (Printer printer = new Printer())
{
printer.Run(report);
} -
NoMan
csendes tag
Sziasztok,
Az alábbi osztály (MSDN-ről szedtem) segítségével kezdeményezem az elkészített, feltöltött RDLC nyomtatását Visual Studio 2012-ban. A gondom ezzel az, hogy az Export metódus report.render hívása 5 másodpercig is elszórakozik, mire elkészül, és valóban megkezdődik a nyomtatás, még abban az esetben is, ha csak 1 sornyi adatot kell rendelni és nyomtatni. Mitől lehet lassú ez a folyamat? Hogyan lehet ez gyorsítani? Előre is köszönöm a segítséget!
public class Printer : IDisposable
{
private int m_currentPageIndex;
private IList<Stream> m_streams;
// Routine to provide to the report renderer, in order to
// save an image for each page of the report.
private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
{
Stream stream = new FileStream(@"..\..\" + name + "." + fileNameExtension, FileMode.Create);
m_streams.Add(stream);
return stream;
}
// Export the given report as an EMF (Enhanced Metafile) file.
private void Export(LocalReport report)
{
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>EMF</OutputFormat>" +
" <PageWidth>8.5in</PageWidth>" +
" <PageHeight>11in</PageHeight>" +
" <MarginTop>0.25in</MarginTop>" +
" <MarginLeft>0.25in</MarginLeft>" +
" <MarginRight>0.25in</MarginRight>" +
" <MarginBottom>0.25in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
m_streams = new List<Stream>();
report.Render("Image", deviceInfo, CreateStream, out warnings);
foreach (Stream stream in m_streams)
stream.Position = 0;
}
// Handler for PrintPageEvents
private void PrintPage(object sender, PrintPageEventArgs ev)
{
Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
ev.Graphics.DrawImage(pageImage, ev.PageBounds);
m_currentPageIndex++;
ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
}
private void Print()
{
PrinterSettings printerSettings = new PrinterSettings();
//string printerName = printerSettings.PrinterName;
const string printerName = "Microsoft XPS Document Writer";
if (m_streams == null || m_streams.Count == 0) return;
PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings.PrinterName = printerName;
if (!printDoc.PrinterSettings.IsValid)
{
string msg = String.Format("Can't find printer \"{0}\".", printerName);
MessageBox.Show(msg, "Print Error");
return;
}
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
printDoc.Print();
}
// Create a local report for Report.rdlc, load the data,
// export the report to an .emf file, and print it.
public void Run(LocalReport report)
{
Export(report);
m_currentPageIndex = 0;
Print();
}
public void Dispose()
{
if (m_streams != null)
{
foreach (Stream stream in m_streams)
stream.Close();
m_streams = null;
}
}
} -
NoMan
csendes tag
Sziasztok,
Nyomtatási képet szeretnék készíteni (rdlc) Visual Studioba. Arra már rájöttem, hogy a solutionhoz hozzá lehet adni egy report elemet, amiben meg lehet szépen vizuálisan tervezni a nyomtatási képet. A probléma nem is itt van, mert ez megy, repertview komponensbe meg is tudom jeleníteni.
Ezzel eddig nincs gond. Viszont azt már nem tudom megoldani, hogy a programból érkező adatokat meg tudjak jeleníteni. Neten olvasgatva DataSet-et kell hozzá adnom, melynek a mezőit fel tudom húzni a report layout-ra, viszont minden példa MSSQL adatbázisból egy lekérdezésen keresztül gyűjtötte ki az adatokat. Nekem viszont az adatok postgresql-ből jönnek, így viszont nem tudom, hogy hogyan építem fel a dataset-et és azt hogyan adom át a report-nak (rdlc-nek).
Valaki tudna nekem ebben segíteni, hogy ez pontosan hogyan is működik, hogyan tudok ebben elindulni.
A segítséget előre is köszönöm.
-
NoMan
csendes tag
Kedves Fórumozók!
A következő problémával fordulnék hozzátok. Már 1 napja a google-t bújom, de igazi megoldást még nem találtam a következő problémára: Adott egy DLL fájl, benne egy formmal.
Ebből a DLL-ből kellene betölteni a Formot (erre már találtam több megoldást is), viszont van egy kis csavar a dologban (erre nem találtam megoldást). A példányosítás előtt ellenőrizni kéne, hogy futás közben változott-e a DLL és ha igen, akkor újra kéne tölteni a DLL-t és úgy példányosítani.
Ez azért lenne fontos, mert a főprogramból egy példány fut és az nem zárható be / nem indítható újra. Viszont a DLL-ben megvalósítottt formon időnként változtatnom kell. Melyet úgy szeretnék megoldani, hogy kicserélem a főprogram alatt a DLL fájlokat és amikor újra azt a Formot szeretné a főprogi betölteni, akkor már az új, megváltoztatott változat töltődik be.
Ezzel a módszerrel próbálkoztam:
Assembly assembly = Assembly.LoadFile(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "dashboardBasic.dll");
Type type = assembly.GetType("dashboardBasic.FormDashboardBasic");
Form form = (Form)Activator.CreateInstance(type);
form.MdiParent = this;
form.Show();Ez betöltötte a DLL-t és az alapján meg is jelenítette az űrlapot, de ha kicseréltem a DLL-t, akkor a régi űrlapot nyitotta meg, egészen addig, amíg a főprogit újra nem indítottam.
Egy másik megoldás, de ez szintén ugyan ezen ok miatt zsákutca volt:
AppDomain TestDomain = AppDomain.CreateDomain("dashboardBasic");
Assembly testDLL = TestDomain.Load(AssemblyName.GetAssemblyName(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "dashboardBasic.dll"));
Type type = testDLL.GetType("dashboardBasic.FormDashboardBasic");
Form form = (Form)Activator.CreateInstance(type);
form.MdiParent = this;
form.Show();
AppDomain.Unload(TestDomain);Valakinek valami jó ötlete a probléma megoldására?
Előre is köszönöm az építő jellegű hozzászólásokat.
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Formula-1
- bambano: Bambanő háza tája
- HiFi műszaki szemmel - sztereó hangrendszerek
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Home server / házi szerver építése
- Milyen légkondit a lakásba?
- A Windows 11 lett az úr az asztali PC-k piacán
- Házimozi belépő szinten
- bitpork: MOD Júni 28- Augusztus 2- szombat jelen állás szerint.
- Debrecen és környéke adok-veszek-beszélgetek
- További aktív témák...
- Valve Index VR Kit
- Uhh Lenovo ThinkPad P15 G2 Tervező Vágó Laptop -75% 15,6" i5-11500H 16/1TB RTX A2000 4GB /1 Millió/
- Esport PC - i5 13400F, GTX 1080ti és 16gb DDR5
- Ohh Lenovo ThinkPad P15 G2 Tervező Vágó Laptop -75% 15,6" i5-11500H 32/1TB RTX A2000 4GB /1 Millió/
- AZTA! HP EliteBook 840 G8 Fémházas Laptop Ultrabook 14" -60% i7-1185G7 16/512 FHD IPS Iris Xe
- 123 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 (48 hónap garancia!)
- Csere-Beszámítás! Sapphire Nitro+ RX 6700XT 12GB Videokártya!
- ÁRGARANCIA! Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 5090 32GB GAMER PC termékbeszámítással
- Azonnali készpénzes AMD Ryzen 1xxx 2xxx 3xxx 5xxx processzor felvásárlás személyesen / csomagküldés
- ÁRGARANCIA!Épített KomPhone i9 14900KF 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest