PDA

View Full Version : سوال: رنگي كردن يك خط در ميان سطرهاي گزارش



wolfstander
پنج شنبه 24 بهمن 1387, 14:27 عصر
سلام به همه دوستان
ميخواستم بدونم كه چجوري ميشه خط هاي گزارشم رو يكي در ميون رنگي كنم؟
موقع پرينت البته
متشكر و ممنون


نتيجه اين مبحث رو اينجا ميتونيد ببينيد :
http://barnamenevis.org/forum/showpost.php?p=679415&postcount=13

e601
پنج شنبه 24 بهمن 1387, 17:58 عصر
http://barnamenevis.org/forum/showpost.php?p=496574&postcount=40

nabeel
پنج شنبه 24 بهمن 1387, 20:29 عصر
wolfstander عزیز سلام

یکی از مواردی که من بارها میبینم , اینه که کاربر ها اقدام به انجام کارها از طریقی میکنن که شاید الزامی در انجام اونها وجود نداشته باشه و راه حل هایی جایگزین وجود داشته باشن که اون کار رو سریعتر انجام بدن

اجازه بدید کد معرفی شده در داخل لینک بالا رو مورد بررسی قرار بدیم :



Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Me.Detail.BackColor = IIf(me.txtRow Mod 2 = 0, 16777215, 14671839)
End Sub

در کد بالا شما ملزم به ایجاد فیلدی جهت نمایش ردیف با Control Source خاص خودش , عملیات تشخیص فرد و یا زوج بودن ردیف و در نهایت استفاده از دستور کند IIf هستید

راه حل جایگزین در داخل خود اکسس وجود داره . شما میتونید از متغیرهای داخلی خود اکسس استفاده کنید که این کار رو در داخل گزارشهای طولانی به مراتب سریعتر انجام میده

به کد زیر توجه کنید



Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If Me.Section(0).BackColor = vbWhite Then
Section(0).BackColor = vbBlue
Else
Section(0).BackColor = vbWhite
End If
End Sub


این کد همون کار رو انجام میده , منتها با سرعتی بالاتر .

IIf یکی از دستورات داخلی اکسس هستش که به مراتب سرعتش از خود دستور If در داخل VBA کمتره .

تا حد امکان از این دستور به جایگزینی دستور If استفاده نکنید .

خب شاید در پاسخ گفته بشه که گزارش نیاز به ردیف هم داشت و برای همین هم فیلد ردیف ایجاد شده بود .

اصل موضوع در هر صورت تغییری پیدا نمیکنه . شما دو دستور IIf و Mod رو میتونید حذف کنید , اون هم درجایی که جایگزینهایی بهتر برای اونها وجود داره .

توجیه وجود فیلد ردیف ارتباطی با موضوع عنوان شده فعلی نداره .

حتماً با خودتون میگید که چه نیازی داشت که برای یک راه حل قبلی راه حل دیگه ای هم عنوان بشه .

دوستای عزیز : از کنار آرگومانهای توابع و ثوابت داخل Access به سادگی نگذرید , هر کدوم از اونها کاربردی خاص دارن و با هدفی مشخص طراحی شدن . سعی کنید از اونها استفاده بهینه به عمل بیارید و از راه حلهای فرعی استفاده نکنید . هدف مشخصه و در تیر رس .

موفق باشید

hamedMohammad
پنج شنبه 24 بهمن 1387, 22:55 عصر
IIf یکی از دستورات داخلی اکسس هستش که به مراتب سرعتش از خود دستور If در داخل VBA کمتره .

تا حد امکان از این دستور به جایگزینی دستور If استفاده نکنید .


[ QUOTE]

سلام نبيل عزیز

مبنای گفته شما از چه مرجعی است؟

چون یه مطلبی تو صفحه زیر دیدم که عکس مطلب شما را بیان می کند :

http://msdn.microsoft.com/en-us/library/aa188211(office.10).aspx (http://msdn.microsoft.com/en-us/library/aa188211%28office.10%29.aspx)

Table 15.4. Summary of the Results of the VBA Performance Tests

اگه به ردیف 17 و 18 جدول فوق توجه کنید عکس مطلب شما را بیان می کند

