PDA

View Full Version : تابع در ریپورت دو بار فراخوانی می شود



h_arman
چهارشنبه 02 اردیبهشت 1388, 12:29 عصر
با سلام خدمت دوستان
من یک گزارش دارم که در حقیقت یک نامه اداری است. میدونید که هر نامه اداری باید توسط دبیرخانه شماره شود. اما چون این نامه باید بیشتر از 200 نسخه چاپ شود و هر کدام بایستی شماره جداگانه داشته باشند من برای راحتی کار یک جدول با دو فیلد به برنامم اضافه کردم. یکی شامل شماره نامه و یکی فیلد Yes/No برای اینکه مشخص بشه آیا این شماره استفاده شده یا نه؟ به تعداد لازم شماره از دبیرخانه گرفتم و در جدولم قرار دادم.
یه تابع هم نوشتم بنام NewLetterID() که با هربار فراخوانی اولین شماره نامه ای که استفاده نشده یعنی فیلد دوم آن False است را برمیگردونه و فیلد دوم اون را علامت میزنه که بعنوان استفاده شده تلقی بشه.
برای استفاده از این تابع در ReportHeader گزارشم یک TextBox گذاشتم و در ویژگیRecord Source اون نوشتم
=NewLetterID()
اما هر بار که گزارشم اجرا میشه دوبار این تابع فراخوانی میشه و درنتیجه دو شماره از لیست کم میشن.
علت اون را هم پیدا کردم. در PageFooter گزارش یه TextBox دارم که توش نوشتم
="صفحه " & [Page] & " از " & [Pages]
اگر این قسمت را حذف کنم که درنتیجه دیگه انتهای صفحات شماره صفحه را ندارم مشکل حل میشه ولی من میخوام یه راهی پیدا کنم که شماره صفحه را هم داشته باشم

دوستان اگر راه دیگری میدونند لطف کنند و راهنمایی بفرمایند.

h_arman
چهارشنبه 02 اردیبهشت 1388, 12:39 عصر
اینم نمونه برنامه

مهدی قربانی
چهارشنبه 02 اردیبهشت 1388, 15:34 عصر
سلام
دوست عزيز چرا در جدولشماره ها هر شماره 2 بار ثبت شده ؟

h_arman
چهارشنبه 02 اردیبهشت 1388, 15:49 عصر
سلام
دوست عزيز چرا در جدولشماره ها هر شماره 2 بار ثبت شده ؟

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

مهدی قربانی
چهارشنبه 02 اردیبهشت 1388, 16:09 عصر
سلام
جدول شما كماكان داري 2 ركورد از هر شماره هست ، به هر حال من تست كردم و فقط يك بار پرينت ميگيره البته اين تست در نمونه اول هم به همين ترتيب عمل ميكنه !!؟

h_arman
چهارشنبه 02 اردیبهشت 1388, 16:29 عصر
سلام
دوست عزيز چرا در جدولشماره ها هر شماره 2 بار ثبت شده ؟

تقریبا مطمئنم که اشتباه می کنید




به هر حال من تست كردم و فقط يك بار پرينت ميگيره؟

دوست عزیز فکر کنم شما دقیقا متوجه منظور من نشدید. گزارش مسلما به تعداد دفعاتی که ما روی دکمه پرینت کلیک کنیم پرینت میگیره یعنی از هیچی تا بینهایت.
اما اگر دقت کنید هر بار که گزارش را باز می کنید شماره نامه 2 تا اضافه میشه بجای اینکه یکی اضافه بشه. مثلا اگر یک بار گزارش را باز کنید و عدد 85122 را در مقابل شماره نامه ببینید بعد گزارش را ببندید و دوباره باز کنید این بار بجای 85123 عدد 85124 را می بینید.

باز هم از بذل عنایت شما صمیمانه سپاسگذارم

مهدی قربانی
چهارشنبه 02 اردیبهشت 1388, 16:57 عصر
سلام
عذر ميخوام درست متوجه منظور شما نشده بودم ، شما براي حل اين مشكل مي تونيد از رخداد On Print قسمت Report Header كمك بگيريد تا اين مشكل حل بشه :

Private Sub ReportHeader_Print(Cancel As Integer, PrintCount As Integer)
Me.Text17 = NewLetterID()

End Sub
ضمناً عبارت زير رو هم از Record Source تكست باكس حذف كنيد تا نتيجه صحيح نمايش داده بشه .

=NewLetterID()

h_arman
چهارشنبه 02 اردیبهشت 1388, 17:27 عصر
جناب آقای قربانی

با راهنمایی شما مشکل من کاملا شد. از وقتی که برای حقیر گذاشتید ممنونم.