منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيف اجعل طريقة ادخال التاريخ صحيحه ومحددة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

كيف اجعل طريقة ادخال التاريخ بشكل صحيحه ومحدده
مثلاً :
عند ادخال تاريخ 30/30/1800
يتم عمل رفض للقيمة حيث ان عدد الشهور 12 شهر ولا يمكن قبول الرقم "30"
كذلك تاريخ السنه "1800" قديمة بالتالي لا يتم قبولها ..

اضافة الى تحديد maxdate و mindate لادخال التواريخ ..

علما اني استخدم MaskedTextBox لادخال التاريخ
اتمنى ان تكون وضحت مشكلتي لديكم

تحياتي لكم
MaskedTextBox

DateTimePicker
PHP كود :
DateTimePicker1.Format DateTimePickerFormat.Custom
DateTimePicker1
.CustomFormat "yyyy/MM/dd"
DateTimePicker1.MinDate = New Date(199011)
DateTimePicker1.MaxDate = New Date(20501231

PHP كود :
Private Sub Button1_Click(ByVal sender As ObjectByVal e As EventArgsHandles Button1.Click
    MsgBox
(DateTimePicker1.Text)
End Sub 
اعمل Clamp للمدخلات
حتي تتفادي الأخطاء
أي يجب أن تتأكد أن المدخلات تقع بين رقمين أنت تحددهم
بالنسبة للشهور فهي يجب أن تكون بين 1 و 12
وبالنسبة للأيام فهي يجب أن تقع بين 1 و 31
أما بالنسبة للسنه فهي يجب أن تكون بين mindate year و maxdate year

يمكنك استخدام الدالة التالية

PHP كود :
   Friend Function Clamp(value As Integermax As Integermin As Integer) As Integer
        Return 
(If(value maxmax, (If(value minminvalue))))
 
   End Function 

كود يوضح استخدام الدالة وهنا قمت بتمرير التاريخ يقيمة اكبر من عد الشهور المعتاد
وهنا الدالة ستعد بالرقم 12


PHP كود :
       Dim month As Integer 13
        Dim monthResult 
As Integer Clamp(month121
(10-11-17, 03:13 PM)a.ahmed كتب : [ -> ]MaskedTextBox

DateTimePicker
PHP كود :
DateTimePicker1.Format DateTimePickerFormat.Custom
DateTimePicker1
.CustomFormat "yyyy/MM/dd"
DateTimePicker1.MinDate = New Date(199011)
DateTimePicker1.MaxDate = New Date(20501231

PHP كود :
Private Sub Button1_Click(ByVal sender As ObjectByVal e As EventArgsHandles Button1.Click
    MsgBox
(DateTimePicker1.Text)
End Sub 

مشكور عالرد اخ احمد ..
اداة جميلة ولكن هل استطيع ان اجعل الاداة فارغه عند التحميل الفورم
وهل استطيع ان اجعل ادخال التاريخ اجباري في هذه الاداة

وشكرا لك عالمجهود ..

(10-11-17, 03:15 PM)silverlight كتب : [ -> ]اعمل Clamp للمدخلات
حتي تتفادي الأخطاء
أي يجب أن تتأكد أن  المدخلات تقع بين رقمين أنت تحددهم
بالنسبة للشهور فهي يجب أن تكون بين 1 و 12
وبالنسبة للأيام فهي يجب أن تقع بين 1 و 31
أما بالنسبة للسنه فهي يجب أن تكون بين mindate year و maxdate year

يمكنك استخدام الدالة التالية

PHP كود :
   Friend Function Clamp(value As Integermax As Integermin As Integer) As Integer
        Return 
(If(value maxmax, (If(value minminvalue))))
 
   End Function 

كود يوضح استخدام الدالة وهنا قمت بتمرير التاريخ يقيمة اكبر من عد الشهور المعتاد
وهنا الدالة ستعد بالرقم 12


PHP كود :
       Dim month As Integer 13
        Dim monthResult 
As Integer Clamp(month121

مشكور اخي عالرد
حاولت اطبق الطريقة ولم تنجح معي ..
اسمح لي أن أوضح لك شئ

البرمجة نوع من المنطق او Logic بمعني إنه عليك أن تتوقع أخطاء في إدخال البيانات من مستخدم البرنامج
ويجب أن تفكر بطريقة بسيطة
وهي أن لغة التخاطب الوحيدة بين المبرمج و المستخدم هي أدوات إدخال البيانات
يعني أنت هنا تتحدث الي شخص لا تعرف ماذا سيفعل بالبرنامج الخاص بك و كل العلاقة بينكم تنحصر في أدوات إدخال المعلومات
وأدوات إدخال البيانات في حالتك هنا تتم عن طريق تكست بوكس
وهنا يجب عليك كمبرمج أن تتأكد أن المعلومات التي أدخلها المستخدم تمت بالصورة التي تريدها ثم بناء علي ذلك تقوم باستخدامها داخل البرنامج
مثلا يجب أن تجبر المستخدم علي إدخال أرقام في التكست بوكس
عموما الهدف من الكود الذي كتبته لك هو اسلوب لتتحقق من أن عملية ادخال اليوم أو الشهر أو السنة تتم بشكل صحيح

,و لكي يكون الأمر أكثر سهولة لك قمت بإعادة صياعة للدالة كالتالي

PHP كود :
   Friend Function IsValidInput(value As Integermax As Integermin As Integer) As Integer
        Return 
(value = (If(value maxmax, (If(value minminvalue)))))
 
   End Function 
اضافة الى ما قدمه الاخوه  مشكورين 
   
انظر التالي قد يفيدك 
PHP كود :
Public Function IsDate(ByVal Expression As Object) As Boolean 
المصدر  


https://msdn.microsoft.com/en-us/library...s.90).aspx
مشكورين اخواني ما قصرتو استخدمت اداة datetimepicker
واتبعت طريقة الاخ a.ahmed
كذلك وضعت هذا الكود لجعل القيمة الافتراضية فراغ :


كود :
DateTimePicker1.Format = DateTimePickerFormat.Custom
        DateTimePicker5.CustomFormat = " "
DateTimePicker1.Value = Date.FromOADate(1 / 1 / 1950)
       DateTimePicker1.MinDate = New Date(1950, 1, 1)
       DateTimePicker1.MaxDate = New Date(2050, 12, 31)


وعند حدث KeyPress وضعت هذا الكود :
كود :
DateTimePicker1.CustomFormat = "yyyy/MM/dd"

تحياتي لكم جميعاً