موفق باشی

e601
پنج شنبه 24 بهمن 1387, 23:06 عصر
در کد بالا شما ملزم به ایجاد فیلدی جهت نمایش ردیف با Control Source خاص خودش , عملیات تشخیص فرد و یا زوج بودن ردیف و در نهایت استفاده از دستور کند IIf هستید

دوست عزیز کدی که آقای شقاقی در اون لینک گذاشتن قابل بهینه سازی هست الزامی واسه گذاشتن فیلد و ControlSource و ... نداره. کافیه بجای Me.txtRow از خصوصیت Me.CurrentRecord استفاده بشه و بجای IIf هم از دستور اصلی If استفاده بشه


این کد همون کار رو انجام میده , منتها با سرعتی بالاتر .
البته من قبلا تمام این روشها رو در گزارشات حدود 90 تا 100 صفحه ای خودم تست کردم و تفاوت محسوسی مشاهده هم نشد شاید نهایت نهایتش 2 ثانیه ! و دلیلش هم اینه که محاسبات زیاد پیچیده نیست.

e601
پنج شنبه 24 بهمن 1387, 23:21 عصر
IIf یکی از دستورات داخلی اکسس هستش که به مراتب سرعتش از خود دستور If در داخل VBA کمتره .
تا حد امکان از این دستور به جایگزینی دستور If استفاده نکنید .

موافقم. به نظر بنده هم IIf کارایی پایین تری داره چون IIf دارای یک لایه محاسباتی اضافه تر هست و باید اول توسط کامپایلر به دستور If...Then...Else اصلی تبدیل بشه بعد کامپایل بشه.
من خودم تا حالا غیر از چند تا گزارش از این دستور در کد های برنامه استفاده نکردم و فکرم نمیکنم بکارم بیاد


سلام نبيل عزیز
مبنای گفته شما از چه مرجعی است؟
چون یه مطلبی تو صفحه زیر دیدم که عکس مطلب شما را بیان می کند :
http://msdn.microsoft.com/en-us/library/aa188211(office.10).aspx
Table 15.4. Summary of the Results of the VBA Performance Tests
اگه به ردیف 17 و 18 جدول فوق توجه کنید عکس مطلب شما را بیان می کند
موفق باشی

دوست عزیز با دقت نخوندین. موارد مذکور صحبتهای عنوان شده رو تایید میکنه !!!!!!!!!!!!!

nabeel
جمعه 25 بهمن 1387, 00:13 صبح
ضمن سلام به دوستای عزیزم

دوباره گفتیم یه حرفی بزنیم و نظری بدیم , بیل و کلنگه که نثار روح ما میشه !!! :متعجب::لبخند:

یه گزیزی میزنم به بعضی مباحث که توی تاپیکهای دیگه به اونها اشاره داشتم و مثل همیشه حال توضیح دادن کاملش رو نداشتم !!!

در خصوص مطلب اول دوستمون آقای hamedMohammad

رفرنس خیلی جالبی بود . مطالعه اون رو به کلیه دوستان توصیه میکنم . بارها گفتم که اکسس رابطه جالبی با API نداره و چندان هم دل خوشی از اون نداره ( لطفاً دیگه علتش رو نخواید )

تست به عمل اومده در داخل اون رفرنس رو با دقت نگاه کنید . تست به عمل اومده رو ملاحظه بفرمایید و اون رو با ساختار کد موجود مقایسه کنید . تفاوت از زمین تا .....

مطلب زیر رو از داخل همون رفرنس ملاحظه بفرمایید :



Test 18: If . . . End If is faster than IIf

If the previous tip wasn't enough to make you leery of the IIf function, this one certainly will. In any situation

within VBA code, you can always replace a call to the IIf function with a full If . . . Then . . . Else . . . End If

statement, and you'll always get better performance. You learned in the previous tip not to ever call functions from

the second and third parameters of IIf, but you still pay a price for using IIf, even if you're returning simple

literals. For example, you might write an innocuous statement like this:
strValue = IIf(i Mod 2 = 0, "Even", "Odd")

but you'll find that you'll get better performance by rewriting that single line of code, like this:
If i Mod 2 = 0 Then
strValue = "Even"
Else
strValue = "Odd"
End If

