View Full Version : سوال: تهیه گزارش متفاوت
arman2000
چهارشنبه 26 آبان 1389, 10:27 صبح
با سلام
برای همه رکوردها، سه تست گذاشته می شود ولی برای مواردی (در شکل زیر برای شماره: 122) سه تست دیگر - بنا به تقاضای ارسال کننده نمونه، اضافه بر سه تست دایمی گذاشته می شود. اگر بخواهیم فیلد و جواب این سه تست اضافه، فقط زمانی که مقدار در فیلد آنها وارد شد، به صورت یک ردیف در گزارش دیده شوند وگرنه همان جواب سه تست در یک ردیف مانند شکل زیر آورده شود چه دستوری باید داد؟ (البته این جدول را در ورد تايپ کرده ام.)
http://sums.ac.ir/~nasiri/report.jpg
arman2000
شنبه 29 آبان 1389, 07:50 صبح
منتظر پاسخ هستم
maryamrad
شنبه 29 آبان 1389, 08:37 صبح
اگر درست متوجه شده باشم اینکه شما بخواهید در صورت وارد شدن اطلاعات ردیف دوم اطلاعات نمایش داده شود، را باید با دو جدول پیاده کنید
یعنی یک فردی که ثبت نام کرده ممکن است دو یا چند تست داده باشد
یعنی یک ارتباط یک به چند...
با این کار خیلی راحت می توانید این فرمت را در اکسس پیاده سازی کنید
اگر جوابتان این نیست بیشتر توضیح دهید..
wolfstander
شنبه 29 آبان 1389, 08:40 صبح
سلام دوست عزیز
نمونه برنامه رو میذاشتید میشد راه حل رو به شما راحت ارائه داد
برای همینم بوده که دوستان جوابی ندادن
ولی این مشکلی رو که شما دارید، فقط به نظر من البته ، دو راه حل بیشتر نداره
اول: درست کردن جدول شرح آزمایشات و ارتباط درست جداول
دوم: ایجاد ساب فرم
و چون نمونه برنامه شما رو ندیدم، نمیتونم نظر خاصی بدم
arman2000
یک شنبه 30 آبان 1389, 12:51 عصر
سلام دوست من ممنونم از راهنمايي شما
اينجوري منظورمو مي گم: توي گزارشي كه از كوئري اطلاعات مي گيره، چطور ممكنه عنوان و مقدار رديف دوم رو زماني نمايش بده كه حداقل يك فيلد اون، مقدار دهي شده باشه (اگه همه فيلدها (6 تست) رو به صورت دو رديف سه تايي، در ساخت گزارش در نظر بگيريم)
در واقع هدفم ديده نشدن سه فيلد دوم كه همون رديف دوم مي شه (عنوان فيلد و مقدار اون: هر دو) هست اگه حداقل يكي از فيلدهاش مقدار نباشه.
wolfstander
یک شنبه 30 آبان 1389, 14:18 عصر
خوب این شکلی که شما میگید، یعنی اینکه جای 6 تا تکست باکس آماده باشه
اگه پربودن ، نمایش داده بشن، اگه نه که خالی باشن
اگه درست فهمیده باشم
شما 6 تا تکست باکس دیگه درست کن
توش با دستور iif بنویس که اگه پر بود، نمایش داده بشه، اگه نه نمایش داده نشه
تکست باکس های اصلی رو هم هاید کن
arman2000
دوشنبه 01 آذر 1389, 09:10 صبح
سلام مجدد
بزرگوار نمونه برنامه رو گذاشتم ممنون مي شم روي اين نمونه راهنمايي كنيد.
amirzazadeh
دوشنبه 01 آذر 1389, 11:20 صبح
سلام مجدد
بزرگوار نمونه برنامه رو گذاشتم ممنون مي شم روي اين نمونه راهنمايي كنيد.
سلام
نمونه اصلاح شده رو ببينيد:
arman2000
دوشنبه 01 آذر 1389, 12:29 عصر
دوست من سلام
عالي بود سپاسگزارم:تشویق::تشویق::تشو ق:
1- بزرگوار چه تغييري لازمه براي اينكه اگر حداقل در يكي از فيلدهاي رديف دوم داده وارد شد، اون دوتاي ديگه هم ديده بشند هر چند خالي باشند؟
2- فاصله اي كه بخاطر نديده شدن رديف دوم ايجاد مي شه امكان داره حدف بشه؟
amirzazadeh
سه شنبه 02 آذر 1389, 09:01 صبح
دوست من سلام
عالي بود سپاسگزارم:تشویق::تشویق::تشو ق:
1- بزرگوار چه تغييري لازمه براي اينكه اگر حداقل در يكي از فيلدهاي رديف دوم داده وارد شد، اون دوتاي ديگه هم ديده بشند هر چند خالي باشند؟
2- فاصله اي كه بخاطر نديده شدن رديف دوم ايجاد مي شه امكان داره حدف بشه؟
سلام
كد رو به اين شكل اصلاح كنيد:
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
If Len(Me.test5) > 0 Or Len(Me.test6) > 0 Or Len(Me.test4) > 0 Then
Me.test5.Visible = True
Me.test4.Visible = True
Me.test6.Visible = True
Else
Me.test5.Visible = False
Me.test4.Visible = False
Me.test6.Visible = False
End If
End Sub
.............................
موفق باشيد
arman2000
چهارشنبه 03 آذر 1389, 00:17 صبح
سلام ممنونم از راهنمایی خوب شما
فاصله اي كه بخاطر نديده شدن رديف دوم (جای خالی ردیف دوم، زمانی که فیلدهای اون خالی می مونه) ايجاد مي شه امكان داره حذف یا کمتر بشه؟
موفق باشید
arman2000
شنبه 06 آذر 1389, 09:06 صبح
ممنون مي شم راهنمائي كيند
arman2000
دوشنبه 08 آذر 1389, 16:21 عصر
منتظر پاسخ شما هستم
amirzazadeh
سه شنبه 09 آذر 1389, 09:56 صبح
منتظر پاسخ شما هستم
سلام
فكر ميكنم اين كار امكانپذير نباشه تا نظر ساير دوستان چي باشه.
RESMAILY
پنج شنبه 11 آذر 1389, 08:17 صبح
به نام خدا
با سلام. با اجازه دوستان اين قيسل گزارش ها را به سادگي مي شود ايجاد نمود. شرط اصلي آن است كه خواسته ما داراي منطق سيستمي باشد. يعني دست كم اين خروجي را بايد در يك كويري يا جدول بايد بتوانند استخراج نمايند. آنگاه گزارش ساز آكسس آنقدر امكانات دارد كه باقي كار را انجام دهد. در نمونه ارايه شده يك ركورد توامان داراي فيلدهاي خالي و پر مي باشد. در عين حال از اين نظر ركورد هاي متفاوتي وجود دارد. بايد ابتدا آنها بشود كه براساس يك پارامتر (انتخابي) آنهارا دسته بندي يا اولويت بندي نمود. والااز اين جدول براي چنان منظوري حتي با كويري كراس تب هم نمي شود كار زيادي انجام داد.
اين دوست عزيز اگر در طراحي جداول برنامه شان و منطق آن نگاهي مجدد بيندازند مي توانند موضوع را حل كنند. بنده گمان مي كنم كه جدول موجود دست كم به سه جدول قابل تقسيم است(مثلا حتي يكي از آنها موقت باشد). و سپس بايد تعيين نمود كه اين Test هاي شماره گذاري شده چه اولويتي نسبت به هم داشته باشند و غيره.
m_jedari
پنج شنبه 11 آذر 1389, 10:09 صبح
با سلام و تشكر از راهنمايي اين دوست عزيز
خواهشمنديم پاسخ هاي خود را همراه با نمونه درج بفرماييد تا بيشتر مورد استفاده قرار گيرد
با تشكر مجدد
arman2000
پنج شنبه 11 آذر 1389, 12:23 عصر
سلام
متوجه نشدم جواب دوستمون RESMAILY، مربوط به كدوم قسمت سوالم بود.
دست كم اين خروجي را بايد در يك كويري يا جدول بايد بتوانند استخراج نمايند. و
جدول موجود دست كم به سه جدول قابل تقسيم است(مثلا حتي يكي از آنها موقت باشد). و سپس بايد تعيين نمود كه اين Test هاي شماره گذاري شده چه اولويتي نسبت به هم داشته باشند و غيره.
در واقع مي خواستم فاصله اي كه بخاطر نديده شدن رديف دوم (جای خالی ردیف دوم، زمانی که فیلدهای اون خالی می مونه) ايجاد مي شه، حذف بشه.
اگه راهنمايي ايشون در مورد همين سوال هست (نه پنهان كردن فيلد بدون داده كه دوست خوبم amirzazadeh، كد اون رو روي نمونه اعمال كرده)، نمونه اصلاح شده رو مجدد مي ذارم تا لطف كنند روي اون راهنمايي بفرمايند.
arman2000
جمعه 19 آذر 1389, 12:14 عصر
ممنوم مي شم راهنمايي بفرمائيد.
arman2000
دوشنبه 22 آذر 1389, 00:01 صبح
سلام
زماني که جوابي براي مورد انتخابي براي جستجو (که نتيجه رو با اين گزارش نشون مي ده) وجود نداره، پيغام زير رو مي ده :
Run-time error '2427': entered an expression no value
که با کليک دکمه Debug از کد زير ايراد مي گيره:
If Len(Me.test5) > 0 Or Len(Me.test6) > 0 Or Len(Me.test4) > 0 Then
arman2000
پنج شنبه 02 دی 1389, 12:26 عصر
سلام
منتظر راهنمايي شما هستم
arman2000
چهارشنبه 08 دی 1389, 09:24 صبح
لطف کنید جواب بدید.
arman2000
پنج شنبه 09 دی 1389, 09:20 صبح
ممنون مي شم راهنمايي كنيد.
arman2000
شنبه 11 دی 1389, 09:01 صبح
سلام
چرا زماني که جوابي براي مورد انتخابي براي جستجو (که نتيجه رو با اين گزارش نشون مي ده) وجود نداره، پيغام زير رو مي ده :
Run-time error '2427': entered an expression no value
که با کليک دکمه Debug از کد زير ايراد مي گيره:
If Len(Me.test5) > 0 Or Len(Me.test6) > 0 Or Len(Me.test4) > 0 Then
arman2000
چهارشنبه 15 دی 1389, 13:39 عصر
منتظر راهنمايي هستم.
dadsara
شنبه 18 دی 1389, 08:17 صبح
سلام
دوست عزیز شما همین تاپیک را با یک عنوان دیگر در حال پیگیری هستید ، در آن تاپیک به جنابعالی اعلام شد که از کوئری های کراس تب استفاده نمائید ظاهر به جواب رسیدید ، باتوجه به اینکه در گزارش کراس تب گاهی با محدودیت مواجه هستید لذا به جنابعالی پیشنهاد می شود که جدول خود را به دو جدول تقسیم کنید و یک ارتباط یک به چند بین آنها برقرار کنید در این حالت مشکل شما برای همیشه حل خواهد شد
arman2000
جمعه 08 بهمن 1389, 20:12 عصر
سلام دوست من
تاپیک تهیه گزارش آمار سالیانه (http://barnamenevis.org/showthread.php?264514-تهيه-گزارش-آمار-ساليانه)منظورتون هست؟ جوابم رو در اون تاپیک گرفتم ولی موضوع این تاپیک تهیه گزارش متفاوت کلا فرق داره با اون تاپیک.
دوست خوب من زماني که جوابي براي مورد انتخابي براي جستجو (که نتيجه رو با اين گزارش نشون مي ده) وجود نداره، پيغام زير رو مي ده :
Run-time error '2427': entered an expression no value
که با کليک دکمه Debug از کد زير ايراد مي گيره:
If Len(Me.test5) > 0 Or Len(Me.test6) > 0 Or Len(Me.test4) > 0 Then
arman2000
سه شنبه 23 فروردین 1390, 13:33 عصر
سلام
ممنون مي شم اهنمائي بفرمائيد.
dadsara
سه شنبه 23 فروردین 1390, 16:59 عصر
باسلام
در آخرین نومنه آپلود شده چنین پیامی ظاهر نمی شود
arman2000
چهارشنبه 24 فروردین 1390, 10:50 صبح
سلام دوست من
نمونه جديد رو در اين تاپيك ضميمه كردم
اگه در فرم search شهري رو براي جستجو انتخاب كنيد اين خطا مي ده
dadsara
چهارشنبه 24 فروردین 1390, 14:23 عصر
سلام
منع داده کومبو خود را به شکل زیر تغییر دهید
و تعداد ستونهای کومبو را در فرم به یک تغییر دهید و طول 0 را از آن حذف نمائید
SELECT Table.number, Table.address, Table.date, Table.test1, Table.test2, Table.test3, Table.test4, Table.test5, Table.test6
FROM [Table]
WHERE (((Table.address)=[Forms]![search].[Combo15]));
arman2000
چهارشنبه 24 فروردین 1390, 19:10 عصر
سلام
بزرگوار تغییراتی رو که گفتید انجام دادم ولی همچنان همون خطا رو می ده در ضمن اگر در نمونه جدیدی که ضمیمه کردم در فیلد تاریخ در فرم، یک تاریخی که در جدول وجود نداره مثل 1390/01/01 رو با یکی از شهرها برای جستجو وارد کنید هم همین خطا رو می ده
arman2000
شنبه 27 فروردین 1390, 09:37 صبح
سلام
ممنون مي شم راهنمائي بفرمائيد.
payman_xxp
یک شنبه 28 فروردین 1390, 09:58 صبح
سلام
ممنون مي شم راهنمائي بفرمائيد.
سلام
اول بگم اين تاپيك رو از روزي كه ايجاد كردي براش جواب نداشتم...:چشمک:
نميدونم واقعا دنبال چي هستي، چي ميخواهي بسازي....:متفکر:
يه نمونه جستجو براي دوستان درست كرده بودم كه بصورت تركيبي از 3تا كمبو باكس براي محدود كردن جستجو استفاده ميكنه، فكر كنم با توجه به نمونه آخري كه گذاشتي حتما كمكت ميكنه.
جستجو در محدوده زماني (http://barnamenevis.org/showthread.php?278665-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%AF%D8%B1-%D9%85%D8%AD%D8%AF%D9%88%D8%AF%D9%87-%D8%B2%D9%85%D8%A7%D9%86%DB%8C&p=1229806&viewfull=1#post1229806)
موفق باشيد.
arman2000
یک شنبه 28 فروردین 1390, 17:01 عصر
سلام دوست من. ممنونم از نمونه ای که پیشنهاد دادید :قلب::بوس:
بزرگوار چیزی که برام اهمیت داره دیده نشدن ردیف دوم زمانی که حتی یکی از اونها مقدار نداشته باشه هست. چون برای گزارش گیری خیلی شلوغ می شه. بخاطر اینکه در رکوردهای کمی این چند فیلد مقدار دارند و بشتر خالی اند و همین طور با دیدن این ردیف در نسخه چاپ شده، سریعتر متوجه رکوردهایی که ردیف دوم دارند می شیم.
کدی که این کار رو به خوبی انجام می ده پیشنهاد دوست خوبم amirzazadeh هست. ولی در قسمت جستجو، اون هم زمانی که هیچ نتیجه ای برای جستجو نباشه باعث پیغام می شه.
amirzazadeh
دوشنبه 29 فروردین 1390, 10:52 صبح
سلام
اين كد رو به نمونه شما اضافه كردم
Dim stDocName As String
If DCount("address", "table", "[address] ='" & Me!Combo15 & "'") > 0 Then
stDocName = "search"
DoCmd.OpenReport stDocName, acPreview, "search"
Else
MsgBox "No Record"
End If
ببينيد مشكل برطرف شده
arman2000
دوشنبه 29 فروردین 1390, 12:00 عصر
سلام دوست من. تشكر از پيشنهاد شما. عالي بود. :تشویق::تشویق::تشویق::تشویق:: شویق:
بزرگوار يه فيلد ديگه (date)، به فرم جستجو اضافه كردم و كد رو به شكل زير تغيير دادم:
If DCount("address", "table", "[address] ='" & Me!Combo15 & "'") > 0 And DCount("date", "table", "[date] ='" & Me!Text17 & "'") > 0 Then
ولي زماني كه شهر يزد و تاريخ 1389/8/20 رو جستجو مي كنم همون خطا رو مي ده ولي اگر همين تاريخ رو تبديل به 1389/8/21 كنيد خطا نمي ده. در واقع اگر هر تاريخي غير از اونهايي كه در جدول وجود داره رو وارد كنم مشكلي نيست ولي اگه تاريخ هايي كه در ركوردها دارم رو بزنم، اگه براي اون شهر بود كه نمايش مي ده وگرنه همون پيغام خطا از كد قبلي
amirzazadeh
دوشنبه 29 فروردین 1390, 12:58 عصر
سلام دوست من. تشكر از پيشنهاد شما. عالي بود. :تشویق::تشویق::تشویق::تشویق:: شویق:
بزرگوار يه فيلد ديگه (date)، به فرم جستجو اضافه كردم و كد رو به شكل زير تغيير دادم:
If DCount("address", "table", "[address] ='" & Me!Combo15 & "'") > 0 And DCount("date", "table", "[date] ='" & Me!Text17 & "'") > 0 Then
ولي زماني كه شهر يزد و تاريخ 1389/8/20 رو جستجو مي كنم همون خطا رو مي ده ولي اگر همين تاريخ رو تبديل به 1389/8/21 كنيد خطا نمي ده. در واقع اگر هر تاريخي غير از اونهايي كه در جدول وجود داره رو وارد كنم مشكلي نيست ولي اگه تاريخ هايي كه در ركوردها دارم رو بزنم، اگه براي اون شهر بود كه نمايش مي ده وگرنه همون پيغام خطا از كد قبلي
سلام
كد رو به اين صورت اصلاح كنيد.
If DCount("address", "table", "[address] ='" & Me!Combo15 & _
" 'And [date] ='" & Me!Text17 & "'") > 0 Then
arman2000
دوشنبه 29 فروردین 1390, 13:44 عصر
دوست عزيزم احسنت. احسنت. بسيار عالي بود. لذت بردم :چشمک:
:تشویق::تشویق::تشویق:
arman2000
شنبه 03 اردیبهشت 1390, 23:07 عصر
سلام دوست من
بزرگوار برای مواردی شبیه به زیر (در نمونه ضمیمه) این کد
If DCount("address", "table", "[address] ='" & Me!Combo15 & _
" 'And [date] ='" & Me!Text17 & "'") > 0 Then
چه تغییری باید داد؟
بین دو باکس، مثل "از تاریخ" "تا تاریخ" که کد در کوئری این فیلد (date):
Between [Forms]![search].[Text17] And [Forms]![search].[Text19]
همچنین دو باکس دیگه در همین فرم جستجو با شرط "یا" برای مقدار فیلد test1 هست:
Between [Forms]![search].[Text21] And [Forms]![search].[Text23]
فیلد name هم کد زیر رو داره:
Like "*" & [Forms]![search].[Text26] & "*"
arman2000
سه شنبه 06 اردیبهشت 1390, 13:26 عصر
سلام
ممنون مي شم راهنمائي بفرمائيد.
amirzazadeh
یک شنبه 11 اردیبهشت 1390, 10:15 صبح
سلام
لطفا نمونه را ببينيد:
Dim stDocName As String
If DCount("address", "table", "[address] ='" & Me!Combo15 & _
"'And [name] ='" & Me!Text26 & "'And [date] >='" & Me!Text17 & _
"'And [date] <='" & Me!Text19 & "'or [test1] >='" & Me!Text21 & _
"'And [test1] <='" & Me!Text23 & "'") > 0 Then
stDocName = "search"
DoCmd.OpenReport stDocName, acPreview, "search"
Else
MsgBox " Case Not Found"
End If
.........................
موفق باشيد
arman2000
دوشنبه 12 اردیبهشت 1390, 22:02 عصر
سلام دوست من خیلی ممنونم از راهنمائی عالی شما بزرگوار فیلد name در کوئری شرط زیر رو داره:
(Table.name) Like "*" & [Forms]![search].[Text26] & "*" چطور می شه این شرط رو در کد فرم سرچ گذاشت؟
If DCount("address", "table", "[address] ='" & Me!Combo15 & _ " 'And [name] ='" & Me!Text26 & "'And [date] >='" & Me!Text17 & _ "'And [date] <='" & Me!Text19 & "'or [test1] >='" & Me!Text21 & _ "'And [test1] <='" & Me!Text23 & "'") > 0 Then
dadsara
سه شنبه 13 اردیبهشت 1390, 08:38 صبح
سلام
اگر فیلد شما از نوع تکست می باشد بایستی مقدار like را بصورت زیر بنویسید
(Table.name) Like '*'+'" & [Forms]![search].[Text26] & "'+'*'
arman2000
سه شنبه 13 اردیبهشت 1390, 22:38 عصر
سلام عزیز
کد رو تغییر دادم برای این شرط: آدرس و نام و (تاریخ یا مقدارtest) که دو حالت داره: حالت 1- آدرس و نام و تاریخ که درست عمل می کنه. ولی در حالت 2- آدرس و نام و مقدارtest، اگه برای یک شهر، دو فیلد مقدارtest، پر باشند، تمام شهرها رو نشون می ده (اگه اول دو فیلد مقدار رو با عددی که حتی در رکوردها هست پر کنیم و بعد جستجو رو بزنیم جوابی نمی ده و اگه بعد یک شهر رو انتخاب کنیم، جستجو انجام می شه ولی نه در مورد همون شهری که انتخاب شده، همه شهرهایی رو که شامل اون دو مقدارtest وارد شده می شند نمایش می ده.)
If DCount("address", "table", "(([address] ='" & Me!Combo15 & _
" 'And [name] Like '*'+'" & Me!Text26 & "'+'*')And (([date] >='" & Me!Text17 & _
"'And [date] <='" & Me!Text19 & "')or ([test1] >='" & Me!Text21 & _
"'And [test1] <='" & Me!Text23 & "')))") > 0 Then
arman2000
شنبه 17 اردیبهشت 1390, 17:42 عصر
سلام دوست من
ممنون می شم راهنمائی بفرمائید.
arman2000
شنبه 24 اردیبهشت 1390, 13:12 عصر
سلام
منتظر راهنمائي شما هستم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.