PDA

View Full Version : تابع dcount



reza2371
دوشنبه 11 آبان 1394, 13:51 عصر
سلام خدمت اساتید محترم
نحوه نوشتن شرط مثل(بزرگترین ، کوچکترین ، between ) در تابع dcount به چه صورت است؟

amirzazadeh
دوشنبه 11 آبان 1394, 15:50 عصر
تابع Dcount تعداد ركوردهاي متناظر با شرط مورد نظر شما رو در جدول يا كوئري نشون ميده . براي بزرگترين مقدار از تابع Dmax و براي كوچكترين مقدار از تابع Dmin ميتونيد استفاده كنيد:
مثال براي Dcount:

Public Function OrdersCount(ByVal strCountry As String, _
ByVal dteShipDate As Date) As Integer

OrdersCount = DCount("[ShippedDate]", "Orders", _
"[ShipCountry] = '" & strCountry & _
"' AND [ShippedDate] > #" & dteShipDate & "#")
End Function

reza2371
دوشنبه 11 آبان 1394, 15:59 عصر
تابع Dcount تعداد ركوردهاي متناظر با شرط مورد نظر شما رو در جدول يا كوئري نشون ميده . براي بزرگترين مقدار از تابع Dmax و براي كوچكترين مقدار از تابع Dmin ميتونيد استفاده كنيد:
مثال براي Dcount:

Public Function OrdersCount(ByVal strCountry As String, _
ByVal dteShipDate As Date) As Integer

OrdersCount = DCount("[ShippedDate]", "Orders", _
"[ShipCountry] = '" & strCountry & _
"' AND [ShippedDate] > #" & dteShipDate & "#")
End Function


ممنون از توجهتون
اگه بخوام شرطی در تابع dcount قرار بدم که بصورت تاریخ (فاصله دو تاریخ _ از تاریخ تا تاریخ) باشه دستور به چه صورت نوشته میشه؟

amirzazadeh
دوشنبه 11 آبان 1394, 17:18 عصر
بعد از سطر اول اين كد رو استفاده كنيد:

"[ShippedDate] Between #" & dteFirstDate & "# And #" & dteLastDate & "#"

ehsanshahi
دوشنبه 11 آبان 1394, 17:32 عصر
با سلام ...دوستان کم لطفی نکنین فشردن دکمه تشکر حداقل کاریه که میتونیم در قبال زحمت این اساتید انجام دهیم ...
البته با عرض پوزش از اینکه مطلب مربوط نیست ...
یا علی ...

reza2371
دوشنبه 11 آبان 1394, 17:35 عصر
بعد از سطر اول اين كد رو استفاده كنيد:

"[ShippedDate] Between #" & dteFirstDate & "# And #" & dteLastDate & "#"


تشکر ویژه
به این صورتی که من نوشتم صحیحه؟