Basically, we see no reason to ever use IIf in VBA code. Because you can always write an equivalent construct

without using the function, and the function call is always slower, just avoid it. (See Test18a/b for the full test

procedures.)

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

فکر میکنم جوابگوی شما دوست گرامی باشه .


خب دوست عزیمون Eh.Masoudi عزیز

از توجه شما به پاسخ دوستمون hamedMohammad ممنونم

من بازم بر روی نظر خودم پابرجام . شما Me.txtRow رو با Me.CurrentRecord تعویض کردید .

توی این بخش که فکر نمیکنم بهینه سازی خاصی صورت گرفته باشه . مابقی روش هم که ظاهراً پابرجاست ( Mod رو عرض میکنم ) . پس هر دو حالت غیر بهینه به نظر من همچنان پتانسیل خودشون رو دارن .

دوست عزیز از شما دیگه انتظار ندارم که به دنبال ایجاد شمارنده ای باشید که یا نیازی بهش وجود نداره ( مثل کد دوم که ارائه کردم ) و یا راه حلهایی خیلی سریعتر برای شمارش وجود داره .

اگر اصرار بر استفاده از Mod وجود داره , یه متغیر از نوع Static تعریف کنید و در آخر دستور یک دونه به اون اضافه کنید و ... اینجوری لااقل شمارنده بهینه میشه .

شاید با توجه به نوع گزارش تغییر ایجاد شده محسوس نباشه ولی به یک نکته توجه داشته باشید که کاربرهایی که از کنار این نکات میگذرن , مطمئناً از کنار خیلی نکات دیگه هم گذشتن و وضعیت برنامه هم که توی اینجور مواقعی مشخصه چیه .

شما عنوان کردید دو ثانیه , همیشه سعی کنید درصد رو بیان کنید , دوثانیه از چه قدر ؟

دوست من توجه کنید که آماده سازی گزارش دو بحث داره :

- آماده سازی گزارش و نمایش صفحه نخست یعنی همون حالتی که همیشه رخ میده

- پیمایش بین صفحات گزارش , در یک گزارش طولانی اگه دقت کرده باشید وقتی میخواید به صفحه انتهایی برید اکسس با مکث اینکار رو انجام میده . برخی عملیات هستند که تنها در صورت نمایش صفحه مورد نظر و یا هنگام ارسال اون صفحه به پرینتر به انجام میرسن ( مثل همین مورد رنگی کردن ردیفها ) پس با توجه به این مطلب احتمالا موافق هستید که میزان بهینه سازی خیلی بیشتر از اون چیزیه که تصورش رو میکنید .

در پایان , کلیه مطالب تنها توصیه بود و لااکراه فی ....

موفق باشید و منتظر نظرات شما دوستان گرامی

e601
جمعه 25 بهمن 1387, 01:53 صبح
شما عنوان کردید دو ثانیه , همیشه سعی کنید درصد رو بیان کنید , دوثانیه از چه قدر ؟
دوست من توجه کنید که آماده سازی گزارش دو بحث داره :
- آماده سازی گزارش و نمایش صفحه نخست یعنی همون حالتی که همیشه رخ میده
- پیمایش بین صفحات گزارش , در یک گزارش طولانی اگه دقت کرده باشید وقتی میخواید به صفحه انتهایی برید اکسس با مکث اینکار رو انجام میده . برخی عملیات هستند که تنها در صورت نمایش صفحه مورد نظر و یا هنگام ارسال اون صفحه به پرینتر به انجام میرسن ( مثل همین مورد رنگی کردن ردیفها ) پس با توجه به این مطلب احتمالا موافق هستید که میزان بهینه سازی خیلی بیشتر از اون چیزیه که تصورش رو میکنید .
نبیل جان بحث منم در مورد پیمایش بین صفحات بود وگرنه صفحه اول که بلافاصله لود میشه .
من برای گزارشهام یه سابروتین خیلی ساده نوشتم که با اکتیو شدن گزارش بصورت اتوماتیک به صفحه آخر گزارش میره.
ضمن اینکه بنده عرض کردم نهایتا دو ثانیه من چند بار با چشم گرفتم که یقینا خطا داره.ثانیه هم نشد اصلا شاید صدم ثانیه باشه

