با سلام
چگونه از ویژگی OnNoData مربوط به گزارش باید استفاده کرد . دستوراتی که در این بخش می نویسم اجرا نمی شود
با سلام
چگونه از ویژگی OnNoData مربوط به گزارش باید استفاده کرد . دستوراتی که در این بخش می نویسم اجرا نمی شود
سلام
چه عملیات یا کدی انجام نمیشه ممکنه بیشتر توضیح بدین ؟
دوست عزیز
مثلا فرض کنید یه لیبل با کپشن "موردی ثبت نشده است " چاپ شود . یعنی برای یه رکورد ممکن است سابریپورت آن خالی باشد ، در این صورت می خواهم این لیبل بجای رکورد آن سابریپورت چاپ شود .
در رویداد مذکور بنویس
"موردی ثبت نشده است"msgbox
cancel=true
این نمونه فکر کنم جوابتون رو بده ! Report1 رو اجرا کنید و نام رو خالی رد کنید .
دوست عزیز ضمن تشکر از بذل محت و توجه حضرتعالی ، خدمتتون عرض دارم که مشکلم توی یکی از سابریپورت ها است یعنی من توی یه گزارش ، پنج سابریپورت دارم که یکی از اونها ممکنه خالی از اطلاعات باشد یعنی وقتی دستور چاپ می دهی ممکن است رکورد اول تمام سابریپورتها حاوی Data باشند و برای رکورد دوم یکی از این سابریپورتها Data نداشته باشد . بنابراین می خواهم که برای هر رکوردی که آن سابریپورت خالی است ، لیبل ما عمل کند . من این کد رو توی رویداد OnOpen نوشتم اما جواب نمی ده و خطا می گیره .
Private Sub Report_Open(Cancel As Integer)
If Me.subreport5.Report.OnNoData = True Then
LblPayam.Caption = "موردی ثبت نشده "
Else
LblPayam.Caption = ""
End If
End Sub
دنبال علت خطا و عدم عملکرد این کد هستم . آنچه شما منظور فرموده اید سابریپورت حاوی اطلاعات اصلی ریپورت است به همین خاطر رویداد OnNoData جواب می دهد اما وقتی اطلاعات اصلی همیشه وجود داشته باشد و فقط یکی از چندین سابریپورت ها ممکن است خالی از اطلاعات باشد ، نمی دانم چه باید کرد . ممنون می شوم اگر عنایت بفرمایید .
دوست عزیز حتماً بررسی و سعی می کنم تا انشاءالله راه حلش رو پیدا کنم البته شاید سایر دوستان هم ایده ای داشته باشند .
لطف می فرمایید ممنون می شوم
البته قراره یه گزارش رو توزیع کنم که خیلی فوریه اگه این مورد توی اون منظور بشه خیلی بهتره
شما باید در رخداد Report_NoData سابریپورت (subreport5) کد بنویسین
سلامشما باید در رخداد Report_NoData سابریپورت (subreport5) کد بنویسین
دوست عزیز پیشنهاد شما جواب نمیده . علتش هم اینه که subreport زمانی که فاقد دیتای متناظر با report اصلی باشه اصلاً نمایش داده نمیشه حالا مشکل اینجاست که به هر حال چطور میتونیم به برنامه بفهمونیم در صورتیکه یکی از subrport ها فاقد رکورد متناظر با report بود اونوقت یک واکنشی اعم از پیغام ،caption و یا هر عمل دیگری رو انجام بده متاسانه بلحاظ محدودیت رویه ها در report ، اجرای این موضوع یخورده مشکله و قاعدتاً باید براش یک ترفند پیدا کرد .
حق با شماست . دقیقا مشکل من هم همین بود . به هر حال این ترفند را امیدوارم دوستی خیلی زود برایمان مشخص کنه
منتظریم
بله، شما درست میفرمایید و من به موضوع دقت نکرده بودم. البته دوستمون میتونن با گروه بندی هم به خواسته شون برسن (بجای ساب ریپورت) ولی برای اینکه تاپیک به سرانجام برسه و بر پایه نمونه ای که شما گذاشتین:
میشه در Detail_Format ریپورت اصلی چک کرد که اگر ساب ریپورت رکورد نداره نمایش داده نشه.
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If DCount("F1", "TABLE2", "F1='" & Me.Controls("F1") & "'") = 0 Then
Me.TABLE1_SUB.Visible = False
Me.MESSAGE.Visible = True
Else
Me.TABLE1_SUB.Visible = True
Me.MESSAGE.Visible = False
End If
End Sub
دوست عزیز سپاسگزارم . روش مناسبی بود جواب داد . بازم ممنون