PDA

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



masoudmok
شنبه 27 شهریور 1389, 11:07 صبح
سلام .
توی پروژم از چند تا گزارش CrystalReport استفاده می کنم و بانک Access . وقتی گزارش هایی رو پشت سر هم میگیرم از هر چند تا گزارش 1 دونشو قبلیو چاپ میکنه ... یعنی اگه 10 بار گزارش چاپ مشخصات 10 نفر مختلفو چاپ کنم مثلا دفعه ی چهارم به جای نفر چهارم مشخصات نفر قبلی یعنی نفر سومو چاپ می کنه .
چطور مشکلمو حل کنم ؟
نحوه گزارش گیریم هم اینجوریه : اول کل اطلاعاتی رو که تو گزارش بهش نیاز دارم تو یه جدول میریزم بعد اون جدولو تو Wizard کریستال ریپورت به گزارش ربط میدم .

masoudmok
شنبه 27 شهریور 1389, 15:26 عصر
یعنی کسی راه حلشو نمیدونه ؟؟؟!!!
بعد از گزارشگیری کنار بانکم یه فایل همنام از نوع microsoft office access record - locking information ساخته می شه . در ضمن تغییراتی که باید توی بانک اطلاعاتیم انجام شده باشه ( تو اون جدولی که باید چاپ بشه ) انجام نشده . مثه اینه که بانک از چند تا query که بهش پاس میشه اخریشو انجام نمیده . وقتی trace می کنم هیچ موقع این مشکل پیش نمیاد . یه جورایی به زمان بندی و این جور چیزا مربوط میشه فکر کنم

محسن شامحمدی
شنبه 27 شهریور 1389, 16:20 عصر
اگر یک نمونه بسیار ساده از گزارشتون درست کنید و سورسشو بذارید بهتر می تونیم کمک کنیم.
ما که برنامه شما رو نمی بینیم چطور توی نوشتن کد کمکتون کنیم.

masoudmok
شنبه 27 شهریور 1389, 16:41 عصر
تو کد نویسی مشکلی نداره . مطمئنم . چون از هر 10 بار فقط یک یا حداکثر 2 بار ابنجوری می شه .
بذارین روند کارو دقیق تر بگم . تو فرم اول کاربر از تو grid یه سطرو انتخاب می کنه . پایین همین صفحه چند تا دکمه هست که هر کدوم یه قسمتی از اطلاعات مربوط به اون سطرو چاپ می کنه . البته اطلاعات داخل grid 5 در صد از اطلاعات مربوط به هر رکورده . واسه رکورد انتخابی کاربر باید بتونه چند نوع گزارشو با زدن دکمه های پایین صفحه چاپ کنه . بعد از زدن هر دکمه برنامه اطلاعات مورد نیازشو تو یه جدول خالی میریزه . بعد اون جدولو به کریستال ریپورت ربطش میدم .
مشکل اینه که هر دفعه تو حداکثر یکی از گزارشام مشخصات نفر قبلی که گزارشش چاپ شده رو نشون می ده . یعنی نه اطلاعات جدولی که چاپش می کنم delete می شه و نه اطلاعات جدید توش Insert می شه .
به private void button3_Click دقت کنین . این یکی از اون قسمتاس .
مرسی

masoudmok
شنبه 27 شهریور 1389, 17:06 عصر
الان یه چیزیو متوجه شدم ...
کار پاک کردن جدول و ثبت اطلاعات جدید داخل اون بدون مشکل انجام میشه . crystalreport یا crystalreportviewer یه جورایی اطلاعات قبلیو کش کردن تو خودشون . یعنی با اینکه اطلاعات جدید توی جدول هست همون اطلاعات قبلی که چاپ کردنو دوباره چاپ می کنن .
از این دستور واسه ربط دادنشون استفاده می کنم . در ضمن بعد از گزارشگیری فرمی که crystalreportviewer داخلشه با دستور this.close بسته میشه .

crystalReportViewer1.ReportSource = "D:\\DataBase\\report2.rpt";
crystalReportViewer1.PrintReport();

masoudmok
شنبه 27 شهریور 1389, 19:34 عصر
دلیلشو فهمیدم . اون ... ی که کدشو نوشته بود همه ی عناصر کار با پایگاه داده مثل oledbcommand و datareader و ... رو static تعریف کرده بود . ممنون از کمک دوستان