ورود

View Full Version : سوال: تهيه گزارش ويژه



HAMRAHSOFT.IR
پنج شنبه 09 آبان 1387, 12:06 عصر
دوستان همين طور كه در فايل مبيد يك برك از قبل چاپ شده به شكل زير داريم

حلا چطور ميشه گرازشي ساخت هر بار چاب و بترتيب بشه فيلدها را پور كرد

مثلا اگه تا الان رديف 1 چاپ كرديم درهنگام جاب بعدي كه مخوايم رديف 2 را چاپ كنيم زير رديف 1 و در جدول مربوط بشين بهين ترتب تا اخرين ركورد

ايا راحلي هست

HAMRAHSOFT.IR
یک شنبه 12 آبان 1387, 08:49 صبح
بخشيد دوستان سوال من ابتداي يا سخت كه كسي جواب نميده

mohammadgij
یک شنبه 12 آبان 1387, 13:33 عصر
ميشه شكل رديف هاي بعدي رو هم نشون بدي؟ منظورت رو كاملا بگو. من يكم سخت متوجه ميشم.

HAMRAHSOFT.IR
یک شنبه 12 آبان 1387, 13:47 عصر
بنينيد وستان من مخوام هربار كه برينت مي گيرم يكي از سطرهاي جدول فوق پر بشه ودر پرينت بعد خطي كه قبلا چاب شد ديگه جاپ نشه و سطر بعد پرينت بشه
مثلان اگه يك تيبل داريم كه الان 12 ركورد ارده 12 رگورد چاپ بشه بعد اگه رگورد جديد اضافه شد انم بشه به چاپ قبلي افزود ولي 12 ركرد قبل ديگه نبايد چاپ بشه فقط ركورد 13 چاپ بشه اونم در رديف 13

mohammadgij
یک شنبه 12 آبان 1387, 14:41 عصر
ميتوني يك فلگ بذاري توي جدولت و هر بار ركورد هايي رو كه چاپ ميكني اون فلگ رو True كني. مثلا بار اول تا ركورد 12 و اگه يك يا چند ركورد به جدولت اضافه شد
براي پرينت مجدد ابتدا بايد به تعداد ركوردهايي كه داري و اون فلگ True هستش ركورى خالي در گزارشت ايجاد كني و بعد مابقي ركورد هاتو كه در جدول هستن و هنوز True نشدن ، چاپ كني و در آخر ركوردهاي جديد كه اضافه شدن و چاپ هم شدن True كني.
اين تئوريش بود

HAMRAHSOFT.IR
یک شنبه 12 آبان 1387, 14:50 عصر
ميشه يك نمونه برام قراد بديد كه هم من و هم دوستاني كه ممكن بعدها به اين مشكل بر خورد كرد استفاده كنند

مهدی قربانی
یک شنبه 12 آبان 1387, 15:51 عصر
سلام
من يك نمونه مشابه فرمايش محمد آقا قبلاً ساخته بودم ببينيد مشابه خواسته شماست ، در اين نمونه از يك ماكرو و همينطور كوئري Update و مقداري هم كد نويسي و نهايتاً بهره گيري از منوي اختصاصي اين فرآيند انجام ميشه ( براي چاپ گزارش از منوي چاپ استفاده كنيد ) .

HAMRAHSOFT.IR
یک شنبه 12 آبان 1387, 16:11 عصر
تشكر ولي اگه دقت كنيد بعداز پرينت اگه دوبار برينت بگريم از اول صفه پرينگ كرفته ميشه يعني اگر همون برگ قبل را داخل برينتر باريم دوباره از رديف يك شروع به پرينت مكنه و جاي خالي بري قبلي نداره كه بريت بعدي بعداز اونها قرار بگيره

karmand
دوشنبه 13 آبان 1387, 10:54 صبح
ایشان میخواهند یک برگ را چندین بار در پیرینتر بگذارند

در زمانی که می خواهی گزارش را صدا کنی یک inputboxبگیر و شماره ردیف را وارد کن 1 یا 2 یا.....
در openreport یک select case بگیر بر اساس کیسهای مختلف top تکستهایت را تغییر بده
ضمنا اگر کاغذ استفاده شده را در پرینتر بیش از 2 بار بگذاری پرینتر صدمه بیشتری می بیند تا مصرف کاغذ
پسوورد را پیدا کردم متشکرم

mohammadgij
دوشنبه 13 آبان 1387, 12:03 عصر
شرمنده مثل اينكه دوستان خيلي فعالن. من يكم وقت گذاشتم يه نمونه درست كردم ببين به دردت ميخوره؟ فقط اگه يه برگ رو چند بار بذاري توي پرينتر سر برگ رو هردفعه پرينت ميكنه و كنترلش كن. من اينا رو كنترل نكردم. حتما بايد بررسي كني .
براي حل اين مشكل دو جدول ساختم
جدول اول tblGoods كه اطلاعات اصلي توش هستن
جدول دوم tblGoodsTemp كه جهت نمايش ركوردها در پرينت ساخته شده و چنانچه از اين نمونه ميخواهيد در شبكه استفاده كنيد حتما ميبايست جدول tblGoodsTemp رو درون نسخه هاي Client بزاريد نه روي سرور
اين هم كد پشت دكمه پرينت و توضيحات اون