ممنون از تبادل نظرت...

e601
جمعه 25 بهمن 1387, 23:17 عصر
سلام به همه دوستانی که زحمت کشیدن و اینهمه جواب دادن
خداییش خودم انتظار اینهمه جواب رو نداشتم
برای همین هم امشب سر زدم ، و دیدم که یه مبحث درست و درمون باز شده اینجا ، کفم برید
من برادر کوچیک همه شما و مخلص همه تون هستم
هر کدومتون که امر بفرمائید ، شام یا ناهار یا بستنی مهمون بنده
هرجایی هم که بفرمائید
یه آرشیو 1000 تایی دی وی دی هم دارم که اگه هر کدومتون شام و نهار نخوردید و رژیم داشتید ، براتون میزنم هر چندتا که بخواید
(البته نه 1000 تا رو.987 تا حداکثر)
من که موندم جواب محبتهای دوستان رو چجوری بدم
فقط میتونم تشکر کنم و پاراگراف بالا برای شام و نهار و دی وی دی
:خجالت:

با سلام

wolfstander عزیز مشخصه که آدم با صفا و با محبتی هستی :تشویق:

نکته ی قابل توجه اینه که اکثر افرادی که در این سایت حضور دارن و در مورد موضوعی اظهار نظر میکنن واقعا قصدشون کمک کردنه بدون هیچ چشمداشتی. این قضیه در مورد مدیران ارشد سایت گرفته تا من کوچکترین صدق میکنه.
خود من بیشتر از اینکه بخوام چیزی به این سایت اضافه کنم از مطالبش استفاده کردم. امیدوارم بتونم خیلی بیشتر از این حرفا در خدمت این سایت باشم و البته امیدوارم راه اندازان و گردانندگان این سایت همیشه موفق و سربلند باشن. دست همشون رو میبوسم :بوس:

التماس دعا
یا علی...

wolfstander
شنبه 26 بهمن 1387, 15:18 عصر
گفتم كه نتيجه اين تاپيك رو بنويسم كه اگه كسي خواست ، ديگه مشكلي نداشته باشه.
بهش هم يه لينك ميدم تو اولين پست تاپيك


براي اينكه كسي (منظورم كاربر عادي عين خودمه) فيلدهاي گزارشش رو يك در ميان رنگي كنه (خاكستري) ميتونه از اين روش استفاده كنه :

اول گزارشش رو درست كنه
بعدش يه تكست باكس بندازه تو قسمت Detail گزارشش و اسمشو هم بذاره txtRow
در قسمت Control Source اين عبارت رو وارد كنه:

=1

در بخش Data ؛قسمت Running Sum رو برابر Over All بذاره
در قسمت Detail بايد Properties بگيريم و در بخش Event و در قسمت On Format اين كد رو وارد كنيم:



Me.Detail.BackColor = iif(Me.txtRow mod 2=0 , 16777215,14671839)


حالا اگه شما گزارش رو اجرا كنيد ميبينيد كه سطرهاي زوج به رنگ زمينه سفيد و سطرهاي فرد به رنگ زمينه خاكستري در اومدن
:لبخند:
از همه دوستاني كه لطف كردند و اين اطلاعات رو به من ياد دادند ،‌تشكر ميكنم

Profesorjd
یک شنبه 27 بهمن 1387, 20:54 عصر
با سلام
دوستان و اساتيد با ايجاد يك كنترل ديگر در فرم ايجاد رنگ رديف كردند . سوال : چطور ميشود با كنترل يك فيلد موجود كه آن فيلد در گزارش قرار نگيرد اينكار را كرد . مثلاً يك فيلد عددي داريم كه طبقه بندي جدول است و نيازي نيست كه در گزارش باشد . حالا ميخواهيم با كنترل آن فيلد كه اگر مثلاً 1 بود ركوردهاي متناظر آن قرمز شود و اگر 2 بود آبي و ... بازهم تشكر

abdoreza57
جمعه 17 فروردین 1403, 04:25 صبح
با سلام و قبولی طاغات خدمت اساتید محترم فروم

