PDA

View Full Version : مبتدی: گزارش گیری به صورت دستی و بدون crystal report برای پرینت



abbas381366
چهارشنبه 13 خرداد 1394, 16:10 عصر
با سلام ...

من در برنامه ای که در حال نوشتن هستم نیاز دارم که یک صفحه A4 به صورت Landscape یک جدول با تیتر و عکس لوگو در بالای صفحه رو به یوزر ارائه بدم برای چاپ ...

من نیازی به نمایش مستقیم اتطالاعت از dataBase ندارم ... و میخوام به صورت دستی متغیر ها رو در برنامه بنویسم... یعنی از طریق کد مقادر جدول رو پر کنم ...

توی Crystal Report حتما باید به یه DataSource وصل بشه ...

آیا در C# راهی هست که بدون Crystal Report بتونم یک کاغذ A4 با قابلیت های بالا رو برای نمایش و چاپ به یوزر ارائه بدم ؟

تاکید میکنم نمیخوام دیتا به صورت خودکار از dataSource توی جدول پر بشه و میخوام دستی محتوا از طریق کد وارد بشه ..

با تشکر

Mahmoud.Afrad
چهارشنبه 13 خرداد 1394, 18:50 عصر
در ابزارهای گزارش ساز از جمله کریستال ریپورت میتونی اطلاعات رو از طریق کد پاس بدی به گزارش.
البته توصیه میکنم بی خیال کریستال بشی و از stimull استفاده کنی.

dashti011
پنج شنبه 14 خرداد 1394, 19:02 عصر
استفاده از fast report هم ساده و سریع هست و به اضافه این که یه فایل manual هست که همه چی رو داخلش توضیح داده و مورد مد نظر شما همون Parameters هست .

RmeXXXXXXXXX
جمعه 15 خرداد 1394, 00:03 صبح
برای ساخت گزارش اختصاصی باید کد زیادی بنویسید.
برای این کار باید یک printDocument به همراه printPreviewControl رو به فرم اضافه کنید و عملیات پر کردن صفحه رو دستی و باکدهای سی شارپ بنویسید.
از این روش برای ساخت فاکتورهای سفارشی استفاده میشه مثلاً بعضی از غذا فروشی ها اگه دقت کرده باشین.
برای ترسیم فاکتور سفارشی باید در رخداد PrintPage از کنترل PrintDocument کد نویسی کنید. printDocument1_PrintPage
این متد آرگومانی بنام ystem.Drawing.Printing.PrintPageEventArgs e دارد که از خاصیت Graphic اون جهت ترسیم استفاده میشه. همچنین این آرگومان اطلاعات مفید و مورد نیازتون رو در اختیارتون میذاره.
قسمتی از کدهایی که نوشتم (قبلاً ها) رو براتون میذارم امیدوارم مفید واقع بشه:

public frmPrintFactor(Transaction transaction, bool isMainFactor = true)
{
InitializeComponent();
_transaction = transaction;
_font = this.Font;
_isMainFactor = isMainFactor;
foreach (var item in this.printDocument1.PrinterSettings.PaperSizes)
this.cmbPaperSize.Items.Add(item);

this.printDocument1.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("A5", 582, 826);

this.printPreviewControl1.UseAntiAlias = true;

this.printDocument1.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(10, 10, 10, 10);

this.printDocument1.PrintPage += printDocument1_PrintPage;

}

private int _pageIndex = 1;
private int _totalPagesCount = 1;
private int _operationCounter = 0;

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Brush brush = Brushes.Black;
Pen pen = new Pen(brush);

float yTitlePos = e.MarginBounds.Top;
float yTablePos = e.MarginBounds.Top + 120f;
float yInfoPos = e.MarginBounds.Bottom - 200f;
float yPos = e.MarginBounds.Top;

float rowHeight = e.Graphics.MeasureString("This is a test", _font).Height;
to be continue...

h.gheidrlou
جمعه 15 خرداد 1394, 16:28 عصر
سلام
میشه فایل نمونه از این کد را بزارید ما هم طبق نمونه تمرین و استفاده کنیم؟
یه برنامه نمونه از این مدل جهت ساخت گزارش خاص و بدون دیتا بیس
اگه لطف بفرمائید خلی ممنون دارتون میشم