![]() |
|
عملية حسابية - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم أسئلة واستفسارات الأعضاء - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=94) +--- قسم : مايكرسوفت أكسيس Microsoft Access (http://vb4arb.com/vb/forumdisplay.php?fid=170) +--- الموضوع : عملية حسابية (/showthread.php?tid=54662) |
عملية حسابية - sabmov - 05-08-25 السلام عليكم .. بعد عودة طويلة اتشرف بالعودة للمنتدى اتمنى من الزملاء ايجاد حل لاجراء عملية حسابية . لدى حقل باسم width المطلوب فى حدث after update لهذا الحقل .. الحالة 1 ..عند كتابة رقم صحيح + كسر اذا كان الكسر اقل من 0.5 ان يتم حذف الكسر ويبقى الرقم الصحيح ( مثال 1.4بعد التحديث تصبح القيمة 1) حالة 2 ..عند كتابة رقم صحيح + كسر اذا كان الكسر = 0.5 ان يتم يترك الرقم الصحيح +الكسر ( مثال 2.5بعد التحديث تصبح القيمة 2.5) حالة 3 ..عند كتابة رقم صحيح + كسر اذا كان الكسر اكبر من 0.5 ان يتم جبر بحيث يجبر الرقم الصحيح للقيمة الاعلى ا( مثال 4.6 بعد التحديث تصبح القيمة 5) وشكرا للجميع RE: عملية حسابية - sabmov - 06-08-25 يرجى من خبراء الاكسيس التكرم بحل المسألة شكرا للجميع RE: عملية حسابية - sabmov - 07-08-25 السلام عليكم .. اخى الحبيب امير خالص الشكر لتجاوبك .. للاسف صديقى ان الكود لم ياتى باى نتائج اليك بعض الاكواد المستخدمة ولم تاتى بنتائج Private Sub width_AfterUpdate() Dim integerPart As Long Dim fractionalPart As Double Dim originalValue As Double ' حفظ القيمة الأصلية المدخلة قبل أي تعديل originalValue = Me.width ' استخراج الجزء الصحيح من القيمة المدخلة (مثال: من 5.4 سيكون الناتج 5) integerPart = Int(originalValue) ' استخراج الجزء الكسري فقط مع تقريبه لمنزلتين عشريتين (مثال: 5.4 - 5 = 0.4) fractionalPart = Round(originalValue - integerPart, 2) ' البدء في فحص قيمة الكسر If fractionalPart < 0.5 Then ' إذا كان الكسر أقل من 0.5 (مثل 5.4)، يتم إعادة القيمة إلى الجزء الصحيح فقط (5) Me.width = integerPart ElseIf fractionalPart = 0.5 Then ' إذا كان الكسر يساوي 0.5 (مثل 4.5)، يتم ترك القيمة كما هي (4.5) Me.width = originalValue ElseIf fractionalPart > 0.5 Then ' إذا كان الكسر أكبر من 0.5 (مثل 7.6)، يتم إضافة 1 إلى الجزء الصحيح (7+1=8) Me.width = integerPart + 1 End If End Sub كود اخر Private Sub width_AfterUpdate() Dim integerPart As Long Dim fractionalPart As Double ' استخراج الجزء الصحيح من القيمة المدخلة integerPart = Int(Me.width) ' استخراج الجزء الكسري وتقريبه لمنزلتين عشريتين fractionalPart = Round(Me.width - integerPart, 2) ' البدء في فحص قيمة الكسر Select Case fractionalPart ' إذا كان الكسر أقل من 0.5 Case Is < 0.5 ' يتم إعادة القيمة إلى الجزء الصحيح فقط Me.width = integerPart ' إذا كان الكسر أكبر من 0.5 Case Is > 0.5 ' يتم إضافة 1 إلى الجزء الصحيح Me.width = integerPart + 1 ' إذا كان الكسر يساوي 0.5 Case 0.5 ' يتم ترك القيمة كما هي Me.width = Me.width End Select End Sub كود اخر Private Sub width_AfterUpdate() Dim originalValue As Double Dim decimalPart As Long ' حفظ القيمة الأصلية المدخلة originalValue = Me.width ' استخراج الكسر وضربه في 10، ثم تقريبه لأقرب عدد صحيح ' مثال: (5.4 - 5) * 10 = 4.0 -> CLng(4.0) = 4 ' مثال: (7.6 - 7) * 10 = 6.0 -> CLng(6.0) = 6 ' مثال: (4.5 - 4) * 10 = 5.0 -> CLng(5.0) = 5 decimalPart = CLng(Round((originalValue - Int(originalValue)) * 10, 0)) ' البدء في فحص الكسر المحول Select Case decimalPart ' إذا كان الكسر أقل من 5 Case Is < 5 Me.width = Int(originalValue) ' إذا كان الكسر أكبر من 5 Case Is > 5 Me.width = Int(originalValue) + 1 ' إذا كان الكسر يساوي 5 Case 5 Me.width = originalValue End Select End Sub RE: عملية حسابية - sabmov - 07-08-25 بداية اكرر شكرى .. كنت اتمنى ان ابشرك بنجاح الكود .. ولكن .. عموما .. خالص تحياتى . وجزاك الله عنى كل الخير RE: عملية حسابية - mbc321 - 24-09-25 ممكن ترفق الملف وبإذن الله الحل بيسط |