واقعا لذت بردم از این همه دانش و توانمندی آقای پیروزمهر عزیز و دیگر عزیزان
یه سوالی باعث شد من این تاپیک بالا بیارم که راهی براش ندارم و خیلی خوبه که به نوعی یه ایده برا این تاپیک به حساب میاد
من کزارشی که دارم بر اساس کد کالا فیلتر میشه و هر کد شامل چند ردیف هست به خاطر خوانا و مشخض بودن کالا میخوام رنگی کردن ردیف بر اساس تغییر کد کالا عوض بشه
لطفا به تصویر دقت کنید
155558

155557

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

eb_1345
شنبه 18 فروردین 1403, 01:12 صبح
سلام !
وقت بخیر!
فکر کنم منظور شما از فیلتر شدن کالا سورت شدن ستون کالا میباشد چون در تصویر گزارشی که ضمیمه کرده این ستون کد فنر از کوچک به بزرگ مرتب(سورت) شده
بنظرم ساده ترین راه بدون کد نویسی اینست که اگر تعداد کالاها که هر کدام دارای کد منحصر بفرد میباشد خیلی زیاد نیست در قسمت خصوصیت conditional formatting تکست باکس ردیف به هر کد کالا یک رنگ اختصاص بده
یا علی

abdoreza57
شنبه 18 فروردین 1403, 14:24 عصر
سلام دوست و برادز گزامی خوبم جناب ابراهیمی عزیز

گزارش بر حسب کد کالا مرتب شده و هر کد چند عملیات متفاوت داره (زیر گروه ) بنابراین همانطور که در تصویر معلومه کد ولی 4 زیر گروه داره دومی 2 و سومی 2 و ...
مهم اینه تو گزارش گیری رنگ ستون بر حسب کد کالا یکی در میان رنگی بشه سفید خاکستری.
دلیلش هم خوانا و مشخص بودن گزارش است
سعی میکنم نمونه ساده ضمیمه کنم چون خود برنامه سنگینه
با این حال به نظرم میاد تو یکی از برنامه هی خود شما من مشابه این درخواست دیدم قبلا که چند دریف تیره و چند ردیف روشن باشه
یا نمونه شارژ ساختمون آقای امیری ولی پیدا نکردم
به هر حال خیلی دوست دارم این ایده را ببینم میشه انجام داد یا خیر


155562

eb_1345
شنبه 18 فروردین 1403, 15:45 عصر
سلام دوست و برادز گزامی خوبم جناب ابراهیمی عزیز

گزارش بر حسب کد کالا مرتب شده و هر کد چند عملیات متفاوت داره (زیر گروه ) بنابراین همانطور که در تصویر معلومه کد ولی 4 زیر گروه داره دومی 2 و سومی 2 و ...
مهم اینه تو گزارش گیری رنگ ستون بر حسب کد کالا یکی در میان رنگی بشه سفید خاکستری.
دلیلش هم خوانا و مشخص بودن گزارش است
سعی میکنم نمونه ساده ضمیمه کنم چون خود برنامه سنگینه
با این حال به نظرم میاد تو یکی از برنامه هی خود شما من مشابه این درخواست دیدم قبلا که چند دریف تیره و چند ردیف روشن باشه
یا نمونه شارژ ساختمون آقای امیری ولی پیدا نکردم
به هر حال خیلی دوست دارم این ایده را ببینم میشه انجام داد یا خیر


155562
سلام
فکر می کنم منظور شما گروهبندی گزارش بر اساس کد کالا باشه
نمونه اصلاح شده رو ملاحظه بفرما!

abdoreza57
شنبه 18 فروردین 1403, 20:34 عصر
بسیار ممنونم ازت

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

خیلی آقایی آقا ابراهیم

eb_1345
شنبه 18 فروردین 1403, 22:11 عصر
بسیار ممنونم ازت

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

خیلی آقایی آقا ابراهیم
خواهش می کنم

m3343kh
یک شنبه 19 فروردین 1403, 18:29 عصر
بسیار ممنونم ازت

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

خیلی آقایی آقا ابراهیم

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

