PDA

View Full Version : مشکل در کد if



Nazir Ahmad
پنج شنبه 22 اسفند 1392, 14:02 عصر
سلام خدمت اساتید گرامی
من یه کد نوشتم به شرح زیر. اما نمیدونم چرا هرکاری میکنم شرط دومی اعمال نمیشه و شرط اول و سوم مشکلی نداره.If HazerNo.Value = "hazer" Then
val_IsToNxtYear_flt.Value = 0
ElseIf HazerNo.Value = "Qayeb" Then
val_IsToNxtYear_flt.Value = -1
ElseIf HazerNo.Value = "All" Then
val_IsToNxtYear_flt.Value = ""
End If

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

یا حق

alirezabahrami
پنج شنبه 22 اسفند 1392, 15:56 عصر
سلام خدمت اساتید گرامی
من یه کد نوشتم به شرح زیر. اما نمیدونم چرا هرکاری میکنم شرط دومی اعمال نمیشه و شرط اول و سوم مشکلی نداره.If HazerNo.Value = "hazer" Then
val_IsToNxtYear_flt.Value = 0
ElseIf HazerNo.Value = "Qayeb" Then
val_IsToNxtYear_flt.Value = -1
ElseIf HazerNo.Value = "All" Then
val_IsToNxtYear_flt.Value = ""
End If

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

یا حق
سلام
ببین سایز فیلد فوق در جدول چند قرار داده اید ! برای عدد 1- سایز فیلد باید 2 باشد.
یا علی

Nazir Ahmad
شنبه 24 اسفند 1392, 08:40 صبح
سلام
ببین سایز فیلد فوق در جدول چند قرار داده اید ! برای عدد 1- سایز فیلد باید 2 باشد.
یا علی

