تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
خطأ في الـ iF ..
#1
السلام عليكم ..
اشتغل حاليا على مشروع يحتوي على ثلاث text مختلفة في كل واحد فيها قيمة مختلفة
وهناك text أخير سيظهر فيها ناتج جمع القيم المختلفة من هذه التكسات ..
إذا ادخل المستخدم المعلومات في الثلاث جميعها يظهر الناتج ولكن عندما يستخدم اثنتان او واحدة فلا تضبط ..
ولا تظهر القيم الثلاثة إلا عندما يختار المستخدم الـ checkbox الخاص بكل تكست ..
أتمنى الفكرة تكون واضحة ؟

هنا الكود ..

PHP كود :
Dim Pay1 As Double CDbl(txtPay1.Text)
        
Dim Pay2 As Double CDbl(txtPay2t.Text)
        
Dim Pay3 As Double CDbl(txtPay3.Text)
        If 
CheckPay1.Checked False Then
                  txtTotalPay
.Text = (Pay2 Pay3 ))
        ElseIf 
CheckPay2.Checked False Then
                   txtTotalPay
.Text = (Pay1 Pay3 ))
        ElseIf 
CheckPay3.Checked False Then
                    txtTotalPay
.Text = (Pay1 Pay2 ))
Else
txtTotalPay.Text = (Pay1 Pay2 Pay3))

        
End If 

تظهر لي هذه الرسالة كخطأ ..

Conversion from string "" to type 'Double' is not valid.

أتمنى مساعدتكم ؟

Huh
الرد }}}}
تم الشكر بواسطة:
#2
هل الفكرة آلة حاسبة؟
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة:
#3
لا ليست آلة ..
المشروع يحتوي على عناصر أخرى وكل pay لها طريقة حساب مختلفة ولكن هناك button سيحسب لي مجموع الثلاث pay
إذا الثلاث استخدمت ( أعني إذا ظهرت في التكست المخصصة لكل واحد فيها قيمة ) فيجمعها بدون مشاكل لكن لو كانت هناك اثنان او واحد فيظهر لي خطأ ..
الرد }}}}
تم الشكر بواسطة: سعود
#4
السلام عليكم ..
اتصور انَّ المشكلة تكمن في انَّ النص الفارغ لا يمكن ان يتحول الى Double
استخدمي Val بدلا من CDbl
فيكون الكود :
كود :
Dim Pay1 As Double = val(txtPay1.Text)
Dim Pay2 As Double = val(txtPay2t.Text)
Dim Pay3 As Double = val(txtPay3.Text)
        If CheckPay1.Checked = False Then
                  txtTotalPay.Text = (Pay2 + Pay3 )
        ElseIf CheckPay2.Checked = False Then
                   txtTotalPay.Text = (Pay1 + Pay3 )
        ElseIf CheckPay3.Checked = False Then
                    txtTotalPay.Text = (Pay1 + Pay2 )
Else
txtTotalPay.Text = (Pay1 + Pay2 + Pay3)

        End If
الرد }}}}
تم الشكر بواسطة: سعود
#5
فعلا الحمدلله ضبطت ..
الله يعطيك العافية ..
لكن سؤال أخير .. ممكن شرح مبسط لـ Val ما وظيفتها بالتحديد وكيف حلت المشكلة؟
مازلت مبتدأة في البرمجة Smile
الرد }}}}
تم الشكر بواسطة:
#6
وعليكم السلام

خطأ في TextBox لان فضي ما عرف يحولة الى Double

الحل
انك تحط قيمة TextBox
0
ورح يضبط معك انشاء اللة
الرد }}}}
تم الشكر بواسطة:
#7
ممم حقيقةً لا اعرف ما الفرق الحقيقي بين Val و CDbl Big Grin .. لكن ما اعرفه انَّ Val تعطي قيمة النص .. و تعطي قيمة 0 اذا لم يحتوِ النص ايَّ قيمة او كان فيه حروف لا قيمة لا .. بينما CDbl تعطي القيمة و لكن اذا لم يكن النص فيه ارقام او فارغ او يحتوي حروف لا قيمة لها فانها تعطي خطأ ..
مثلا النص "23" قيمته 23 سواءً في cdbl او val
بينما النص " sds" قيمته 0 في val , و يعطي خطأً في cdbl !
لذلك افضل دائمًا استخدام val ..
تحياتي ..
الرد }}}}
تم الشكر بواسطة: MONA1990


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم