PDA

View Full Version : ایجاد جمع ستونهای بدهکارو بستانکار وهمچنین نقل ازصفحه قبل ، مربوط به هرصفحه درگزارشات



Abbas Amiri
جمعه 14 مهر 1391, 00:12 صبح
برای ایجاد جمع ستونهای بدهکارو بستانکار درپایین هرصفحه گزارش و همچنین قسمت نقل از صفحه قبل دربالای صفحه همانند آنچه دردفاترحسابداری مرسوم است ، ازکدهای زیر میتوان استفاده کرد.



Option Compare Database

Dim curBed As Currency, curBes As Currency
'************************************************* ********************************************
'***************************** شرح کنترلهاي موجود درگزارش **********************************

'Bes = Detail فيلد بدهکار در قسمت
'Bed = Detail فيلد بستانکار در قسمت

'txtBedHeader = (تکست باکس مربوط به جمع بدهکار از صفحات قبل (در پیج هدر: نقل ازصفحه قبل
'txtBesHeader = (تکست باکس مربوط به جمع بستانکار از صفحات قبل (در پیج هدر: نقل ازصفحه قبل
'MandehHeader = (تکست باکس مربوط به مانده از صفحات قبل (در پیج هدر: نقل ازصفحه قبل

'txtBesFooter = (تکست باکس مربوط به جمع بستانکار صفحه (در پیج فوتر
'txtBedFooter = (تکست باکس مربوط به جمع بدهکار صفحه (در پیج فوتر
'MandehFooter = (تکست باکس مربوط به مانده صفحه (در پیج فوتر
'************************************************* **********************************************
'************************************************* ********************************************

Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
If PrintCount > 1 Then Exit Sub
curBed = curBed + Bed
curBes = curBes + Bes
End Sub

Private Sub PageFooterSection_Print(Cancel As Integer, PrintCount As Integer)
If PrintCount > 1 Then Exit Sub
txtBedFooter = curBed + txtBedHeader
txtBesFooter = curBes + txtBesHeader
MandehFooter = (txtBedFooter - txtBesFooter)
PageFooterSection.Visible = (Me.Page < Me.Pages)
End Sub

Private Sub PageHeaderSection_Print(Cancel As Integer, PrintCount As Integer)
If PrintCount > 1 Then Exit Sub
txtBedHeader = Nz(txtBedFooter, 0)
txtBesHeader = Nz(txtBesFooter, 0)
MandehHeader = (txtBedHeader - txtBesHeader)
curBed = 0: curBes = 0
End Sub


تصویر زیر موقعیت کنترلها را نشان میدهد

93570

nazanin_90
جمعه 14 مهر 1391, 07:56 صبح
سلام جناب امیری!
اگر نمونه را در قالب فایل اکسس( ترجیحاً اکسس 2003) ارائه نمائید خیلی ممنون میشویم.
باتشکر

abas1388
یک شنبه 01 بهمن 1391, 18:31 عصر
برای ایجاد جمع ستونهای بدهکارو بستانکار درپایین هرصفحه گزارش و همچنین قسمت نقل از صفحه قبل دربالای صفحه همانند آنچه دردفاترحسابداری مرسوم است ، ازکدهای زیر میتوان استفاده کرد.




Option Compare Database

Dim curBed As Currency, curBes As Currency
'************************************************* ********************************************
'***************************** شرح کنترلهاي موجود درگزارش **********************************

'Bes = Detail فيلد بدهکار در قسمت
'Bed = Detail فيلد بستانکار در قسمت

'txtBedHeader = (تکست باکس مربوط به جمع بدهکار از صفحات قبل (در پیج هدر: نقل ازصفحه قبل
'txtBesHeader = (تکست باکس مربوط به جمع بستانکار از صفحات قبل (در پیج هدر: نقل ازصفحه قبل
'MandehHeader = (تکست باکس مربوط به مانده از صفحات قبل (در پیج هدر: نقل ازصفحه قبل

'txtBesFooter = (تکست باکس مربوط به جمع بستانکار صفحه (در پیج فوتر
'txtBedFooter = (تکست باکس مربوط به جمع بدهکار صفحه (در پیج فوتر
'MandehFooter = (تکست باکس مربوط به مانده صفحه (در پیج فوتر
'************************************************* **********************************************
'************************************************* ********************************************

Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
If PrintCount > 1 Then Exit Sub
curBed = curBed + Bed
curBes = curBes + Bes
End Sub

