الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

احتاج مساعدة ضرورية في الكود

بدأه تراتيل في 18 مارس 2012 · 6 رد · 997 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا طالبة برمجة مبئدة عندي مشروع ادكسل اقدمه

عندي كود احتاج فيه مساعدة جدا عاجلة

الكود عبارة عن دالة تقوم بحساب نسبة الخصم المئوية واظهارها في تكست

السؤال كالتالي

لذي 3 فئات تامين

الاولى5000ريال__الثانية3000ريال__الثالثة 1500ريال

واذا كان عدد الافراد من 50 الى 150 فاءن نسبة الخصم تكون 20%

واذا كان عدد الافراد من 150 الى 300 فاءن نسبة الخصم تكون30%

واذا كان عدد الافراد من 300 الى 500 فاءن نسبة الخصم تكون 40%

واذا كان عدد الافراد اكبر من 500فاءن نسبة الخصم تكون 50%

على المستخدم ان ان يختار فئة التامين اولا ثم يدخل عدد الافراد وعند الضغط على البوتن يتم استدعاء الدالة واظهار النتيجة في مربع النص

وهذ هو الكود

Public Function fun_sums(ByVal num1 As Double) As Double

Dim num2 As Double

If num1 = 50 Or num1 < 150 Then

num2 = (1 - 0.2) * 5000

ElseIf 150 > num1 > 300 Then

num2 = (1 - 0.3) * 5000

ElseIf 150 > num1 > 300 Then

num2 = (1 - 0.4) * 5000

ElseIf 150 > num1 > 300 Then

num2 = (1 - 0.5) * 5000

End If

Return num2

End Function

Public Function fun_sums2(ByVal num1 As Double) As Double

Dim num2 As Double

If 50 > num1 > 150 Then

num2 = (1 - 0.2) * 3000

ElseIf 150 > num1 > 300 Then

num2 = (1 - 0.3) * 3000

ElseIf 300 > num1 > 500 Then

num2 = (1 - 0.4) * 3000

ElseIf num1 > 500 Then

num2 = (1 - 0.5) * 3000

End If

Return num2

End Function

Public Function fun_sums3(ByVal num1 As Double) As Double

Dim num2 As Double

If 50 > num1 > 150 Then

num2 = (1 - 0.2) * 1500

ElseIf 150 > num1 > 300 Then

num2 = (1 - 0.3) * 1500

ElseIf 300 > num1 > 500 Then

num2 = (1 - 0.4) * 1500

ElseIf num1 > 500 Then

num2 = (1 - 0.5) * 1500

End If

Return num2

End Function

#2

وعليكم السلام ورحمة الله وبركاته ...

المعادلة المكتوبة تقوم بحساب المبلغ بعد حسم الخصم ، أما لحساب قيمة الخصم فبالإمكان طرح المعادلة المكتوبة من مبلغ التأمين الأصلي لإرجاع المبلغ المخصوم ،

بمعنى لو أن نوع التأمين 5000 ، ونسبة الخصم 50% فالمعادلة كالتالي :

50 ÷ 100 * نوع التأمين ، فيكون : 50 ÷ 100 * 5000 = 2500

ولو أن نوع التأمين 5000 ، ونسبة الخصم 20% فالمعادلة كالتالي :

20 ÷ 100 * 5000 = 1000 ....

في المرفقات مثال كامل حول المطلوب ...

insurance.rar

1

... إذا كنت تعتقد أن مشاركتي مفيده ، الرجاء قم بتقييمي ...

%2525D8%2525A8%2525D8%2525B5%2525D9%252585%2525D8%2525A9%252B%2525D8%2525B9%2525D9%252584%2525D9%252585%252B%2525D9%252588%2525D8%2525B5%2525D8%2525B1%2525D8%2525AE%2525D8%2525A9%252B%2525D8%2525A7%25

#3
عاشق للبرمجة كتب:

وعليكم السلام ورحمة الله وبركاته ...

المعادلة المكتوبة تقوم بحساب المبلغ بعد حسم الخصم ، أما لحساب قيمة الخصم فبالإمكان طرح المعادلة المكتوبة من مبلغ التأمين الأصلي لإرجاع المبلغ المخصوم ،

بمعنى لو أن نوع التأمين 5000 ، ونسبة الخصم 50% فالمعادلة كالتالي :

50 ÷ 100 * نوع التأمين ، فيكون : 50 ÷ 100 * 5000 = 2500

ولو أن نوع التأمين 5000 ، ونسبة الخصم 20% فالمعادلة كالتالي :

20 ÷ 100 * 5000 = 1000 ....

في المرفقات مثال كامل حول المطلوب ...