DoCmd.RunSQL "Delete From tblGoodsTemp"
'ركوردهاي موجود در جدول تمپ را حذف ميكند

If DCount("nuCode", "tblGoods", "nuPrint=1") = 0 Then: MsgBox "ركوردي جهت چاپ موجود نمي باشد", vbInformation, "توجه": Exit Sub
'چك مي كند كه اگر ركورد جديدي كه پرينت نشده در جدول وجود ندارد از برنامه خارج شود

If adorstSelect.State = 1 Then adorstSelect.Close
'چك مي كند كه اگر ركورد ست باز باشد آنرا ببندد
adorstSelect.Open "Select nuCode From tblGoods Where nuPrint=2", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
'تعداد ركوردهايي كه تاكنون پرينت شده اند را در ركوردست ميريزد
If Not adorstSelect.EOF Then
'چك ميكند كه آيا ركوردست داراي ركورد مي باشد يا نه
adorstSelect.MoveFirst
'به ركورد اول ركوردست مي رود
Do While Not adorstSelect.EOF
'تا زماني كه به انتهاي ركوردست نرسيده دستورات درون خود را اجرا ميكند
DoCmd.RunSQL " Insert Into tblGoodsTemp (txtDescription,nuPrint)Values('" & "" & "',2)"
'جهت ايجاد ركورد خالي در جدول Tempنوشته شده است
adorstSelect.MoveNext
'ركوردست را به ركورد بعدي هدايت ميكند
Loop
End If
If adorstSelect.State = 1 Then adorstSelect.Close
'چك مي كند كه اگر ركوردست باز باشد آنرا ببندد

If DCount("nuCode", "tblGoods", "nuPrint=1") <> 0 Then
'چنانچه ركورد پرينت نشده در جدول موجود باشد دستور زير را اجرا ميكند
DoCmd.RunSQL " Insert Into tblGoodsTemp (nuCode,txtDescription,nuPrint) Select nuCode,txtDescription,nuPrint From tblGoods Where nuPrint=1"
'ركوردهاي پرينت نشده را در جدول تمپ ايجاد ميكند
End If

DoCmd.OpenReport "rptGoods", acViewPreview

HAMRAHSOFT.IR
دوشنبه 13 آبان 1387, 12:45 عصر
تشكر تقريبا همون كه من مخوام اما مشكل اينكه اگه يك ركورد خاي وسط قرار بگيره جاي خالي ركورد قرا نميده و ازبالا يك جاي خلي ميزاره

mohammadgij
دوشنبه 13 آبان 1387, 13:43 عصر
مثال عددي بزن تا برسي كنم. يا مقاديري كه ميخوا رو وارد كن و فايل رو Upload كن تا ببينم مشكل كجاست

HAMRAHSOFT.IR
سه شنبه 14 آبان 1387, 07:53 صبح
در نمونه خود شما فرض كنيد از رديف 4 كه بين 3 و 5 قرار گرفته فقط بايد چاپ بشه البته از بابت نمونه بسيار سپاس گزارم اگه اون مشكل هم حل بشه ديگه عالي ميشه

mohammadgij
سه شنبه 14 آبان 1387, 14:54 عصر
به عبارت ديگه شما ميخواين كه ركوردي رو كه تمايل به پرينت داريد انتخاب كنيد؟
يا برنامتون طوري نوشته شده كه ممكنه ركوردي بين ركوردهاي ديگه ثبت بشه؟
هميشه يك ركورد رو مايل به انتخابش هستيد يا ممكنه بيش از يك ركورد هم بخواين انتخاب كنيد؟

HAMRAHSOFT.IR
سه شنبه 14 آبان 1387, 15:22 عصر
در حالت عادي يك ركورد ولي مكن بخواي از تعداد ركرد خاص هم پريت بگريم

mohammadgij
چهارشنبه 15 آبان 1387, 11:43 صبح
ببخشيد من دليل اين كار رو نمي فهمم.
به طور مثال عرض مي كنم كه مثلا شما رديف هاي 1 تا 5 رو پرينت كردي
حالا دوباره مي خواي رديف 4 رو دوباره پرينت كني.
خب چرا نبايد رديف هاي ديگه رو پرينت كني؟
آيا مي خواي همون برگه رو دوباره بذاري توي پرينتر و روش پرينت مجدد بگيري؟
اگه اينجوره كه رديف 4 رو روي رديف 4 كه قبلا پرينت كرده ميزنه.
اگر ميگي كه نه. و از 1 تا 3 و 5 رو هم پرينت كردي اما 4 رو پرينت نكردي. خب اگه دوباره برگه رو بذاري توي پرينتر چون تعداد ركوردهايي كه پرينت مي كنه پشت هم هستن. چه طور ميشه بين ركوردهاي به هم پيوسته ركورد 4 رو هم پرينت كرد؟
البته يه حدس هايي مي زنم كه چي دقيقامد نظرته اما اميدوارم كه اون چيزي كه من فكر ميكنم نباشه

HAMRAHSOFT.IR
چهارشنبه 15 آبان 1387, 12:02 عصر
مشكل حل كردم ممنون ا راهنماي شما ولي اگه چيزي بنظزتون ميرسه بگيد دوستان نيز استفاده كنند

mohammadgij
چهارشنبه 15 آبان 1387, 14:30 عصر
عزيزم اگه مشكل رو حل كردي راهنمايي كن