PDA

View Full Version : سوال: كانترگيري از فيلدهاي يك ركورد



Profesorjd
سه شنبه 28 آبان 1387, 22:00 عصر
با سلام
در يك يا چند جدول ( كه ممكن است با ارتباطات به هم متصل شوند و نتيجه يك فرم يا گزارش شود ) از تعداد بعضي از فيلدهاي يك ركورد ( نوع نامبر يا Yes/no )‌ كانتر گرفت ؟
جدولي دارم كه در آن تعدادي فيلد Yes/No دارد نتيجه در گزارش براي هر ركورد رديف به رديف چاپ ميشود . ميخواهم در انتهاي هر رديف كه يك ركورد ميشود چنانچه بعضي از فيلدها تيك خورده بود شمارش شود و چنانچه بعضي ديگر تيك نخورده بود شمارش و نوشته شود .

karmand
چهارشنبه 29 آبان 1387, 08:28 صبح
در فیلدهای yes/noدر واقع 1و-1قرار دارد در یک کواری در ستون مجازی انها را با هم جمع کن و اگر توجه کنی اعداد دلخواه شما را میدهد با منفی که در ستون مجازی دیگر انها را abs کن

saeedyaz
چهارشنبه 29 آبان 1387, 08:58 صبح
از تابع dcont استفاده کن چون هم ساده است وهم سریع

A_Gh772
چهارشنبه 29 آبان 1387, 12:55 عصر
با سلام
یه سوال دیگه اما با همین مفهموم
من تو بانکم یه تعداد رکورد با نام های تکراری اما مقادیر مختلف دارم
حالا سوالم اینجاست که چه جوری می تونم موقع گزارش گیری یکی از نام ها را نشان دهد اما مجموع مقادیر را نشان دهد.

Profesorjd
پنج شنبه 30 آبان 1387, 21:35 عصر
با سلام و تشكر
1- فيلدهاي Yes/no ظاهرا 0 و -1 هستند و طبيعتاً جمع آنها مشكل است . من براي اين نوع فيلد با استفاده از تابع IIF تبديل به 1 و 0 كردم و در آخر جمع . اما ميخواستم راه ساده تر و كمتري باشد ( چون مثلاً اگر 10 فيلد باشد 10 با از IIF‌ استفاده ميشود ) ضمن آنكه براي مابقي فيلدها چه روشي وجود دارد ؟
2- از تابع Dcount نتيجه نگرفتم ( عليرغم كمك از Help ) دوست گرامي ميشود چگونگي استفاده از آنرا بفرماييد .
3- سئوال مطرح شده در #4 گنگ است تعدادي ركورد با نام تكراري و مقادير مختلف يعني چه ؟ بهتر است واضح تر بيان فرماييد .

مهدی قربانی
جمعه 01 آذر 1387, 01:05 صبح
سلام
در مورد Dcount اينجا (http://barnamenevis.org/forum/showthread.php?t=45267) رو ببينيد

Profesorjd
جمعه 01 آذر 1387, 15:25 عصر
با سلام
جناب قرباني تابع Dcount‌ ركوردهاي يك فيلد در جدول را ميشمارد (‌با توجه به مراجعه به آدرس بيان شده ) در صورتيكه من ميخواهم فيلدهاي يك ركورد را به شمارم . در مثال من فيلدها عددي و Yes/No‌ هستند . بنابراين نميخواهم جمع بزنم . در نمونه كارم تعداد 10 فيلد است كه يا تيك خورده يا نخورده و ميبايد در هر رديف گزارش مشخص شود چندتاي آن تيك خورده و چند تا تيك نخورده . با استفاده از تابع IIF‌ و نوشتن 10 بار آن به نتيجه رسيدم : ... و +( IIF Field=true;1;0) . راه ساده تري نيست ؟!

مهدی قربانی
شنبه 02 آذر 1387, 23:56 عصر
سلام
با كد نويسي مي تونيد اينكار رو انجام بديد بنظرم حلقه و ركوردست مي تونه يه راه حل ديگه باشه ببينيد مناسب كار شما هست ؟

Profesorjd
یک شنبه 03 آذر 1387, 01:18 صبح
سلام و تشكر
1- براي استفاده در گزارش چگونه عمل ميشود ؟

karmand
یک شنبه 03 آذر 1387, 08:08 صبح
ظاهرا ایشان جمع افقی میخواهند نه جمع عمودی dcount جمع عمودی میزند نه جمع افقی !!!!
یک رکورد در نظر بگیرید با 20 فیلد yes/no
بعضی تیک خورده بعضی خیر
چندتا تیک خورده
چندتا تیک نخورده
پاسخی که نوشتم جواب است

مهدی قربانی
یک شنبه 03 آذر 1387, 21:30 عصر
سلام
در رخداد On Open گزارش اين كدها رو اضافه كنيد عمليات انجام ميشه :


Private Sub Report_Open(Cancel As Integer)
Dim i
Dim X
Dim Rst As DAO.Recordset
Dim FldVal

Set Rst = CurrentDb.OpenRecordset("table3")
Rst.MoveFirst

For X = 1 To Rst.RecordCount
FldVal = 0
For i = 1 To 10

If Rst.Fields(i).Value = True Then
FldVal = FldVal + 1
End If

Next i

Rst.Edit
Rst.Fields("FldCount").Value = FldVal
Rst.Update
Rst.MoveNext

Next X

End Sub

Profesorjd
یک شنبه 03 آذر 1387, 23:56 عصر
ظاهرا ایشان جمع افقی میخواهند نه جمع عمودی dcount جمع عمودی میزند نه جمع افقی !!!!
یک رکورد در نظر بگیرید با 20 فیلد yes/no
بعضی تیک خورده بعضی خیر
چندتا تیک خورده
چندتا تیک نخورده
پاسخی که نوشتم جواب است
سلام . سئوال اين است جوابش چه ميشود ؟