جزاك الله خيرا اخي الفاضل لكن البرنامج عندي لا يعمل ارجو كتابة الكود functionوحساب نسبة الخصم كنسبة مئوية وكتابة الدالة هنا حتى اقوم بنسخها وشكرا

#4
تراتيل كتب:

جزاك الله خيرا اخي الفاضل لكن البرنامج عندي لا يعمل ارجو كتابة الكود functionوحساب نسبة الخصم كنسبة مئوية وكتابة الدالة هنا حتى اقوم بنسخها وشكرا

نسخت الكود على شاشتي ولم يعمل ارجو كتابتها بحساب النسبة المئوية

#5

تفضلي الفنكشن :

Public Function Insur(ByVal InsurType As Double , ByVal cus As Integer) As Double

        Dim totalAfter As Double
        If cus = 50 And cus <= 150 Then
            totalAfter = (20 / 100 * InsurType)
        ElseIf cus >= 151 And cus <= 300 Then
            totalAfter = (30 / 100 * InsurType)
        ElseIf cus >= 301 And cus <= 500 Then
            totalAfter = (40 / 100 * InsurType)
        ElseIf cus > 500 Then
            totalAfter = (50 / 100 * InsurType)
        Else
            totalAfter = 0
        End If
        Return totalAfter

InsurType : نوع التأمين .

cus : عدد العملاء .

ولعرضه في TextBox :

textbox1.text = Insur(InType,CustomersNum.Text)
1

... إذا كنت تعتقد أن مشاركتي مفيده ، الرجاء قم بتقييمي ...

%2525D8%2525A8%2525D8%2525B5%2525D9%252585%2525D8%2525A9%252B%2525D8%2525B9%2525D9%252584%2525D9%252585%252B%2525D9%252588%2525D8%2525B5%2525D8%2525B1%2525D8%2525AE%2525D8%2525A9%252B%2525D8%2525A7%25

#6

جزاك الله خيرا اخي عاشق البرمجة وانار دربك ويسر لك الخير حيث كان

المشكلة ما تشتغل عندي الدالة

الان ساكتب الموديول والصفحة اللي انادي على الدالة منها وارجو تصيحي الاخطاء في نفس شاشة الكود وجزاك الله خير

شاشة الموديول

Public Function fun_sums(ByVal num1 As Double) As Double

Dim num2 As Double

Try

If Not num1 = 50 And num1 <= 150 Then

num2 = (20 \ 100 * 5000)

ElseIf num1 >= 151 And num1 <= 300 Then

num2 = (30 \ 100 * 5000)

ElseIf num1 >= 301 And num1 <= 500 Then

num2 = (40 \ 100 * 5000)

ElseIf num1 > 500 Then

num2 = (50 \ 100 * 5000)

Else

MsgBox("ادخل عدد الافراد")

End If

Return num2

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Function

Public Function fun_sums2(ByVal num1 As Double) As Double

Dim num2 As Double

Try

If num1 = 50 And num1 <= 150 Then

num2 = (20 \ 100 * 3000)

ElseIf num1 >= 151 And num1 <= 300 Then

num2 = (30 \ 100 * 3000)

ElseIf num1 >= 301 And num1 <= 500 Then

num2 = (40 \ 100 * 3000)

ElseIf num1 > 500 Then

num2 = (50 \ 100 * 3000)

Else

MsgBox("ادخل عدد الافراد")

End If

Return num2

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Function

Public Function fun_sums3(ByVal num1 As Double) As Double

Dim num2 As Double

Try

If num1 = 50 And num1 <= 150 Then

num2 = (20 \ 100 * 5000)

ElseIf num1 >= 151 And num1 <= 300 Then

num2 = (30 \ 100 * 5000)

ElseIf num1 >= 301 And num1 <= 500 Then

num2 = (40 \ 100 * 5000)

ElseIf num1 > 500 Then

num2 = (50 \ 100 * 5000)

Else

MsgBox("ادخل عدد الافراد")

End If

Return num2

Catch ex As Exception

End Try

End Function

وهذي الشاشة اللي انادي على الدالة منها

Me.txtnumbers.Text = inType

If Me.rbtn11.Checked = True Then

Me.txtdiscount.Text = fun_sums(inType)

ElseIf Me.rbtn111.Checked = True Then

Me.txtdiscount.Text = fun_sums2(inType)

ElseIf Me.rbtn1111.Checked = True Then

Me.txtdiscount.Text = fun_sums3(inType)

Else

MsgBox("ادخل عدد الافراد")

End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

تم تعديل هذه المشاركة بواسطة تراتيل في 19 مارس 2012 في 22:18

#7