Private Sub PageFooterSection_Print(Cancel As Integer, PrintCount As Integer)
If PrintCount > 1 Then Exit Sub
txtBedFooter = curBed + txtBedHeader
txtBesFooter = curBes + txtBesHeader
MandehFooter = (txtBedFooter - txtBesFooter)
PageFooterSection.Visible = (Me.Page < Me.Pages)
End Sub

Private Sub PageHeaderSection_Print(Cancel As Integer, PrintCount As Integer)
If PrintCount > 1 Then Exit Sub
txtBedHeader = Nz(txtBedFooter, 0)
txtBesHeader = Nz(txtBesFooter, 0)
MandehHeader = (txtBedHeader - txtBesHeader)
curBed = 0: curBes = 0
End Sub


تصویر زیر موقعیت کنترلها را نشان میدهد

93570
سلام !
ضمن تشکر از جناب آقای امیری یک سؤال :
در نمونه ضمیمه که از کد های جناب امیری استفاده شده جمع فقط در صفحات اول و آخر به نمایش در می آید و در بقیه صفحات مخفی میشود .
ممنون میشوم اگر در مورد ایراد کار راهنمائی فرمائید .
با تشکر

Abbas Amiri
یک شنبه 01 بهمن 1391, 20:36 عصر
سلام
همه چیز درسته . باید یک تکست باکس جهت شماره صفحه در PageFooter ویا PageHeader قراربدید تا درست کارکنه
میتونید مخفی کنید فقط لازمه که باشه .
برای ایجاد آن یک تکست باکس در PageFooter ویا PageHeaderایجاد و داخل آن بنویسید :


="صفحه " & [Page] & " از " & [Pages]

abas1388
یک شنبه 01 بهمن 1391, 22:33 عصر
سلام
همه چیز درسته . باید یک تکست باکس جهت شماره صفحه در PageFooter ویا PageHeader قراربدید تا درست کارکنه
میتونید مخفی کنید فقط لازمه که باشه .
برای ایجاد آن یک تکست باکس در PageFooter ویا PageHeaderایجاد و داخل آن بنویسید :


="صفحه " & [Page] & " از " & [Pages]

با سلام مجدد
کاملاً صحیح بود!
راستش در خصوص جمع صفحات به یک مشکل دیگر برخورد کردم و آن اینکه وقتی از قسمت page setup حاشیه کاغذ از بالاو پائین تغییرمی کند مکان تکست باکسهای قسمت page footer تغییر می کند و در واقع از آخرین رکورد هر صفحه فاصله گرفته و جدا میشود .خواستم بپرسم آیا با نوشتن ماژولی میتوان کاری کرد که با کاهش یا افزایش حاشیه کاغذ از بالا و پائین تکست باکس های مربوط به جمع هر صفحه چسبیده به آخرین رکورد هر صفحه باشد.
مثلاً در گزارش فوق من اقدام به کاهش اندازه حاشیه کاغذ از پائین صفحه نمودم و فاصله ای بصورت تصویر زیر ایجاد شد
با تشکر

Abbas Amiri
دوشنبه 02 بهمن 1391, 17:45 عصر
سلام
در رویداد Report_Open بنویسید


MyControlName.Top = 0

abas1388
دوشنبه 02 بهمن 1391, 20:38 عصر
سلام
در رویداد Report_Open بنویسید


MyControlName.Top = 0

آفرین !:تشویق::تشویق::تشویق::تشویق:: تشویق::تشویق::تشویق::تشویق::ت شویق::تشویق::تشویق::تشویق::تش ویق::تشویق::تشویق::تشویق::تشو یق::تشویق::تشویق::تشویق::تشوی ق::تشویق::تشویق::تشویق::تشویق ::تشویق::تشویق::تشویق::تشویق:: تشویق::تشویق::تشویق::تشویق::ت شویق::تشویق::تشویق::تشویق::تش ویق::تشویق::تشویق:

nazanin_90
سه شنبه 03 بهمن 1391, 20:24 عصر
سلام
در رویداد Report_Open بنویسید


MyControlName.Top = 0

سلام
ولی من امتحان کردم تغییری حاصل نشد. چرا که در حالت دیزاین گزارش MyControlName چسبیده به قسمت دیتیل گزارش می باشد و بخاط همین هم مقدار top آن صفر است و کدControlName.Top = 0
تاثیری در از بین بردن فاصله ندارد .
اگر در حالت های مختلف , فاصله حاشیه بالا را کم یا زیاد کنید فاصله کنترل های فوق کم یا زیاد میشود.
موفق باشید

Abbas Amiri
سه شنبه 03 بهمن 1391, 21:56 عصر
سلام
یعنی عبارت ControlName.Top = 0 در همه حالات کنترل را به بالای Section نمیچسباند .گرچه عبارت :
ControlName.Top = PageHeaderSection.Height - ControlName.Height - 50 مناسب تر است

