PDA

View Full Version : نمایش روز های یک ماه خاص در یک grid



unforgiven
چهارشنبه 02 آذر 1390, 15:05 عصر
سلام دوستان
بر حسب مقتضیات برنامه ای که در حال نوشتنش هستم نیاز دارم تا کاربر با انتخاب یک ماه از سال کلیه روز های اون ماه رو به ترتیب و پشت سر هم در یک گرید ببیند . بطور مثال :
با انتخاب ماه آذر در یک ستون به صورت زیر تاریخ روزها نمایش داده شود:
سه شنبه 1390/09/01
چهارشنبه 1390/09/02
پنجشنبه 1390/09/03
تا
چهارشنبه 1390/09/30

نکته این کار این هست که فقط باید از توابع کد شمسی که ضمیمه این پست هست و در همین سایت هم وجود دارد استفاده بشه.
یا حداقل سورسی مشابه معرفی کنید

پیشاپیش از پاسخ های شما متشکرم

joker_pok
چهارشنبه 02 آذر 1390, 16:41 عصر
باید بتونی روز ها هر دفعه یکی اضافه کنی بهش تا یه روز بیشتر رو نشونت بده

unforgiven
چهارشنبه 02 آذر 1390, 19:10 عصر
برای شروع چگونه باید با استفاده از همین سورس تاریخ شمسی بتونم اولین روز هر ماه رو بدست بیارم ؟
لطفا راهکار ارایه بدید
ممنونم

joker_pok
چهارشنبه 02 آذر 1390, 23:36 عصر
به نظر من از ocx فایل تاریخ شمسی استفاده کنی راحت از این می تونی به جواب برسی

joker_pok
پنج شنبه 03 آذر 1390, 00:18 صبح
من اینطوری یک نمونه نوشتم ببین می تونی ازش استفاده کنی
Dim m, d, s, i, j
s = "2011"
m = "01"
d = "1"
List1.AddItem s & "/" & m & "/" & d
For i = 1 To 29
List1.AddItem s & "/" & m & "/" & d + i

unforgiven
پنج شنبه 03 آذر 1390, 16:03 عصر
آقای جوکر
ممنون از پاسختون ولی کد شما فقط به ترتیب تاریخ رو پشت سر هم سورت می کنه ولی من باید بدونم اولین روز هر ماه چه روزی هست تا به همین شکل روز های هفته را هم تو یک حلقه بزارم.
مثلا تو همین نمونه که گذاشتم سه شنبه روز اول ماه است در سال 90 و تو سال های دیگه جابجا میشه . بیشتر من نیاز دارم از طریق کد ایم مشکل رو برطرف کنم تا استفاده از کامپوننت .
دوستان اگر نمونه کدی در این باره دارند لطفا دریغ نکنند.
بازم متشکرم

unforgiven
پنج شنبه 03 آذر 1390, 18:04 عصر
این اساتیدی که در سایت خیلی از date picker ها رو ساختند می تونن راهنمایی کنن و بگن چطوری اولین روز هر ماه رو بدست میارن یا کدی مشابه اون رو بزارن و راهنمایی کنن

joker_pok
پنج شنبه 03 آذر 1390, 22:01 عصر
ببین این به دردت می خوره

Private Sub Form_Load()
DTPicker1.Value = DateAdd("d", -(Day(Date) - 1), Date)
DTPicker2.Value = DateAdd("d", (getNumberOfDays - 1), DTPicker1.Value)
End Sub

'Get the number of days each month is having
Public Function getNumberOfDays() As Integer
Select Case DateTime.Month(Date)
Case 1, 3, 5, 7, 8, 10, 12
getNumberOfDays = 31
Case 4, 6, 9, 11
getNumberOfDays = 30
Case 2
'logic for checking leap years
If (Year(Date) Mod 4) = 0 Then
If (Year(Date) Mod 100) = 0 Then
If (Year(Date) Mod 400) = 0 Then
getNumberOfDays = 29
Else
getNumberOfDays = 28
End If
Else
getNumberOfDays = 29
End If
Else
getNumberOfDays = 28
End If
End Select
End Function

M.T.P
پنج شنبه 03 آذر 1390, 23:05 عصر
روز ماه رو به تابع زیر ارسال کنید تا اسم اولین روز از ماه رو به شما برگردونه.

مثال:
تابع:



Function FirstDayOfMonth(ByVal PersianDay As Integer) As String
Dim IntWeekDay As Integer
Dim StrDate As Date
Dim StrResult As String
StrDate = DateTime.DateAdd("d", -(PersianDay - 1), Now)
IntWeekDay = Weekday(StrDate, vbSaturday)
StrResult = Choose(IntWeekDay, "شنبه", "يکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنج شنبه", "جمعه")
FirstDayOfMonth = StrResult
End Function

استفاده:
مثلا امروز که سوم آذر هست:


MsgBox FirstDayOfMonth(3), vbInformation

kitcat_m18
جمعه 04 آذر 1390, 21:34 عصر
سلام،
سال کبيسه رو کد شما تاثير نداره ؟؟؟ :متفکر:
پارامتر "d" در کد شما چه کاري انجام ميده؟؟؟

unforgiven
شنبه 05 آذر 1390, 18:16 عصر
جناب MTP
ببخشید یکم دیر جواب دادم
ممنون از پاسختون, همونی بود که لازم داشتم فقط یه سوال دیگه اینکه من چطور می تونم بر اساس کمبو باکسی که در اون ماه های سال درج شده, بتونم با انتخاب ماه مورد نظر, اولین روز اون ماه رو نشونم بده, چون کد شما الان بر اساس تاریخ جاری سیستم این کار رو انجام میده لطفا اگر می تونید کد مربوط به انتخاب ماه رو هم اضافه کنید .
باز هم متشکرم

M.T.P
یک شنبه 06 آذر 1390, 16:56 عصر
خب قاعدتا شما هر ماه از سال رو که انتخاب کنید تاریخ همون ماه رو یعنی مثلا 01/03/90 رو به میلادی تبدیل می کنید ، بعد از تبدیل ، طبق تاریخ میلادی حاصله روز هفته رو درارین

unforgiven
دوشنبه 07 آذر 1390, 15:44 عصر
ممنون از راهنماییتون