PDA

View Full Version : چك كردن صحت تاريخ



maryamb
چهارشنبه 15 آبان 1387, 15:27 عصر
سلام
يه تابع مي خوام كه صحت تاريخ ورودي رو چك كنه.
اگه كسي داره ممنون مي شم:خجالت:

y.saied
چهارشنبه 15 آبان 1387, 15:47 عصر
من هم ميخوام ............... ممنون

فاطمه وطن دوست
چهارشنبه 15 آبان 1387, 16:49 عصر
سلام

یه راهنمائی ، ( نه پست اضافی ) :بامزه:
تو بخش ابزارهای اکتیوایکس یه نمونه کامل قرار داده شده ، جستجو کنید. ( dll شمسی)

Pr0grammer
چهارشنبه 15 آبان 1387, 17:05 عصر
با تابع IsDate می تونید تشخیص بدید؛ به این شکل :

If IsDate(Text1) Then
MsgBox "Yes"
End If

y.saied
چهارشنبه 15 آبان 1387, 19:43 عصر
با تابع IsDate می تونید تشخیص بدید؛ به این شکل :

If IsDate(Text1) Then
MsgBox "Yes"
End If

ممنون دوست عزيز
ولي منظور ما تاريخ شمسيه

Pr0grammer
چهارشنبه 15 آبان 1387, 19:54 عصر
ممنون دوست عزيز
ولي منظور ما تاريخ شمسيه

خب عزیزم، اگه اینو تست کنی می بینی که تاریخ شمسی رو هم جواب میده! :چشمک:

موفق باشی

maryamb
پنج شنبه 16 آبان 1387, 10:30 صبح
نه اين تابع تو روز 28 و 29 ارديبهشت جواب نمي ده و تاريخ رو قبول نمي كنه.

sh2007
پنج شنبه 16 آبان 1387, 11:29 صبح
من يه تابع نوشتم فقط داده ورودي رو كنترل مي كنه كه صحيح مي باشد يا نه مي خواي بذارم
:لبخندساده::لبخندساده:

maryamb
پنج شنبه 16 آبان 1387, 11:43 صبح
.اگه ممكنه بذاريد شايد مشكل حل بشه

y.saied
پنج شنبه 16 آبان 1387, 12:30 عصر
من يه تابع نوشتم فقط داده ورودي رو كنترل مي كنه كه صحيح مي باشد يا نه مي خواي بذارم
:لبخندساده::لبخندساده:


ممنون ميشم ............ بي زحمت

Mbt925
پنج شنبه 16 آبان 1387, 13:25 عصر
از این کنترل استفاده کنید:


http://barnamenevis.org/forum/showpost.php?p=587013&postcount=282

y.saied
پنج شنبه 16 آبان 1387, 13:44 عصر
از این کنترل استفاده کنید:


http://barnamenevis.org/forum/showpost.php?p=587013&postcount=282

ممنون ... ميخوام تابع باشه نه كنترل

VB.SOS
پنج شنبه 16 آبان 1387, 16:55 عصر
من فكر كنم اين تابع رو از اول بايد نوشت. اگه بخوايم كامل باشه بايد فرمت هاي مختلف تاريخ رو اول به فرمت كوتاه تبديل كنيم. اون وقت ميشه به راحتي معتبر بودنش رو چك كرد. نوشتنش كمي وقت مي خواد

y.saied
جمعه 17 آبان 1387, 00:26 صبح
حالا كسي نميتونه كمك كنه

hamed aj
جمعه 17 آبان 1387, 00:32 صبح
با سلام

این تاریخ ورودی شما بصورت رشته هست؟
یعنی فقط می خواهید روز و ماه و سال رو اعتبار سنجی کنید؟

Pr0grammer
جمعه 17 آبان 1387, 01:27 صبح
دوستان آب در کوزه و ما تشنه لبان می گردیم... :قهقهه:

بابا، Mbt925 عزیز هر ابزاری که دلمون بخواد رو نوشته به خدا! :گیج: اصلاً هیچی کم نذاشته!:لبخند:

اینجا رو نگاه کنید :
http://barnamenevis.org/forum/showpost.php?p=587013&postcount=282

خودشم توضیح داده :

IsValidDate: یک تاریخ دریافت می کند و درستی آن را بررسی می کند.من خودم تست کردم، در ضمن حتی اگه ورودیتون هم رشته باشه می تونید اول به تاریخ عددی تبدیل کنید بعد چک کنید که درسته یا نه!

موفق باشید (در ضمن دست Mbt925 درد نکنه :قلب:)

y.saied
جمعه 17 آبان 1387, 12:20 عصر
دوستان آب در کوزه و ما تشنه لبان می گردیم... :قهقهه:

بابا، Mbt925 عزیز هر ابزاری که دلمون بخواد رو نوشته به خدا! :گیج: اصلاً هیچی کم نذاشته!:لبخند:

اینجا رو نگاه کنید :
http://barnamenevis.org/forum/showpost.php?p=587013&postcount=282

خودشم توضیح داده :
من خودم تست کردم، در ضمن حتی اگه ورودیتون هم رشته باشه می تونید اول به تاریخ عددی تبدیل کنید بعد چک کنید که درسته یا نه!

موفق باشید (در ضمن دست Mbt925 درد نکنه :قلب:)

دوست عزيز من كنترل نميخوام . فقط تابع باشه

Pr0grammer
جمعه 17 آبان 1387, 12:49 عصر
دوست عزيز من كنترل نميخوام . فقط تابع باشه

این ocx نیست! dll هستش....
چرا خودت یه Function نمی نویسی؟! :متفکر: به خدا من وقت ندارم؛ دارم یه برنامه دبیرخونه می نویسم، وگرنه حتماً کمکتون می کردم، به هر حال تا جایی که تونستم راهنمایی کردم، این dll خیلی عالی بود!

موفق باشید :قلب:

AMIBCT
جمعه 17 آبان 1387, 13:18 عصر
چرا یه جستجو نمی‌کنید؟
دقیق‌ترین و سریع‌ترین تبدیل تاریخ شمسی برای VB - متن‌باز و آزاد

http://barnamenevis.org/forum/showthread.php?t=119962

Pr0grammer
جمعه 17 آبان 1387, 13:28 عصر
چرا یه جستجو نمی‌کنید؟
دقیق‌ترین و سریع‌ترین تبدیل تاریخ شمسی برای VB - متن‌باز و آزاد


دوست عزیز از عنوان این تاپیک که معلومه! عزیزان دنبال مبدل تاریخ شمسی و میلادی نیستند! می خوان صحت تاریخی که کاربر در برنامه وارد می کنه (شمسی) رو چک کنن!

y.saied
جمعه 17 آبان 1387, 16:53 عصر
ممنون ... دوست عزيز من dll هم نميخوام
ميخوام فقط يك تابع باشه
در واقع نميخوام از فايل و يا dll اضافي تو برنامه ام استفاده كنم

Mbt925
جمعه 17 آبان 1387, 17:07 عصر
چرا فقط دنبال کد آماده هستید؟

این تابع خیلی سادست.

- ابتدا محدوده هر ماه رو چک می کنید.

برای ماه آخر سال، باید کبیسه بودن رو چک کنید.

فرمول سال های کبیسه:




Public Function leap_persian(ByVal lngYear As Long) As Boolean

Dim lngTemp As Long

lngTemp = lngYear - IIf(lngYear > 0&, 474&, 473&)
lngTemp = lngTemp Mod 2820&
lngTemp = ((lngTemp + 512&) * 682&) Mod 2816&

If lngTemp < 682& Then _
leap_persian = True
End Function

AMIBCT
جمعه 17 آبان 1387, 22:29 عصر
دوست عزیز از عنوان این تاپیک که معلومه! عزیزان دنبال مبدل تاریخ شمسی و میلادی نیستند! می خوان صحت تاریخی که کاربر در برنامه وارد می کنه (شمسی) رو چک کنن!

دوست عزیز اگه یه زحمت می‌کشیدید و فایل ۲۰ کیلوبایتی رو دریافت می‌کردید متوجه می‌شدید که علاوه بر تبدیل تاریخ چندین تابع کاربردی دیگه هم داخل بسته نوشتم

اگه به تصویر هم نگاه می‌کردید متوجه می‌شدید که توابع دیگری هم در بسته وجود داره

و نکته‌ی آخر اینکه شما با دیدن عنوان متوجه شدید که داخل تاپیک چی هست ولی من که خودم تاپیک رو ایجاد کردم نمی‌دونم چی بوده !!!:چشمک:

معمولا توی ایران فرهنگ کارکردن گروهی و برنامه نویسی متن باز جا نیفتاده
این سورس هم چیزی نیست که جای دیگه بتونید پیداش کنید
و کسی دیگه اون رو به این شکل انتشار بده

برای بهینه سازی این کد بسیار حرفه‌ای کار شده
و برای تبدیل دقیقش هم از ابزارهایی استفاده شده که بدون داشتن تجربه‌ی بالا کسی نمی‌تونه ازشون استفاده کنه

sh2007
شنبه 18 آبان 1387, 12:31 عصر
با سلام

من براي كنترل تاريخ ورودي (فقط تاريخ ورودي ) از اين كد استفاده مي كنم كه البته مي شه تغييراتي داد و خلاصه تر هم شد استفاده مي كنم خيلي هم راحت هست هر جا هم مشكل داشتي بگو توضيح بدم