abas1388
چهارشنبه 04 بهمن 1391, 19:04 عصر
سلام
ولی من امتحان کردم تغییری حاصل نشد. چرا که در حالت دیزاین گزارش MyControlName چسبیده به قسمت دیتیل گزارش می باشد و بخاط همین هم مقدار top آن صفر است و کدControlName.Top = 0
تاثیری در از بین بردن فاصله ندارد .
اگر در حالت های مختلف , فاصله حاشیه بالا را کم یا زیاد کنید فاصله کنترل های فوق کم یا زیاد میشود.
موفق باشید





سلام
یعنی عبارت ControlName.Top = 0 در همه حالات کنترل را به بالای Section نمیچسباند .گرچه عبارت :
ControlName.Top = PageHeaderSection.Height - ControlName.Height - 50 مناسب تر است
سلام جناب امیری !
راستش من هم درحالتهای مختلف امتحان کردم ولی درهردو حالت پیشنهادی جنابعالی نتیجه ثابتی بدست نیامد.
اگر ممکنه خودتان هم نمونه را امتحان کنید.
با تشکر

hasanhzd
چهارشنبه 04 بهمن 1391, 20:17 عصر
درود
در بالای هر صفحه عدد نقل از صفحه قبل درست نیست

برای فاصله هم در دیزاین ویو به راحتی میشه نواحی رو کم ور زیاد کرد

Abbas Amiri
چهارشنبه 04 بهمن 1391, 21:57 عصر
سلام جناب امیری !
راستش من هم درحالتهای مختلف امتحان کردم ولی درهردو حالت پیشنهادی جنابعالی نتیجه ثابتی بدست نیامد.
اگر ممکنه خودتان هم نمونه را امتحان کنید.
با تشکر

سلام
برای تنظیم مارجین ها با VB باید دستور بازشدن گزارش از طریق یک باتن در یک فرم انجام شود ودر آنجا قبل از بازشدن آن تنظیمات مربوطه انجام شود. در فایل زیر از طریق Form1 اینکار انجام شده

anoor_h
سه شنبه 24 بهمن 1391, 12:58 عصر
سلام دوست عزیز ممنون از نمونه برنامت میخوام بدونم چطوری جمع همون صفحه رو بنویسه از آخر هم که جمع کل رو بازم ممنون ازت

Abbas Amiri
سه شنبه 24 بهمن 1391, 22:04 عصر
سلام دوست عزیز ممنون از نمونه برنامت میخوام بدونم چطوری جمع همون صفحه رو بنویسه از آخر هم که جمع کل رو بازم ممنون ازت

سلام
خیلی ساده
در کد زیر جمع با تکست باکسهای هدر را حذف کنید


Private Sub PageFooterSection_Print(Cancel As Integer, PrintCount As Integer) If PrintCount > 1 Then Exit Sub
txtBedFooter = curBed + txtBedHeader
txtBesFooter = curBes + txtBesHeader
MandehFooter = (txtBedFooter - txtBesFooter)
PageFooterSection.Visible = (Me.Page < Me.Pages)
End Sub

anoor_h
چهارشنبه 25 بهمن 1391, 12:36 عصر
سلام متشکرم من جمع هدر را برداشتم بازم صفحه بعد که باید 46000 نشون بده رو 92000 نشون میده من برناممو آپ کنم مشکلشو برام حل کنی؟:خجالت:

anoor_h
پنج شنبه 26 بهمن 1391, 08:24 صبح
سلام فایلو گذاشتم یه نگاهی بهش بکنین
شماره 1 جمع همون صفحه و شماره 2 جمع همه صفحات

100049

Abbas Amiri
شنبه 28 بهمن 1391, 21:02 عصر
سلام متشکرم من جمع هدر را برداشتم بازم صفحه بعد که باید 46000 نشون بده رو 92000 نشون میده من برناممو آپ کنم مشکلشو برام حل کنی؟

سلام

دلیل مشخصه . باید مقدار curBed در رویداد ُPageHeaderSection_Print صفر بشه تا مقادیر قبلی به اون اضافه نشن.
در مورد Error پست 16 هم ربطی موضوع تاپیک ندارد ومن هم چیزی درفایل ندیدم

anoor_h
یک شنبه 29 بهمن 1391, 12:40 عصر
دوستان من با عقل خودم اینطوری درست کردم ببینید بهتر از این هم میشه
توی ریپورت کپی نگاه کنین:قهقهه: