ورود

View Full Version : در مورد MaskEdBox یه سوال داشتم



سارامجیدی
یک شنبه 07 مهر 1387, 09:51 صبح
من MaskEdBox برنامه ام رو به ##:## ماسک کردم اما وقتی میخوام یه زمان رو از Table بخونم و داخلش قرار بدم Invalid peroperty value میده.کدم هم اینه:
MaskEdBox1.text=Adodc1.Recordset.Fields("en_time").Value
مشکلش چیه؟

f.nabavi
یک شنبه 07 مهر 1387, 11:03 صبح
فرمت MaskEdBox1 رو باید به صورت hh:mm قرار بدی:
Private Sub Form_Load()
maskedit.Format = "hh:mm"
End Sub
Private Sub Command1_Click()
maskedit.Text = "12:30" 'this code will set the time
End Sub

سارامجیدی
یک شنبه 07 مهر 1387, 12:19 عصر
F.nabavi ممنون
منم همین کارو کردم اما همون Error رو میده.انگار با TEXT. مشکل داره. کارم گیره کمکم کنید.

f.nabavi
یک شنبه 07 مهر 1387, 13:22 عصر
فرمت اطلاعاتی که داخل فیلد en_time ریختید، time هست یا text؟ اگر time هست به Text تبدیل کنید نتیجه رو بگید.

hamed aj
دوشنبه 08 مهر 1387, 00:45 صبح
سلام دوست عزیز

فکر می کنم اگه اینطوری بنویسی مشکل حل بشه



MaskEdBox1.text=CStr(Adodc1.Recordset.Fields("en_time") .Value)

سارامجیدی
دوشنبه 08 مهر 1387, 09:12 صبح
فیلد En_time از نوع nvarchar هست.که زمان رو به دقیقه نشون میده.یه تابع نوشتم که به ساعت و دقیقه تبدیلش میکنه و خروجیش string .نمیدونم چه جوری خروجی رو توی maskEdbox نشون بدم.

f.nabavi
دوشنبه 08 مهر 1387, 09:22 صبح
سلام. میتونی یک مقدار از برنامه و بانک رو آپلود کنی؟

سارامجیدی
دوشنبه 08 مهر 1387, 10:31 صبح
این تابعیه که عمل تبدیل رو انجام میده:

Function mtoh2(m1 As String) As String
Dim hour As Double
Dim min As Double
hour = Val(m1) / 60
min = Val(m1) Mod 60
mtoh2 = Str(hour) + ":" + Str(min)
mtoh2 = Mid(mtoh2, 2, 5)
End Function

اینم خط کدیه که ازش ارور میگیره


frm_fild_moshakhasat.MaskEdbox1.Text = mtoh2(Adodc1.Recordset.Fields("en_time"))

اشتباهم کجاست؟فیلد en_time هم که گفتم از نوع nvarchar هست.

f.nabavi
دوشنبه 08 مهر 1387, 11:30 صبح
اشتباه شما در کد نویسی تابع mtoh2 است. برای اینکه maskedbox1 بتونه یک مقدار را نمایش بده، باید عبارت رو به صورت hh:mm بهش بدی، مثلا "12:30". یعنی دو کاراکتر سمت راست : و دو کاراکتر سمت چپ. تابع شما به چنین شکلی مقدار رو بر نمیگردونه. من تابع رو تغییر دادم. اگر در مورد تغییرات سئوال داشتی بپرس

Private Sub Command1_Click()
MaskEdBox1.Text = mtoh2("500")
End Sub
Function mtoh2(m1 As String) As String
Dim hour As String
Dim min As String
hour = m1 \ 60
min = m1 Mod 60
If Len(hour) < 2 Then hour = "0" & hour
If Len(min) < 2 Then min = "0" & min
mtoh2 = hour + ":" + min
End Function

f.nabavi
دوشنبه 08 مهر 1387, 11:38 صبح
یه نکته دیگه اینکه عددی که به تابع میدی نباید اون قدر بزرگ باشه که مقدارش به ساعت 3 رقم بشه. در اون صورت باز error میده. اگر اعدادت بزرگن خاصیت mask رو به صورت ##:#### در بیار و خاصیت format رو خالی بذار. تابع دو هم تغییر بده که ساعت رو چهار رقمی بده.

سارامجیدی
دوشنبه 08 مهر 1387, 12:01 عصر
خیلی خیلی ممنون
جواب داد