text55 = dcount ("filde1" , "table1" ,_

"filde1 = between #" &[forms]![form1]![text0] & "# And #" &[forms]![form1]![text2] & "#)

و اگه جز این شرط یه شرط دیگه اضافه کنم به این صورت صحیحه؟



text55 = dcount ("filde1" , "table1" , _

"filde1 = between #" & [forms]![form1]![text0] & "# And #" & [forms]![form1]![text2] & "# _
and filde2 = [forms]![form1]![text3]")

reza2371
دوشنبه 11 آبان 1394, 17:52 عصر
توجه داشته باشید که کد به زبان ویژوال بیسیک باشد

amirzazadeh
دوشنبه 11 آبان 1394, 20:15 عصر
اگر ممكن هست نمونه خودتون اپلود كنيد.در ضمن كدها VBA (وي بي اكسس) هستند كه با VB نقاط اشتراك فراواني دارد.

reza2371
دوشنبه 11 آبان 1394, 20:55 عصر
اگر ممكن هست نمونه خودتون اپلود كنيد.در ضمن كدها VBA (وي بي اكسس) هستند كه با VB نقاط اشتراك فراواني دارد.


ممنون از توجهتون
توی این فایل گزارشی به نام amar هست که کد داخلش نوشته شده و به فرم amar متصل هست

136434

amirzazadeh
سه شنبه 12 آبان 1394, 10:34 صبح
سلام
فايلتون رو اصلاح كردم.با اين توضيح كه در جدول اصلي توع فايل تاريخ از حالت تكست به نامبر تغيير داده شد.

reza2371
سه شنبه 12 آبان 1394, 11:18 صبح
ممنون از کمکی که بهم کردید
امکانش هست که فایل تاریخ به حالت تکست برگرده؟

amirzazadeh
سه شنبه 12 آبان 1394, 11:30 صبح
تاريخ اصولا ساختار عددي داره با تكست به مشكل برخواهيد خورد.

reza2371
سه شنبه 12 آبان 1394, 12:20 عصر
به دلیل اینکه فرمت تاریخ از نوع نامبر است به مشکل برخوردم
لطفا کمکم کنید
در نمونه زیر در فرم table1 هنگام ذخیره اطلاعات ارور میده (بخاطر فرمت نامبر هست)
توجه: در تکس تاریخ ، تاریخ به صورت پیش فرض قرار دادم که میخوام به همین صورت باشه
136449

amirzazadeh
سه شنبه 12 آبان 1394, 12:59 عصر
سلام
تاريخ به حالت قبلي برگشت كد رو به اين شكل اصلاح كنيد:

Me.Text0 = DCount("tarikh", "table1", _
"tarikh >= '" & CLng([Forms]![amar]![Text0]) & _
"' And tarikh <= '" & CLng([Forms]![amar]![Text2]) & "'")

reza2371
سه شنبه 12 آبان 1394, 22:53 عصر
بابت اینکه وقت گذاشتید برام ممنونم
تشــــــــــــــــــکر ویـــــــــــــــژه

شرمنده دو سوال دیگه
1-در راستای همین شمارش تاریخ هایی که از طریق DefaultValue (پیش فرض ) ثبت می شوند در محاسبات به حساب نمی آیندو محاسبه نشده ولی تاریخ هایی که با دست وارد می شوند محاسبه می شود. علت چیست؟
البته بصورت دقیق تر که بنگریم میبینیم که اگر بازه زمانی بین دو تاریخ بیشتر باشه دقت بالاتر هست و تمام تاریخ هایی که در آن بازه هست ( چه تاریخ هایی که بصورت پیش فرض هست و چه تاریخ هایی که به صورت دستی وارد شده) را نشان میدهد(محاسبه می کند) و برعکس هرچه بازه کمتر باشد دقت کمتر شده و تاریخ هایی که بصورت پیش فرض ثبت شده اند را نشان نمیدهد(محاسبه نمی کند).

136468

2- نحوه ذخیره اطلاعات در تیبل با فرمت نامبر و اتچمنت از طریق دستور به چه صورت است؟
برای فایل هایی که با فرمت تکس هستند به صورت زیر هست


rst.Fields("nam") = Me.nam.Value
rst.Fields("nam_kh") = Me.nam_kh.Value

amirzazadeh
چهارشنبه 13 آبان 1394, 07:03 صبح
سلام
همونطور كه خودتون هم متوجه شديد در هنگام ورود داده ها به صورت دستي تاريخ به صورت عدد و بدون" / " ذخيره ميشه (به اين شكل 13940813)ولي در صورت ذخيره از طريق فرم به اين شكل 1394/08/13 ذخيره كه در آمار شما شناسايي نميشه.(مشكل تاريخ رشته اي كه قبلا گفتم بهتره تاريخ رو عددي انتخاب كنيد).به هر حال براي رفع مشكل در وضعيت فعلي شما بايد در هنگام ذخيره فيلد تاريخ از توابع left،mid وright بهره بگيريد.به اين شكل

Dim db As Database
Dim rst As Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("table1")
rst.AddNew

rst.Fields("nam") = Me.nam.Value
rst.Fields("tarikh") = Left(Me.tarikh, 4) & Mid(Me.tarikh, 6, 2) & Right(Me.tarikh, 2)
rst.Fields("shomareh") = Me.shomareh.Value

rst.Update
rst.Close
MsgBox "ثبت شد", vbInformation, ""