Public Function Check_Date(txtDate As String) As Boolean
Dim FarsiNum As Variant
FarsiNum = Empty
If Mid(txtDate, 1, 4) < 1380 Then Exit Function
If Mid$(txtDate, 1, 4) <> Var_Year Then Exit Function
If Mid(txtDate, 6, 2) > 12 Then Exit Function
FarsiNum = Mid(txtDate, 6, 2)
If FarsiNum = 1 Then
If Mid(txtDate, 9, 2) > 31 Then Exit Function
End If
If FarsiNum = 2 Then
If Mid(txtDate, 9, 2) > 31 Then Exit Function
End If
If FarsiNum = 3 Then
If Mid(txtDate, 9, 2) > 31 Then Exit Function
End If
If FarsiNum = 4 Then
If Mid(txtDate, 9, 2) > 31 Then Exit Function
End If
If FarsiNum = 5 Then
If Mid(txtDate, 9, 2) > 31 Then Exit Function
End If
If FarsiNum = 6 Then
If Mid(txtDate, 9, 2) > 31 Then Exit Function
End If
If FarsiNum = 7 Then
If Mid(txtDate, 9, 2) > 30 Then Exit Function
End If
If FarsiNum = 8 Then
If Mid(txtDate, 9, 2) > 30 Then Exit Function
End If
If FarsiNum = 9 Then
If Mid(txtDate, 9, 2) > 30 Then Exit Function
End If
If FarsiNum = 10 Then
If Mid(txtDate, 9, 2) > 30 Then Exit Function
End If
If FarsiNum = 11 Then
If Mid(txtDate, 9, 2) > 30 Then Exit Function
End If
If FarsiNum = 12 Then
If Mid(txtDate, 9, 2) > 30 Then Exit Function
End If
Check_Date = True
End Function

sh2007
شنبه 18 آبان 1387, 12:37 عصر
با عرض معذرت تايپيك چون بزرگ بود مجبور شدم دو تا ايجاد كنم

متغير FarsiNum ماه مي باشد
در اين كد اگه خواستي محدوده تاريخ رو از يه زماني مشخص كني اين كد كمك مي كنه
If Mid(txtDate, 1, 4) < 1380 Then Exit Function

اين متغير هم تاريخ جاري سيستم رو بررسي مي كنه مثلا اگه تاريخ سيستم 1387 مي باشد (سال) تاريخ ورودي را بايد 1387 وارد شده باشد مي تواني اونو غير فعال كني
If Mid$(txtDate, 1, 4) <> Var_Year Then Exit Function

خيلي راحت و ابتدائيه اگه باز در مورد ايت تابع مشكل داشتي بگو توضيح بدم
ضمنا تمام اينا توي يه كلاسه كه ضميمه پست قبلي هست مي اتوني اونو بگيري

maryamb
سه شنبه 21 آبان 1387, 09:27 صبح
ممنون . ولي چطوري حالا بايد ازش استفاده كنيم در برنامه ؟؟؟
مي شه يه مثال هم بزني؟
مثلا وقتي كاربر يه تاريخ رو اشتباه وارد كرد اخطار بده
مرسي منتظرم

AMIBCT
چهارشنبه 22 آبان 1387, 17:04 عصر
شما مثل اینکه فقط هدفتون پست زدنه

در صفحه‌ی قبل شما رو راهنمایی کردم
یک صفحه‌ی دیگه باز مطلب نوشته شد...

یه بار دیگه می‌گم:
فایل زیر رو دریافت کنید:
دریافت فایل 20 کیلوبایتی (http://amibct.googlepages.com/PersianDate_AMIB.rar)

تابع زیر رو با پارامتر رشته‌ای تاریخ فراخوانی کنید:

IsDateValid

اگه مقدار بازگشتی True باشه، تاریخ معتبر هست

برای تبدیل تاریخ به شکل استاندارد (سال چهار رقمی، ماه و روز) از تابع MakeStdDate استفاده کنید

روش کاربرد هر دو تابع هم در مثال وجود داره

y.saied
پنج شنبه 23 آبان 1387, 10:17 صبح
[quote=AMIBCT;631727]شما مثل اینکه فقط هدفتون پست زدنه


ممنون
دوست عزيز چرا عصباني ميشي
خب بلد نيستيم كه مي پرسيم .....

sh2007
پنج شنبه 23 آبان 1387, 10:50 صبح
ممنون . ولي چطوري حالا بايد ازش استفاده كنيم در برنامه ؟؟؟
مي شه يه مثال هم بزني؟
مثلا وقتي كاربر يه تاريخ رو اشتباه وارد كرد اخطار بده
مرسي منتظرم

سلام
شما باید کلاس رو به پروژه اضافه کنی
یه ماژول هم دیگه بعد توی ماژول این خط کد بنویس
Global Check_Date As New ClsDate

حالا توی برنامه یه ماسک ادیت اضاف کن و یه کمند باتن توی اون هم این کد رو بنویس
If Check_Date.Check_Date(txtDate.Text) = False Then
MsgBox "Date Error Change!", vbCritical, Title
txtDate.SetFocus
Exit Sub
End If