جزاك الله بالمثل أختي ..

بالنسبة للكود الذي وضعتيه ، فلا داعي لكتابة أكثر من فنكشن ، فنكشن واحد بمعاملين يكفي ...

الملف الذي أرفقته يعمل على VS 2010 ربما إصدارة الفيجوال لديك أقل ، لذلك سأشرح لك كيفية التصميم :

1- أنشئي فورم بهذا الشكل (( اسم الكونترولز المستخدمة بالكود بجانب كل كونترول )) :

1332193563431.jpg

2- أنشئي الفنكشن التالي :

Public Function Insur(ByVal InsurType As Double, ByVal cus As Integer) As Double

        Dim totalAfter As Double
        If cus = 50 And cus <= 150 Then
            totalAfter = (20 / 100 * InsurType)
        ElseIf cus >= 151 And cus <= 300 Then
            totalAfter = (30 / 100 * InsurType)
        ElseIf cus >= 301 And cus <= 500 Then
            totalAfter = (40 / 100 * InsurType)
        ElseIf cus > 500 Then
            totalAfter = (50 / 100 * InsurType)
        Else
            totalAfter = 0
        End If

        Return totalAfter

    End Function

3- أنشئي الدالة التالية :

Private Sub insurTypeCalc()
        If RdBtn1500.Checked = True Then
            inType = 1500
        ElseIf RdBtn3000.Checked = True Then
            inType = 3000
        Else
            inType = 5000
        End If
    End Sub

4- ضع الكود التالي في حدث Click للزر :

Private Sub BtnCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalc.Click
        If Trim(TxtCustNum.Text) = "" Then
            MsgBox("أدخل عدد الأفراد", vbCritical, "خطأ")
            Exit Sub
        End If
        TxtDiscount.Text = Insur(inType, TxtCustNum.Text)
        TxtTotal1.Text = Val(inType - TxtDiscount.Text)
        TxtTotal2.Text = Val(TxtCustNum.Text * TxtTotal1.Text)

    End Sub

5- ضعي الكود التالي في حدث CheckedChanged لكافة أزار الاختيار Radio Buttons :

  insurTypeCalc()

6- عرفي متغير عام كالتالي :

Public inType As Double

فيكون الكود بالكامل كالتالي :

Public Class Form1
    Public inType As Double

    Public Function Insur(ByVal InsurType As Double, ByVal cus As Integer) As Double
        Dim totalAfter As Double
        If cus = 50 And cus <= 150 Then
            totalAfter = (20 / 100 * InsurType)
        ElseIf cus >= 151 And cus <= 300 Then
            totalAfter = (30 / 100 * InsurType)
        ElseIf cus >= 301 And cus <= 500 Then
            totalAfter = (40 / 100 * InsurType)
        ElseIf cus > 500 Then
            totalAfter = (50 / 100 * InsurType)
        Else
            totalAfter = 0
        End If

        Return totalAfter

    End Function

    Private Sub BtnCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalc.Click
        If Trim(TxtCustNum.Text) = "" Then
            MsgBox("أدخل عدد الأفراد", vbCritical, "خطأ")
            Exit Sub
        End If
        TxtDiscount.Text = Insur(inType, TxtCustNum.Text)
        TxtTotal1.Text = Val(inType - TxtDiscount.Text)
        TxtTotal2.Text = Val(TxtCustNum.Text * TxtTotal1.Text)

    End Sub

    Private Sub insurTypeCalc()
        If RdBtn1500.Checked = True Then
            inType = 1500
        ElseIf RdBtn3000.Checked = True Then
            inType = 3000
        Else
            inType = 5000
        End If
    End Sub

    Private Sub RdBtn1500_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RdBtn1500.CheckedChanged
        insurTypeCalc()
    End Sub

    Private Sub RdBtn3000_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RdBtn3000.CheckedChanged
        insurTypeCalc()
    End Sub

    Private Sub RdBtn5000_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RdBtn5000.CheckedChanged
        insurTypeCalc()
    End Sub

End Class

أتمنى أن يعمل لديك ويكون هذا المطلوب ...

تم تعديل هذه المشاركة بواسطة عاشق للبرمجة في 20 مارس 2012 في 00:52

... إذا كنت تعتقد أن مشاركتي مفيده ، الرجاء قم بتقييمي ...

%2525D8%2525A8%2525D8%2525B5%2525D9%252585%2525D8%2525A9%252B%2525D8%2525B9%2525D9%252584%2525D9%252585%252B%2525D9%252588%2525D8%2525B5%2525D8%2525B1%2525D8%2525AE%2525D8%2525A9%252B%2525D8%2525A7%25

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…