تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] ماسبب الخطأ في الكود التالي ؟
#1
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

لدي متغير عام على طول البرنامج اسمه
My_No_Digits
يحمل هذا المتغير احد القيم الثلاث
اما 0 بمعنى انه لا توجد ارقام عشرية بعد الفاصلة اي الرقم مظهره 125,315
او 2 بمعنى انه يوجد رقمان عشريان بعد الفاصلة اي الرقم مظهره 345,000.45
او 3 بمعنى انه يوجد ثلاث ارقام عشرية بعد الفاصلة اي الرقم مظهرة 185,000.425

انا اريد ان انسق الرقم الموجود بالتكست بوكس، وفق قيمة المتغير My_No_Digits

قمت بانشاء وحدة نمطية Module

وانشأت فيها function
ارسل من خلاله قيمة التكست بوكس، ويعمل الفانكش على فحص الحالة المناسبة ومن ثم يرجع القيمة المرسلة له منسقة حسب حالة المتغير my_No_Digits
كود :
Module My_function

    Public Function format_my_Number(ByVal st As String) As String
        Dim val As Double
        If Trim(st) = "" Then st = 0
        val = st

        Select Case My_No_Digits
            Case 0
                format_my_Number = val.ToString("##,###,###")
            Case 2
                format_my_Number = val.ToString("##,###,###.##")
            Case 3
                format_my_Number = val.ToString("##,###,###.###")
        End Select

    End Function

End Module

الا ان هناك رسالة خطأ ظهرت، لا ادري ماسببها

ارجو المساعدة في تصويب الامر

والف شكر


الملفات المرفقة صورة/صور
   
الرد }}}}
تم الشكر بواسطة:
#2
السلام عليكم...

إذا كنت تقصد التسطير الأخضر تحت عبارة End Function فالسبب هو أن الـ Compiler ينبهك إلى احتمال أن الدالة قد تعيد NULL ما قد يتسبب في حدوث خطأ أثناء التنفيذ. لكن الخطأ قد لا يحدث إذا تم استدعاء الدالة بالقيم المناسبة.

الدالة قد تعيد NULL إذا كانت قيمة المتغير My_No_Digits لا تساوي إحدى القيم الثلاث 0 أو 2 أو 3.

الحل: إما أن تحدد في البداية قيمة افتراضية تعيدها الدالة في حالة لم تكن قيمة My_No_Digits هي 0 أو 2 أو 3، أو أن تضيف إلى كتلة Select Case عبارة Case Else لإرجاع القيمة الافتراضية:

* هكذا:

كود :
Module My_function
    Public Function format_my_Number(ByVal st As String) As String
        Dim val As Double
        If Trim(st) = "" Then st = 0
        val = st

        format_my_Number = val.ToString("##,###,###")    ' تحديد قيمة افتراضية

        Select Case My_No_Digits
            Case 2
                format_my_Number = val.ToString("##,###,###.##")
            Case 3
                format_my_Number = val.ToString("##,###,###.###")
        End Select
    End Function
End Module

* أو هكذا:

كود :
Module My_function
    Public Function format_my_Number(ByVal st As String) As String
        Dim val As Double
        If Trim(st) = "" Then st = 0
        val = st

        Select Case My_No_Digits
            Case 2
                format_my_Number = val.ToString("##,###,###.##")
            Case 3
                format_my_Number = val.ToString("##,###,###.###")
            Case Else
                format_my_Number = val.ToString("##,###,###")    ' تحديد قيمة افتراضية
        End Select
    End Function
End Module

*** لاحظ أن القيمة الافتراضية - سواءً قبل عبارة Select Case أو داخلها باستعمال Case Else - سيتم إرجاعها في حالة أن قيمة My_No_Digits ليست 2 و ليست 3.

نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}}
تم الشكر بواسطة: kafi2030 , kslawy , العزابي , mohammed moh , sooriaty03
#3
الف الف شكر
اخي / ناجي ابراهيم


على التحليل المنطقي للمشكلة، ووضع الحل المناسب لها

بارك الله فيك

وجزاك الله عني كل خير
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] مشكلة نقل الكود من Form2 الي Form1 3asfa~mdmra 2 80 17-02-17, 02:44 AM
آخر رد: الماجيك مسعد
  توليد الادوات في FlowLayoutPanel بواسطة الكود وحذفها (تم ارفاق المشروع) اليوم مبتدئة وغداً محترفة 16 382 13-02-17, 07:43 AM
آخر رد: اليوم مبتدئة وغداً محترفة
  ما الفرق بين اضافة قاعدة البيانات عن طريق الكود و اضافى قاعدة البيانات عن طريق add ne noway 1 59 12-02-17, 08:06 PM
آخر رد: مساعدة
  [VB.NET] تعديل بيسط على الكود ليصيح جاهزآ 3asfa~mdmra 0 78 27-01-17, 06:01 PM
آخر رد: 3asfa~mdmra
  [VB.NET] رجاء تصحيح الكود التالي dubai.eig 4 118 25-01-17, 03:02 PM
آخر رد: مساعدة
  [VB.NET] ممكن حل مشكلة الكود MOSTAFA.KAMEL 1 179 22-01-17, 09:37 PM
آخر رد: MOSTAFA.KAMEL
  [سؤال] ما هو الخطأ في الكود التالي .. أرجو المساعدة abo_alaa315 0 72 22-01-17, 02:27 PM
آخر رد: abo_alaa315
  [VB.NET] يرجى التعديل على الكود dubai.eig 4 120 18-01-17, 05:25 PM
آخر رد: dubai.eig
  [VB.NET] معني رسالة الخطأ يسرى7 10 377 16-01-17, 01:08 AM
آخر رد: يسرى7
  اريد تحول الكود لفيجوال 2008 abudawoodd 6 249 15-01-17, 02:11 PM
آخر رد: abudawoodd

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


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