تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] أفضل و أحسن كود يمكنني إستخدامه في الحسابات الفواتير
#1
Exclamation 
سلام إخواني

ما هو أفضل و أحسن كود يمكنني إستخدامه في الحسابات الفواتير مثلا
حتى لا أقع في مشاكل في الأرقام
مثلا الأرقام السلبية و العشرية و الأرقام الكبيرة  ...
كما تعلمون فإن حساب الفاتورة يجب أن يكون دقيق و وضع الرقم العشري

أرجوا أن تتكرمو بنصحي


كود :
TextBox1.Text = Format(Val(Text_TTC.Text / (1 + Text_TVA.Text / 100)), "0.00")

كود :
TextBox1.Text = Format(CDbl(Text_TTC.Text / (1 + Text_TVA.Text / 100)), "0.00")
الرد }}}
تم الشكر بواسطة: عبد الهادي بهاب , عمور2016
#2
هل المشكلة مدخلات مربع النص ؟

اذا كنت تريد ان تحصل على قيمة رقمية من مربع النص يمكنك استخدام TryParse او الافضل TryParse مع Validating
الرد }}}
#3
و عليكم السلام و رحمة الله و بركاته

حسب علمي النتيجة واحدة من حيث الدقة فتيجة الدالة في الحالتين متغير من نوع Double

هناك فرق بين Val و CDbl و هو 

Val تأخذ وقت أكثر في التنفيذ و تحويل النص لرقم و لا تقبل الفاصلة و تقبل النص الفارغ

تكون النيجة في Val هي الأرقام قبل أول حرف و تفيد عند ذكر العملة بعد الرقم

CDbl تفترض أن الرقم المرر رقم و هي أفضل و اسرع في الاستخدام مع انعدام ملاحظة الفرق لسرعة المعالجات

كود :
Val("1,112.12$") REM = 1
Val("1112.12$") REM = 1112.12
CDbl("1112.12$") REM = Error
CDbl("") REM = Error
Val("") REM = 0
CDbl("1,112.12") REM = 1112.12
الرد }}}
تم الشكر بواسطة: sniperjawadino , عبد الهادي بهاب , Anas Mahmoud
#4
(20-09-20, 08:17 PM)Anas Mahmoud كتب : هل المشكلة مدخلات مربع النص ؟

اذا كنت تريد ان تحصل على قيمة رقمية من مربع النص يمكنك استخدام TryParse او الافضل TryParse مع Validating



المشكلة فقط في الخوف من دالة قد تحدث لي أخطاء في حسابات الفواتير

خصوصا في الأرقام بالفواصل مثلا 


هل يمكن أن توضح لي أكثر TryParse

(20-09-20, 09:55 PM)Mohamad Anan كتب : و عليكم السلام و رحمة الله و بركاته

حسب علمي النتيجة واحدة من حيث الدقة فتيجة الدالة في الحالتين متغير من نوع Double

هناك فرق بين Val و CDbl و هو 

Val تأخذ وقت أكثر في التنفيذ و تحويل النص لرقم و لا تقبل الفاصلة و تقبل النص الفارغ

تكون النيجة في Val هي الأرقام قبل أول حرف و تفيد عند ذكر العملة بعد الرقم

CDbl تفترض أن الرقم المرر رقم و هي أفضل و اسرع في الاستخدام مع انعدام ملاحظة الفرق لسرعة المعالجات

كود :
Val("1,112.12$") REM = 1
Val("1112.12$") REM = 1112.12
CDbl("1112.12$") REM = Error
CDbl("") REM = Error
Val("") REM = 0
CDbl("1,112.12") REM = 1112.12



أخي محمد بعد ملاحضة هده الأمثلة

هل تنصحني بإستخدام  Cdbl مع عدم جعل المستخدم يضع قيمة فارغة

وهل هدا الكود جيد لأحصل على الفواصل

كود :
TextBox1.Text = Format(CDbl(11.11), "0.00")
الرد }}}
#5
TryParse تقوم بتحويل النصوص String الى اي نوع بيانات Double مثلا ، ولكنها تعيد قيمة من نوع Boolean اذا ما نجحت العملية ام لا 


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

كود :
Dim TVA,TTC As Double


      If Double.TryParse(Text_TVA.Text, TVA ) = False Then
          MsgBox("صيغة غير صحيحة")
          Return
      End If



      If Double.TryParse(Text_TTC.Text, TTC ) = False Then
          MsgBox("صيغة غير صحيحة")
          Return
      End If

TextBox1.Text = (TTC/(1+TVA/100)).ToString("0.00")

وجب التنبيه ايضا انه لا يجب عليك استخدام Val او Cdbl ابدا ، هذا ليس استخدامهم اطلاقا

Val تأخذ ارقام واول ما تجد حرف تتوقف ، لاتعلمك اذا كان النص صالح ام لا

cdbl استخدامها الطبيعي في التحويل من رقم الى اخر ، وقد تقبل اي نوع بيانات ليست مخصصة للنصوص فقط

كنت تكلمت عن TryParse هنا 
الرد }}}
#6
(20-09-20, 10:18 PM)sniperjawadino كتب : أخي محمد بعد ملاحضة هده الأمثلة

