ورود

View Full Version : تنظيم پيش فرض گزارش در حالت landscape



maryam_ch
سه شنبه 27 بهمن 1388, 12:43 عصر
با سلام و خسته نباشيد.
در كريستال ريپورت و در reportview يك شي از جنس ReportDocument دارم و كد زير را نوشته ام اما همچنان تاثيري ندارد.اما مي خواهم فقط يكبار تنظيم چاپ گزارش برروي landscape باشد و هر بار كاربر مجبور نباشد آن را انتخاب كند:
MyReportDocument.PrintOptions.PaperOrientation = PaperOrientation.Landscape;
نمي دونم راه ديگري هست يا من از اين دستور درست استفاده نكردم؟

Sharif Lotfi
سه شنبه 27 بهمن 1388, 21:25 عصر
'در ابتداي كار
Public rp As myReport = New myReport 'myReport.rpt نام فرم گزارش شما
...



Dim page_set = New Printing.PageSettings
Dim printer_set = New Printing.PrinterSettings
printer_set.PrinterName = Printing.PrinterSettings.InstalledPrinters.Item(0) 'مي توانيد از پرينتر پيش فرض يا شماره هاي ديگر استفاده كنيد

page_set.Landscape = true
rp.PrintOptions.CopyFrom(printer_set, page_set) 'rp نام متغير ريپورت شما
...
و در انتها بعد از همه تغييرات در بخش گزارش
myReport.ReportSource = rp 'myReport.rpt نام فرم گزارش شما
موفق و سبز باشيد

maryam_ch
چهارشنبه 28 بهمن 1388, 11:34 صبح
سلام
خوب بسيار ممنونم اما وقتي روي سرور هيچ پرينتري نصب نباشد به مشكل مي خورد و array مربوط به installed printers هيچ مقداري ندارد و به همين دليل خطا دارد.
آيا راه حلي براي اين مشكل هست؟
در حالت عادي كاربر از طريق پنجره تنظيمات پرينتر ،پرينتري بر روي شبكه را انتخاب مي كند و پرينت مي گيرد.

Sharif Lotfi
چهارشنبه 28 بهمن 1388, 19:11 عصر
بله دوست عزيز شما مي توانيد در فرم خود يك ابزار PageSetupDialog مثلا با نام PageSetupDialog1 اضافه كنيد و يك دكمه براي انتخاب پرينتر و PageSetup اضافه كنيد كه با زدن آن دكمه مي توانيد اين كار را در كد انجام دهيد :
PageSetupDialog1.PrinterSettings = New System.Drawing.Printing.PrinterSettings
با استفاده از
Printing.PrinterSettings.InstalledPrinters.Count
تعداد پرينترهاي نصب شده را بگيريد و اگر اين تعداد صفر بود كد دلخواه را بنويسيد
و وقتي كاربر با استفاده از پنجره تنظيمات صفحه و پرينتر يعني PageSetupDialog پرينتري را انتخاب كرد با استفاده از
PageSetupDialog1.PrinterSettings.PrinterName
نام پرينتر را بگيريد.
موفق باشيد

maryam_ch
پنج شنبه 29 بهمن 1388, 10:21 صبح
بله درست اما من نمي خوام پنجره تنظيمات داشته باشم بدون اين كار آيا راه ديگري نيست؟
حتي وقتي نام پرينتري روي شبكه را به عنوان printername مي دم اصلا نمي شناسه به اين شكل:
printer_set.PrinterName =@"\\Path\printername (file://\\Path\printername)"

Sharif Lotfi
پنج شنبه 29 بهمن 1388, 16:25 عصر
دقيقا از اين جواب مطمئن نيستم چون روي شبكه تست نكردم ولي شايد اين تغيير را بدهيد درست شود:
مشابه كد زير بنويسيد (البته با نام پرينتر خودتان):

printer_set.PrintOptions.PrinterName = "\\path\Canon iR3300 PS3"
موفق باشي

maryam_ch
سه شنبه 04 اسفند 1388, 12:47 عصر
با سلام
اين كدي كه نوشتيد خطا داره بايد به ازاي هر \ دو تا گذاشت تا خطا نداشته باشه اما خوب اينو مي دونستم و تست هم كردم جواب نداد چون با post قبلي كه گذاشتم فرقي نداره.
به هر حال ممنون اگه راه ديگه اي به ذهن كسي رسيد لطفا بگين.