mehdi_fiz
دوشنبه 20 فروردین 1403, 01:12 صبح
سلام وقت بخیر
نمونه اصلاح شد امیدوارم درست متوجه منظور شما شده باشم

atf1379
دوشنبه 20 فروردین 1403, 11:14 صبح
بسیار ممنونم ازت

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

خیلی آقایی آقا ابراهیم
سلام
بنظرم همون نمونه اصلاح شده پست 15 جناب بهرامی خیلی بهتره و مورد تائید و پذیرش سوال کننده هم قرار گرفت . در نمونه فوق عنوان ستون های گروه رنگی شده وسطرهای زیر گروه یکدست سفید میباشد واین حالت جذابتر به نظر میرسد .
لذا با وجود رنگی بودن عنوان ستونهای گروه ها رنگی کردن یک در میان زیر گروه ها باعث آشفتگی در نمایش سطرهای گزارش میشود . ضمن اینکه رنگی کردن بخش های گزارش باعث میشود که قسمت های بیرونی خارج از کادر گزارش هم رنگی شود و این حالت اصلا جالب نمی باشد.

abdoreza57
دوشنبه 20 فروردین 1403, 20:29 عصر
سلام
جسارتا دو نمونه را ویرایش کردم
سلام ممنونم ارتون و قدردانی میکنم از وقتی که گذاشتید
خیلی خوب و عالی بود
امیدوارم دوشتان هم از این آموزش تون استفاده کرده باشند

eb_1345
دوشنبه 20 فروردین 1403, 22:30 عصر
سلام ممنونم ارتون و قدردانی میکنم از وقتی که گذاشتید
خیلی خوب و عالی بود
امیدوارم دوشتان هم از این آموزش تون استفاده کرده باشند
سلام جناب آقای abdoreza57 عزیز!
در دو نمونه های اصلاح شده توسط جناب m3343khمحترم چه نوع آموزش خاصی ارائه شده که نیاز هست همه دوستان از آن استفاده کنن ؟ جناب m3343kh عزیز کد زیر رو در بخش Detail_Format گزارش درج نموده اند که همین کد درپست شماره 3 درج شده و در آنجا پیشنهاد جناب آقای پیروزمهر جهت سرعت بخشیدن در لود شدن گزارشات سنگین بر استفاده if بجای iif بوده .


Me.Detail.BackColor = IIf(Me.txtrow Mod 2 = 0, 15987699, 16777215)

ظاهرا خود شما به مطالب ارائه شده در پست فوق دقت نکرده بودین چون اگر دقت میکردین و کدهای ارائه شده در پست فوق را در گزارشتون اعمال کرده بودین نیازی به بالا آوردن این تاپیک و ایجاد پست جدید نداشتین .
بنده با توجه به توضیحاتی که در پست 12 داده بودین فکر کردم که مطالب پست های قبلی رو مرور کرده این و خواسته جدید شما چیزی خارج از مطالب گفته شده میباشد و اگر میدانستم هدف شما صرفا یک در میان رنگی شدن سطرهای گزارش میباشد پیشنهاد استفاده از همان کد پست 3 رو بهتون میدادم.
ضمناً خانم /آقا atf1379 در پست 20 به مطلب جالبی اشاره کردن و اینکه وقتی این کد در قست Detail_Format بکار میرود رنگ خاکستری قسمت دیتیل گزارش خارج از کادر گزارش مشاهده میشود که به اعتقاد بنده هم این حالت جالبی برای گزارش نمیتواند باشد . برای رفع این حالت باید از خصوصیت conditional formatting در تکست باکس های قسمت Detail_Format گزارش استفاده کرد .
از جناب m3343kh بخاطر استفاده از کد پیشنهادی در پست 3 در نمونه های اصلاح شده تشکر میشود
موفق باشین

abdoreza57
سه شنبه 21 فروردین 1403, 02:55 صبح
سلام
بنظرم همون نمونه اصلاح شده پست 15 جناب بهرامی خیلی بهتره و مورد تائید و پذیرش سوال کننده هم قرار گرفت . در نمونه فوق عنوان ستون های گروه رنگی شده وسطرهای زیر گروه یکدست سفید میباشد واین حالت جذابتر به نظر میرسد .
لذا با وجود رنگی بودن عنوان ستونهای گروه ها رنگی کردن یک در میان زیر گروه ها باعث آشفتگی در نمایش سطرهای گزارش میشود . ضمن اینکه رنگی کردن بخش های گزارش باعث میشود که قسمت های بیرونی خارج از کادر گزارش هم رنگی شود و این حالت اصلا جالب نمی باشد.
سلام و یه عذر خواهی به آقای بهرامی و شما دوست خوبم بدهکارم و الان میگم
من جوابم را همون پست 15 گرفتم و توضیحات شما دوست عزیز هم به جا بود ولی متاسفانه من تو ریپلای کردن نقل قول کاربر m3343 را زدم ! در هر صورت همان طور که شما اشاره کردید رنگی کردن چند سطر به خاطر زیرگروه تو چاپ واضح نبود به همین دلیل منطقی ترین روش همون که جناب بهرامی در ابتدای سوال من درج کرد و بازم ازشون ممنونم

abdoreza57
سه شنبه 21 فروردین 1403, 03:16 صبح
سلام جناب آقای abdoreza57 عزیز!
در دو نمونه های اصلاح شده توسط جناب m3343khمحترم چه نوع آموزش خاصی ارائه شده که نیاز هست همه دوستان از آن استفاده کنن ؟ جناب m3343kh عزیز کد زیر رو در بخش Detail_Format گزارش درج نموده اند که همین کد درپست شماره 3 درج شده و در آنجا پیشنهاد جناب آقای پیروزمهر جهت سرعت بخشیدن در لود شدن گزارشات سنگین بر استفاده if بجای iif بوده .


Me.Detail.BackColor = IIf(Me.txtrow Mod 2 = 0, 15987699, 16777215)

ظاهرا خود شما به مطالب ارائه شده در پست فوق دقت نکرده بودین چون اگر دقت میکردین و کدهای ارائه شده در پست فوق را در گزارشتون اعمال کرده بودین نیازی به بالا آوردن این تاپیک و ایجاد پست جدید نداشتین .
بنده با توجه به توضیحاتی که در پست 12 داده بودین فکر کردم که مطالب پست های قبلی رو مرور کرده این و خواسته جدید شما چیزی خارج از مطالب گفته شده میباشد و اگر میدانستم هدف شما صرفا یک در میان رنگی شدن سطرهای گزارش میباشد پیشنهاد استفاده از همان کد پست 3 رو بهتون میدادم.
ضمناً خانم /آقا atf1379 در پست 20 به مطلب جالبی اشاره کردن و اینکه وقتی این کد در قست Detail_Format بکار میرود رنگ خاکستری قسمت دیتیل گزارش خارج از کادر گزارش مشاهده میشود که به اعتقاد بنده هم این حالت جالبی برای گزارش نمیتواند باشد . برای رفع این حالت باید از خصوصیت conditional formatting در تکست باکس های قسمت Detail_Format گزارش استفاده کرد .
از جناب m3343kh بخاطر استفاده از کد پیشنهادی در پست 3 در نمونه های اصلاح شده تشکر میشود
موفق باشین

سلام جناب بهرامی عزیز من از شما خیلی خیلی آموخته ام و بهتون مدیونم
متاسفانه یه بی دقتی من تو ریپلای کردن پست کاربر باعث این سوتفاهم شد که البته من یه پست بالاتر بهش اشاره کردم
من همه نمونه ها و حتی بحثهای شما با آقای پیروزمهر را متوجه شدم ولی خواسته من مرتفع نمیشد واسه همین تاپیک بالا اوردم و خوشبختانه دقیقا همون پیشنهاد که شما فرمودید بی دردسر خواسته منو مرتقع میکرد که عرض کردم منظورم این نبود ولی راه بهتر از نظر من بود .
یاد مثال مشکل جعبه های خالی کارخونه صابون سازی افتادم که جناب پیروزمهر قبلها میگفتند
شما دقبقا با ایدتون پنکه تو مسیر ریل جعبه ها قرار دادید و مشکل حل شد !

با همیه این تفاسیر یاد گرفتن از آدم های حرفه ای مثل شما برا من باعث افتخاره خدا پشت و پناهتون