هل تنصحني بإستخدام  Cdbl مع عدم جعل المستخدم يضع قيمة فارغة

وهل هدا الكود جيد لأحصل على الفواصل

كود :
TextBox1.Text = Format(CDbl(11.11), "0.00")

مرحبا أخي الكريم

بالنسبة للتأكد من مدخلات المستخدم كما تفضل أخي أنس يمكن استخدام TryParse أو التأكد بالدالة IsNumeric من ادخال رقم او حتى اجبار المستخدم على ادخال ارقام و منعه من ادخال حروف

أما جوهر سؤالك المتعلق بالدقة فالتنسيق الذي ذكرته لن يؤدي الى نتائج دقيقة مثال:

10 / 3 = 3.33
3.33 * 3 = 9.99
أما 3.333333333333334 * 3 = 10

و الخلاصة عادة نستخدم التنسيق عند عرض القيمة فقط و نخزن القيمة دون تنسيق في قاعدة البيانات لأدق النتائج

هذا و الله أعلم
الرد }}}
#7
مرحبا أخي

إضافة لما سبق فالتنسيق الحديث للأرقام يضع فاصلة كل 3 اعداد باستخدام حرف N متبوعا بعدد المنازل العشرية
كود :
TextBox1.Text = CDbl("-1111111.11111").ToString("N3")
TextBox2.Text = CDbl(TextBox1.Text).ToString
و دالة CDbl يمكنها التعامل مع الرقم بعد تنسيقه عكس دالة Val التي تعتبر الفاصلة حرف و هي دالة قديمة من عام 1998 و vb6
لهذا الافضل استخدام دالة CDbl و التنسيق بالطريقة الحديثة اوضح في قراءة الرقم
الرد }}}
#8
نفاش جد رائع ...متابع معكم و نتعلم
 لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
الرد }}}
تم الشكر بواسطة: sniperjawadino
#9
هذه لا تقدر عليها CDbl 

كود :
       Dim d As Double
       Dim f As New NumberFormatInfo
       f.CurrencySymbol = "EGP"
       If Double.TryParse("12.2432423 EGP", NumberStyles.Any, f, d) Then
           MsgBox(d) '12.2432423
       End If

https://docs.microsoft.com/en-us/dotnet/...tProvider_
الرد }}}
#10
إضافة لما سبق

لتنسيق الرقم على انه عملة نكتب C متبوعا بعدد المنازل العشرية

كود :
       TextBox1.Text = CDbl("-1111111.11111").ToString("C2")
       If IsNumeric(TextBox1.Text) Then
           TextBox2.Text = CDbl(TextBox1.Text).ToString
       End If

و الدالة CDbl يمكنها ايضا التعامل مع تنسيق العملة الصحيح مثل الدالة IsNumeric مع ملاحظة التالي

رمز العملة يختلف من مستخدم لمستخدم حسب اعدادات النظام
و أيضا في حال السماح للمستخدم بإدخال الحروف قد يكتب تنسيق غير صحيح
أما اذا كان التنسيق يتم برمجيا فيمكن استخدام CDbl و الله اعلم
الرد }}}
تم الشكر بواسطة: Anas Mahmoud , Anas Mahmoud , sniperjawadino , sniperjawadino


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Heart اقدم لكم هدية تصفح منتدى vb4arb.com بشكل أفضل من قبل مع ( vb4arb Code Highlighter ) عبدالله الدوسري 5 1,716 24-01-24, 10:31 PM
آخر رد: annagui
  [VB.NET] كيف يمكنني استظافة سوفت وير برنامج ادارة جهاز السي بي سي في المختبر الى برنامجي الحزين اليماني 2 282 15-01-24, 10:39 PM
آخر رد: الحزين اليماني
  [VB.NET] كيف يمكنني إعداد ترقيم تلقائي ويتجدد الترقيم في كل يوم Osama_NY 8 2,756 04-11-23, 01:42 PM
آخر رد: الحزين اليماني
  ما هو أفضل موقع موثوق فيه ترشحونه لربط قاعدة البيانات عليه أونلاين hazim1 1 373 16-09-23, 10:32 AM
آخر رد: Amir_Alzubidy
  يوجد خطاء عند تحميل الفورم - مثال شجرة الحسابات new_programer 6 755 11-06-23, 06:47 PM
آخر رد: new_programer
  يوجد خطاء عند فتح الفورم مثال شجرة الحسابات new_programer 2 564 06-06-23, 02:41 PM
آخر رد: new_programer
Photo كيف يمكنني عمل dental chart او tooth chart لمراجعي عيادات الاسنان Alhootti1 12 1,354 13-10-22, 11:32 AM
آخر رد: Alhootti1
  [سؤال] كيف يمكنني ان اعمل شاشة دخول مستخدم hassan 17 10,061 22-05-22, 03:30 AM
آخر رد: أبو خالد الشكري
  أفضل اصدار فى vb.net اسلام الكبابى 0 824 04-12-21, 09:21 PM
آخر رد: اسلام الكبابى
Thumbs Up [سؤال] كيف يمكنني جعل مشرع الفيجوال بيزك يظهر عند تشغيل الويندوز,مع الشكرا عبدالله سعد سلطان 2 1,163 17-11-21, 06:55 AM
آخر رد: ابو روضة

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


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