با سلام
من چون توی فرمهام از تاریخ هجری - شمسی استفاده می کنم و همچنین چون مقدار تاریخ از نوع number هست می خوام براش محدودیت قرار بدم یعنی قبل یا بعد از تاریخ مورد نظری رو وارد نکنم
لطفا راهنمایی کنید
با سلام
من چون توی فرمهام از تاریخ هجری - شمسی استفاده می کنم و همچنین چون مقدار تاریخ از نوع number هست می خوام براش محدودیت قرار بدم یعنی قبل یا بعد از تاریخ مورد نظری رو وارد نکنم
لطفا راهنمایی کنید
سلام
منظورتون از اینکه به صورت نامبر هست یعنی چی ؟
یعنی به این صورت ؟ 1389/03/04
یا اینکه می خواهید سال و ماه و عدد رو جدا کرده و هر کدوم رو جدا وارد جدول کنید ؟
اگر منظورتون قسمت اوله که می تونید به شکل زیر عمل کنید.
اول Input mask تکست باکس خودتون رو به صورت 0000/00/00 وارد کنید
بعد توی اکشن KeyPress تکست باکس عدد زیر رو وارد کنید تا بغیر چارترهای انتابی که اعداد 0 تا 9 هستند و یک ” / “ که تاریخ رو جدا می کنه کاربر چیز دیگه ای رو نتونه وارد کنه.
اگر هم می خواهید که بصورت دوم عمل کنید و سال/ماه/روز رو جدا کنید م یتونید بصورت زیر عمل کنید.
Private Sub txt_date_KeyPress(KeyAscii As Integer)
On Error Resume Next
Dim StrValid As String
StrValid = "0123456789/"
If KeyAscii > 26 Then
If InStr(StrValid, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
End Sub
اول تاریخ رو تقسیم کنید یا همون split ، و بعد اونا رو فراونی کنید.بصورت کد زیر
موفق باشید
'//txt_date="1389/03/04"
Dim MyDate(), MyYear, MyMon, MyDay As String
MyDate() = Split(txt_date.Value, "/") ' string tarikh
MyYear = MyDate(0) ' Sal
MyMon = MyDate(1) ' Mah
MyDay = MyDate(2) ' Rooz
/* ---------------------------
KhorooJi
MyDate(1389,03,04)
MyYear = 1389
MyMon = 03
MyDay = 04
--------------------------- */
ببخشید توضیحات کم بود خوب متوجه نشدید
من توی table فرمت یا data type تاریخ رو از نوع تکست استفاده کردم بدلیلی اینکه اگه بخوام از نوع date/time استفاده کنم بدلیل استفاده از تاریخ شمسی به مشکل می خورم چون بعضی از تاریخ ها رو نمی تونم وارد کنم
به همین دلیل من از تکست برای وارد کردن استفاده کردم
حالا می خوام یه شرط بزارم که مثلا تاریخ قبل از 1388/12/12 رو وارد نکن یعنی اگه کاربر خواست تاریخ 1388/12/11 رو وارد کنه پیغام خطا ظاهر بشه که باید تاریخبزگتر از این تاریخ باید باشد
مثل نمونه زیز
1388/12/12<
توی نمونه DATE/TIME مشکلی با این کد ندارم ولی توی تکست نمی دونم چکار کنم
ممنون میشم راهنمایی کنید
من یک پیشنهاد دیگه براتون دارم اگر می خواهید به اینصورت که خودتون گفتید کنترل کنید
بهتر است سه فیلد برای تاریخ در نظر بگیرید(سال-ماه-روز)
این طوری می تونید از عدد استفاده کنید به جای متن و کنترل آن هم راحت است
اگر بتونی از ماژول های تاریخ هجری شمسی استفاده کنی می تونی جنس فیلد را از نوع تاریخ و زمان بگیری و کار خیلی برات راحت تر میشه
شما می تونید از datediff استفاده کنید، ولی این زیاد جالب نیست برای تاریخ هجری شمسی.
می تونید توی یه فانکشن خودتون ماه های رو تعریف کنید چون ما تعدا روزهای متفاوت توی ماه هامون داریم کاربر به مشکل می خوره، برای حل مشکلتون شما می تونید چند تا کار انجام بدید.
datedif:
استفاده از دیت دیف درصورتی که زیاد براتون مهم نباشه که 100% صحیح کار کنه.!!!!
'ekhtelafe beyne do tarikh
'ekhtelafe beyne mahe tarikhe aval va tarikhe dovom
MsgBox DateDiff("yyyy", "1389/02/04", "1390/03/04")
MsgBox DateDiff("m", "1389/02/04", "1389/03/04")
MsgBox DateDiff("d", "1389/02/04", "1389/03/04")
راه دوم :
می تونید تابع بالا رو استفاده کنید ولی قبلش تاریخ شمسی رو میلادی کنید و اختلاف اونا رو در بیارید که این راه به نظرم راحت ترین روش براتون می تونه باشه چون اولی جالب نیست راه سوم هم یه کم سخته! یادتون باشه تو این راه هم ممکنه اون اختلافات پیش بیاد.
راه سوم:
توی ماژول ماهها رو تعریف و مقدار هر ماه رو بدید و اختلاف ماهها رو در بیارید.
موفق باشد.
با سلام ميتونيد در قسمت validaition rule فيلد تاريخ خود شرط بزاريد مثلا" بزرگتر از يك تاريخ خاص يا كوچكتر و يا حتي بين دو تاريخ مورد نظر.
نمی تونم چون تاریخ توی یه فیلد تعیین شده نمونه شمسی رو ندارم یعنی چطور توی TABLE که نمیشه ماژول شمسی رو تعریف کرد توی فرم رو نمی دونم
حقیقتا شاید این کارایی که گفتید بشه ولی من چون از برنامه نویسی خیلی سر در نمیارم اگه نمونه باشه بهتر متوجه میشم
با این راه نمیشه چون تست کردم جواب نداد
اینم نمونه خودم اگه خواستید رو این نمونه تست کنید
تا اینجا هم ممنون بابت جوابهاتون
با سلام همونطوري كه گفته بودم عمل كرد نمونه خودتو اصلاح كردم .