PDA

View Full Version : ثبت تاریخ در تکست باکس



نسرین2000
سه شنبه 26 فروردین 1393, 08:14 صبح
سلام
من توی برنامه ام یک تکس باکس دارم که در آن تاریخ ورود ثبت می شه و بعد توسط تابع ShamsiToMiladi این تاریخ به تاریخ میلادی تبدیل میشه و در دیتابیس ذخیره میشه .
به همین دلیل کاربر باید تاریخ رو به صورت کامل وارد کنه مثلا 1393/01/05 و اگه به صورت 1393/1/5 واردکنه خطا می ده .
خوب همه کاربران هم که با این موضوع آشنایی ندارند ، برای جلوگیری از این خطا و درواقع برای اینکه کاربر بتونه تاریخ رو به صورت 1393/1/5 وارد کنه باید چه کار کنم چون این به یک مشکل تبدیل شده برام
تابع ShamsiToMiladi هم به صورت زیر است :
Function ShamsiToMiladi(ByVal ShamsiDate As String) As String
If IsNumeric(ShamsiDate.Replace("/", "")) = False Then Return 0
Try
If ShamsiDate.Length <> 10 Then Return 0
Dim Date_Sh As New Globalization.PersianCalendar()
Dim Date_M As DateTime = Date_Sh.ToDateTime(ShamsiDate.Substring(0, 4), ShamsiDate.Substring(5, 2), ShamsiDate.Substring(8, 2), 0, 0, 0, 0, Globalization.PersianCalendar.PersianEra)
Return Date_M.ToShortDateString
Catch ex As Exception
Return 0
End Try
End Function

Mani_rf
سه شنبه 26 فروردین 1393, 09:24 صبح
یا از MaskEdit استفاده کن یا این که وقعی که داری تاریخ رو میگیری فرمت رو چک کن اگر مغایرت داشت پیغام خطا بده به کاربر

نسرین2000
سه شنبه 26 فروردین 1393, 10:22 صبح
آقای مدیر مرسی از پاسختون ، با اون کامپوننت مشکلم حل شد ( کامپوننت HmFarsiCalander)
حالا یه سوال دیگه دارم من کدی نوشتم که اگر کاربر تاریخی رو انتخاب نکرد پیغام بده کد زیر رو می نویسم ولی عمل نمی کنه .
Try
Do While HM_Fcdate_kh.Text = " "
If MessageBox.Show(" لطفا تاریخ خروج را وارد کنید") = Windows.Forms.DialogResult.OK Then
HM_Fcdate_kh.Focus()
GoTo line1

End If

Loop
به جای hm_fcdate_kh.text="" چه چیزی باید بنویسم ؟

karem2074
سه شنبه 26 فروردین 1393, 14:35 عصر
خوب با یک دستور شرطی خیلی ساده اجراش کن.مثل این:

If tarekh_ch.Text = "" Then
MessageBox.Show(" لطفا تاریخ خروج را وارد کنید")
Else
()tarekh_ch.Focus
GoTo line1
End If

نسرین2000
چهارشنبه 27 فروردین 1393, 09:42 صبح
خوب من هم همین شرط رو می نویسم و بهش می گم اگر HM_Farsi_Calander.text = " " بود پیغام بده منتها در این تکس باکس که مربوط به تقویم هست اگر چیزی وارد نکنیم این عبارت ثبت می شود ــ/ــ/ــــ خوب من هم شرطم را به صورت زیر تغییر دادم ولی باز هم پیغام مسیج باکس نمایش داده نمی شود ؟
Try
Do While HM_Fcdate_kh.Text = "ــ/ــ/ــــ
"
If MessageBox.Show(" لطفا تاریخ خروج را وارد کنید") = Windows.Forms.DialogResult.OK Then
HM_Fcdate_kh.Focus()
GoTo line1

End If

Loop

sehm67
چهارشنبه 27 فروردین 1393, 12:32 عصر
من توی برنامه ام یک تکس باکس دارم که در آن تاریخ ورود ثبت می شه و بعد توسط تابع ShamsiToMiladi این تاریخ به تاریخ میلادی تبدیل میشه و در دیتابیس ذخیره میشه .
به همین دلیل کاربر باید تاریخ رو به صورت کامل وارد کنه مثلا 1393/01/05 و اگه به صورت 1393/1/5 واردکنه خطا می ده .
خوب همه کاربران هم که با این موضوع آشنایی ندارند ، برای جلوگیری از این خطا و درواقع برای اینکه کاربر بتونه تاریخ رو به صورت 1393/1/5 وارد کنه باید چه کار کنم چون این به یک مشکل تبدیل شده برام ...

سلام

به این کامپوننت یه نگاهی بندازید ببینید کارتون راه میوفته.

از قسمت Mask Date ، Toolbox ، به پروژتون اضافه کنید

موفق باشید.

118041

behrooz69
چهارشنبه 27 فروردین 1393, 18:26 عصر
سلام . این کمپاننت HmfarsiCalender چون از ماسکت تکس باکس استفاده میکنه و مقادیر ثابت داره مثل " / " شما نمیتونی با مقدار خالی "" یا String.Empty اون رو مقایسه کنی و اررور بگیری واسه همین باید از راه زیر استفاده کنی :

If HM_FarsiCalendar1.Text.Length > 1 Then MsgBox("tarikh ro por konin")
HM_FarsiCalendar1.Focus()


End If

اینجوری اگه چیزی وارد نکنه به کاربر اررور میده و روش فوکوس میکنه.


یه روش دیگه هم هست : اینه که اگه تاریخ توی برنامت ثابته مثلا برنامه هایی مثل مدیریت هتل یا رستوران که تاریخ اون ها به روزه میتونی مقدار کامپاننت HmfarsiCalender رو ثابت کنی با این کد :

HM_FarsiCalendar1.Text = HM_FarsiCalendar.FarsiDate.FarsiToday.FarsiDate.To String

مقداری که کد بالا بهت میده اینه :

1393/01/27

و یا کد زیر برای چاپ تو کریستال :

LblTarikh.Text = HM_FarsiCalendar.FarsiDate.FarsiToday.FullNameDate

مقداری که کد بالا بهت میده اینه :

چهار شنبه 27 فروردين 1393


کد اول رو توی فرم لود صفحت کپی کن . مقدار HmFarsiCalender به صورت پیش فرض تاریخ شمسی امروز میشه . همون 1393/01/27

اینجوری اگه کاربر هم دست نزنه تاریخ امروز ثبت میشه.

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


یا حق

نسرین2000
شنبه 30 فروردین 1393, 08:59 صبح
البته به جای HM_FarsiCalendar1.Text.Length > 1 باید بنویسیم HM_FarsiCalendar1.Text.Length =50