PDA

View Full Version : تکرار در چاپ گزارش



klinton
یک شنبه 02 بهمن 1390, 00:41 صبح
سلام
من یه فاکتور تو برنامم دارم که میخوام سه بار چاپ بشه
یکی برای مشتری - یکی برای حسابداری - یکی برای نگهبان(برگه خروج)

که در بالای فاکتور نام سه تای بالایی نوشته میشه

ممنون میشم پیشنهاد بدین که چطور این سه بار چاپ رو پیاده سازی کنم.

faravaghi
یک شنبه 02 بهمن 1390, 00:51 صبح
سلام،
منم بی صبرانه منتظر جواب اساتید هستم.

خدا قوت

Hossein Bazyan
یک شنبه 02 بهمن 1390, 03:26 صبح
سلام
بستگی به این داره که از چه برنامه ای برای تهیه گزارش استفاده شده است؟

klinton
یک شنبه 02 بهمن 1390, 04:54 صبح
کریستال رپورت

mgh64120
یک شنبه 02 بهمن 1390, 09:10 صبح
سلام دوست عزیز
می تونی در سزبرگ فاکتور از Formula Field استفاده کنی و در موقع چاپ به اون مقدار بدهی و بعد چاپ بگیری.
موفق باشید...

Hybrid
یک شنبه 02 بهمن 1390, 09:20 صبح
سلام دوست عزیز ،

اگه منظورتون رو درست متوجه شده باشم :

برای این کار باید از Parameter Field استفاده کنین و در زمان چاپ بهش مقدار بدین..

موفق باشید./

faravaghi
یک شنبه 02 بهمن 1390, 10:41 صبح
سلام،
یعنی چی؟
خوب وقتی یک متغیر تعریف میکنید و به ریپورت پاس میدین چطوری می تونید بگین که 3 بار و هر بار با مقدار جدید بره روی گزارش؟
مگه اینکه برای هر بار که سرجمع میشه 3 بار هر کد رو تکرار کنید و هر بار مقدار جدید رو بریزید توی گزارش! فکر نکنم اصولی باشه.

یا اینکه شما روش دیگه ای مد نظرتونه!

klinton
یک شنبه 02 بهمن 1390, 18:25 عصر
درسته پارامتر منطقی نبست . هر سه صفه باید در یک گزارش تولید بشه پارامتر هم مقدارش ثابته

klinton
یک شنبه 02 بهمن 1390, 18:28 عصر
من با formula field کار نکردم اگه توضیح بیشتری بدین ممنون میشم

mgh64120
یک شنبه 02 بهمن 1390, 19:39 عصر
سلام دوستان
در قسمت طراحي گزارش در Crystal يك Formula Field در مكان دلخواه قرار دهيد.
و در ويژوال، ابتدا در قسمت اعلان :

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

و سپس از نمونه كد زير استفاده كنيد.

Dim objRep As New CrystalReport1
Dim flds As FormulaFieldDefinitions
Dim fld1 As FormulaFieldDefinition
flds = objRep.DataDefinition.FormulaFields
fld1 = flds(0)
fld1.Text = "'" & "نسخه مربوط به مشتري" & "'"
CrystalReportViewer1.ReportSource = objRep
CrystalReportViewer1.Refresh()
CrystalReportViewer1.PrintReport()

موفق باشيد...

klinton
یک شنبه 02 بهمن 1390, 21:51 عصر
به نظرتون بهتر نیست کاری کنیم که هر سه برگ قبل از چاپ در کریستال نمایش داده بشه؟ چون کاربر ممکنه چاپ نکنه

mgh64120
یک شنبه 02 بهمن 1390, 23:08 عصر
سلام
اين بستگي به نياز كاربر داره؟
بهتره از دو گزينه 'پيش نمايش چاپ' و 'چاپ' استفاده كنيد تا كاربر بسته به نياز يا اون رو نمايش بده بعد چاپ بگيره يا اينكه مستقيم چاپ بگيره.
موفق باشيد...

klinton
یک شنبه 02 بهمن 1390, 23:22 عصر
ایده ی خوبیه .البته همین کار را با پارامتر هم میتوان انجام داد


هر چقدر فکر میکنم نمیشه که با یک ارتباط یک به چند این کار را انجام داد. چون فقط details تکرار میشه و header , footer تکرار نمیشه !

faravaghi
دوشنبه 03 بهمن 1390, 00:02 صبح
سلام دوستان
در قسمت طراحي گزارش در Crystal يك Formula Field در مكان دلخواه قرار دهيد.
و در ويژوال، ابتدا در قسمت اعلان :

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

و سپس از نمونه كد زير استفاده كنيد.

Dim objRep As New CrystalReport1
Dim flds As FormulaFieldDefinitions
Dim fld1 As FormulaFieldDefinition
flds = objRep.DataDefinition.FormulaFields
fld1 = flds(0)
fld1.Text = "'" & "نسخه مربوط به مشتري" & "'"
CrystalReportViewer1.ReportSource = objRep
CrystalReportViewer1.Refresh()
CrystalReportViewer1.PrintReport()

موفق باشيد...

سلام،
اینایی که شما گفتی درست!
اگه بخواهیم با یک کلید هر سه نسخه چاپ بشه چی؟
اینی که شما گفتی برای یک نسخه افاقه میکنه!
اگه بخاهیم فرم گزارشی که ساختیم رو 3 بار چاپ کنیم که هر بار باید متغیر جدید باشه باید چه کرد!؟
روش سنتی قابلمه ای یا روش اصولی و منطقی داره؟

klinton
دوشنبه 03 بهمن 1390, 00:13 صبح
:متفکر:حقه ی دیگه ای به نظرتون میرسه؟

faravaghi
دوشنبه 03 بهمن 1390, 00:37 صبح
سلام،
خوب عزیز دنبال حقه و کلک که نیستیم اگه نه خیلی کارا میشه کرد!
راه اصولی! راه اصولی!

یه راه اینه که 3 بار این فرم رو فراخوانی کنید با سه متغیر و هر بار بجای نمایش بگی چاپ کنه!

mahsa.admin
دوشنبه 03 بهمن 1390, 01:22 صبح
و اما راه اصولی
report.PrintToPrinter(3 ,False, 1, Integer.MaxValue)
عدد سهباعث میشود از یک پیج یا دستور پرینت 3 بار چاپ کنه

klinton
دوشنبه 03 بهمن 1390, 01:50 صبح
میشه در هر بار پرینت یه مقدار جدید به عنوان پارامتر ارسال کرد؟