ممنون جناب بهرامی گرامی
اما فیلدی که من میخوام این شروط داخلش اعمال بشه بصورت unbound‌ هست و به جای شرط دوم هرچی که قرار میدم انجام نمیشه.
اینم نمونه IF.rar (http://www.uplooder.net/cgi-bin/dl.cgi?key=4205a7c610b15c8c4d61c49d46cb1459)
ممنون
یا حق

alirezabahrami
شنبه 24 اسفند 1392, 20:33 عصر
ممنون جناب بهرامی گرامی
اما فیلدی که من میخوام این شروط داخلش اعمال بشه بصورت unbound‌ هست و به جای شرط دوم هرچی که قرار میدم انجام نمیشه.
اینم نمونه IF.rar (http://www.uplooder.net/cgi-bin/dl.cgi?key=4205a7c610b15c8c4d61c49d46cb1459)
ممنون
یا حق
سلام
با استفاده از ListIndex بجای آیتم های فارسی کمبو باکس شرط به درستی برقرار میشود .


If HazerNo.ListIndex = 0 Then
val_IsToNxtYear_flt.Value = True
ElseIf HazerNo.ListIndex = 1 Then
val_IsToNxtYear_flt.Value = False
ElseIf HazerNo.ListIndex = 2 Then
val_IsToNxtYear_flt.Value = ""
End If



یا علی

Nazir Ahmad
یک شنبه 25 اسفند 1392, 09:05 صبح
ممنون جناب بهرامی عزیز
اما باز هم نشد. فقط گزینه اول کمبوباکس با شرط اول کار میکنه و بقیه کار نمیکنه.
وقتی گزینه اول کمبو باکس رو انتخاب میکنیم شرط رو اعمال میکنه و وقتی گزینه‌های دیگه رو انتخاب میکنیم باز هم شرط اولی سر جاشه و تغییری نمیکنه
نمونه
IF_2.rar (http://www.uplooder.net/cgi-bin/dl.cgi?key=e758f079e072e33bf7d2104cd957d636)

ممنون
یا حق

Nazir Ahmad
دوشنبه 26 اسفند 1392, 12:52 عصر
در یک فرم دیگه‌ هم تقریبا همین مشکل رو دارم ! در کد زیر شرط اولی اجرا نمیشه و در هر دو صورت شرط دومی رو اجرا میکنه
If T1 = t2 Then
MsgBox "ãæÝÞ"
DoCmd.GoToControl "stu_ID"
ElseIf T1 <> t2 Then
MsgBox "ÂíÏí " & "'" & [T1] & "'" & " ÏÑ ÏíÊÇÈíÓ ãæÌæÏ äãíÈÇÔÏ", , "ãÏíÑ ÏíÊÇÈíÓ"
End If


و در صورتیکه شرط کد رو به شکل زیر تغییر بدم شرط اول اجرا میشه و شرط دوم اجرا نمیشه.
If T1 <> t2 Then
MsgBox "ãæÝÞ"
DoCmd.GoToControl "stu_ID"
ElseIf T1 =t2 Then
MsgBox "ÂíÏí " & "'" & [T1] & "'" & " ÏÑ ÏíÊÇÈíÓ ãæÌæÏ äãíÈÇÔÏ", , "ãÏíÑ ÏíÊÇÈíÓ"
End If

البته شرط رو به صورت T1.Value = t2.Value هم تغییر دادم اما نشد.
حالا نمیدونم مشکل از کجاست، به نظر شما مشکل از آفیس نیست؟ ... نمیدونم ....
lممنون میشم کمک کنید.

luckyboy77
سه شنبه 27 اسفند 1392, 11:31 صبح
سلام دوست گرامی
فایل اصلاح شده (http://www.4shared.com/rar/J9GR_7M6ce/IF_2.html)
امیدوارم مشکلتون حل بشه

Nazir Ahmad
چهارشنبه 28 اسفند 1392, 09:51 صبح
سلام دوست گرامی
فایل اصلاح شده (http://www.4shared.com/rar/J9GR_7M6ce/IF_2.html)
امیدوارم مشکلتون حل بشه

ممنون دوست عزیز
در مورد اون قسمت مشکل حل شد. اما در مورد پست شماره 6 هنوز مشکل پابرجاست و تنها یک شرط اعمال میشه .
نمونه هم گذاشتم IF_not_work.rar (http://www.uplooder.net/cgi-bin/dl.cgi?key=a3e49f86394d1922f164305a76c4e38d)

ممنون
یاحق

luckyboy77
چهارشنبه 28 اسفند 1392, 11:42 صبح
سلام دوست گرامی
شما فقط نیاز به Cast Typing داشتید. مشکل حل شد
پیوست (http://www.4shared.com/rar/icOWJdLZba/IF_not_work.html)

Nazir Ahmad
چهارشنبه 28 اسفند 1392, 11:51 صبح
:تشویق:ممنون
لطف کردی وقت گذاشتی عزیز
میشه لطفا در مورد Cast Typing توضیح بدی

ممنون
یا حق

luckyboy77
چهارشنبه 28 اسفند 1392, 20:51 عصر
دوست گرامی سلام
اول پوزش میخوام چون به خاطر عجله اشتباه نوشتم. به صورت صحیح Type Casting باید می نوشتم.
در حقیقت Type Casting تبدیل انواع داده ها به یکدیگر می باشد که این مورد به دو صورت ضمنی و صریح انجام می گیرد. در بعضی از کامپایلرها تبدیل نوع داده ها به صورت ضمنی امکان پذیر است مانند VB ولی همیشگی نیست (مانند خطای کد شما) و در بعضی دیگر مانند خانواده ی C تبدیل نوع داده باید با صراحت صورت گیرد و برای آن در زبان های مختلف برنامه نویسی توابعی در نظر گرفته شده. در VBA هم توابع تبدیل انواع داده با حرف C شروع می شوند.

در کد شما با Trace کردن تابع مشخص بود که T1.Value از نوع کاراکتر می باشد و T2.Value که در حقیقت همان STU-ID بود از نوع Long اگر چه به ظاهر هر دو حاوی یک مقدار بودند ولی در حقیقت "12" و 12 متفاوت است اولی رشته و دومی عدد است و به همین خاطر شرط دستور IF هیچگاه TRUE نمیشد.

امیدوارم به صورت روشن توضیح داده باشم

سال نو بر شما و همه ی اعضای محترم تالار مبارک باد.