السلام عليكم
انا عارف ان ممكن ميكونش دا مكان السؤال بس مفيش اي رد من الاعضاء
دا مثال حملته علشان التفقيط في الكريستال ريبورت وكويس جداً لكن المشكلة
في الارقام عندما تكون اقل من 1000 يبقى كويس لكن من 1000 واكثر يكتبه بزيادة صفر مثال ( 1000 عشرة الاف ) وهكذا 10000 يعتبرها مائة الف
جزاكم الله كل خير
و عليكم السلام ،،
الكود موجود يالغلا ،، في الكريستال ريبورت ،، حدد الحقل الخاص بالتقفيط ،، تم قم بتعديله ستجد الكود بداخله ،،، حقيقه اول مره تمر علي هذه الخاصيه لما اكرف انه يوجد امكانية ادراج كود في الكريستال ريبورت ،، على العموم كان بودي المساعده و وضعت كود خاص بي و لكن لا اعلم لماذا لا يعلم و ايضا المتغيرات انواعها مختلفه عما نستخدمه في فيجول بيسك
هذا هو الكود ::
PHP كود :
[align=left] Dim sStrNo, sResult, c1, c2, c3, sMidStrNo As String Dim nLenNo, nLoop As number sResult = "" sStrNo = CStr({Main._No}) If Left(Right(sStrNo, 2), 1) = "." Then sStrNo = sStrNo & "0" If Left(Right(sStrNo, 3), 1) <> "." Then sStrNo = sStrNo & ".00" sStrNo = Trim(sStrNo) nLenNo = Len(sStrNo) nLoop = 1 Do While nLenNo > 0 c1 = "" c2 = "" c3 = "" If nLenNo = 12 Or nLenNo = 9 Or nLenNo = 6 Then sMidStrNo = Mid(sStrNo, nLoop, 1) nLenNo = nLenNo - 1 Select Case sMidStrNo Case "0" c3 = "" Case "1" c3 = "ومائة " Case "2" c3 = "ومائتان " Case "3" c3 = "وثلاثمائة " Case "4" c3 = "واربعمائة " Case "5" c3 = "وخمسمائة " Case "6" c3 = "وستمائة " Case "7" c3 = "وسبعمائة " Case "8" c3 = "وثمانمائة " Case "9" c3 = "وتسعمائة " End Select nLoop = nLoop + 1 End If If nLenNo = 3 Then nLoop = nLoop + 1 nLenNo = nLenNo - 1 End If sMidStrNo = Mid(sStrNo, nLoop, 1) If nLenNo = 2 Or nLenNo = 5 Or nLenNo = 8 Or nLenNo = 11 Then Select Case sMidStrNo Case "0" c2 = "" Case "1" c2 = "عشر " Case "2" c2 = "وعشرون " Case "3" c2 = "وثلاثون " Case "4" c2 = "واربعون " Case "5" c2 = "وخمسون " Case "6" c2 = "وستون " Case "7" c2 = "وسبعون " Case "8" c2 = "وثمانون " Case "9" c2 = "وتسعون " End Select nLenNo = nLenNo - 1 nLoop = nLoop + 1 End If sMidStrNo = Mid(sStrNo, nLoop, 1) If nLenNo = 1 Then ' قروش Select Case sMidStrNo Case "0" c1 = "" Case "1" If c2 = "عشر " Then c1 = "واحدى " Else c1 = "وواحد " End If Case "2" If c2 = "عشر " Then c1 = "واثنتا " Else c1 = "واثناتان " End If Case "3" c1 = "وثلاث " Case "4" c1 = "واربع " Case "5" c1 = "وخمس " Case "6" c1 = "وست " Case "7" c1 = "وسبع " Case "8" c1 = "وثمان " Case "9" c1 = "وتسع " End Select Else ' جنهات Select Case sMidStrNo Case "0" c1 = "" If c2 = "عشر " Then c2 = "وعشرة " End If Case "1" If c2 = "عشر " Then c1 = "واحدى " Else c1 = "وواحد " End If Case "2" If c2 = "عشر " Then c1 = "واثنا " Else c1 = "واثنان " End If Case "3" c1 = "وثلاثة " Case "4" c1 = "واربعة " Case "5" c1 = "وخمسة " Case "6" c1 = "وستة " Case "7" c1 = "وسبعة " Case "8" c1 = "وثمانة " Case "9" c1 = "وتسعة " End Select End If nLenNo = nLenNo - 1 nLoop = nLoop + 1 Select Case nLenNo Case 9 Select Case c1 + c2 + c3 Case "وواحد " sResult = sResult + "ومليون " Case "واثنان " sResult = sResult + "ومليونان" Case Else sResult = sResult + c3 + c1 + c2 + "مليون " End Select Case 6 Select Case c1 + c2 + c3 Case "وواحد " sResult = sResult + "والف " Case "واثنان " sResult = sResult + "والفان " Case "وثلاثة " sResult = sResult + "وثلاثة الاف " Case "واربعة " sResult = sResult + "واربعة الاف " Case "وخمسة " sResult = sResult + "وخمسة الاف " Case "وستة " sResult = sResult + "وستة الاف " Case "وسبعة " sResult = sResult + "وسبعة الاف " Case "وثمانية " sResult = sResult + "وثمانية الاف " Case "وتسعة " sResult = sResult + "وتسعة الاف " Case Else If c2 = "وعشرة " Then sResult = sResult + c3 + c1 + c2 + "الاف " Else sResult = sResult + c3 + c1 + c2 + "الف " End If End Select Case 3 If c2 = "" Then Select Case c1 Case "" c1 = "جنيه " Case "وواحد " c1 = "وجنيه " Case "واثنان " c1 = "وجنيهان " Case "وثلاثة " c1 = "وثلاثة جنيهات " Case "واربعة " c1 = "واربعة جنيهات " Case "وخمسة " c1 = "وخمسة جنيهات " Case "وستة " c1 = "وستة جنيهات " Case "وسبعة " c1 = "وسبعة جنيهات " Case "وثمانية " c1 = "وثمانية جنيهات " Case "وتسعة " c1 = "وتسعة جنيهات " End Select sResult = sResult + c3 + c1 + c2 Else sResult = sResult + c3 + c1 + c2 + "جنيهاً " End If Case 0 If c1 + c2 <> "" Then If c2 = "" Then Select Case c1 Case "وواحد " sResult = sResult + "وقرش واحد" Case "واثنان " sResult = sResult + "وقرشان " Case Else sResult = sResult + c1 + "قروش " End Select Else sResult = sResult + c1 + c2 + "قرش " End If End If End Select Loop sResult = LTrim(sResult) nLenNo = Len(sResult) - 1 If Left(sResult, 1) = "و" Then sResult = Mid(sResult, 2, nLenNo) End If formula = sResult
31-03-13, 10:03 AM (آخر تعديل لهذه المشاركة : 31-03-13, 10:05 AM {2} بواسطة احمد صالح غريب.)
الاستاذ ناجي إبراهيم الكود موجود في التقرير مثل ما الاستاذ الفاضل وضع في التعليق بتاعة
،،،،،،،،،،،،،،،،،
استاذي الفاضل السكر المغرور انا فعلاً عارف الكود وعملته عليه كثر من التغيرات لكن المشكلة في انه بيضف صفر لما بتكون المنازل العشرية موجود بعد الالف وكذلك اللى بعده الالف
لما اجد الحل
ارجوا المساعدة
اخي الفاضل vb_coder
اشكرك على المثال الممتاز
لكن لو التكرم من حضرتك يكون على الكريستال ريبورت لان كده لازم يكون عندي حقل لاستقبال الحروف دي
انا عايزها مباشرة في الكريستال مثل المثال السابق
اشكرك على مجهودك ورد السريع
أهلا بك , للأسف ماعندي كريستال ريبورت , ولكن هل يمكن عمل وإستدعاء دالة في كود الكريستال . إذا كان كذلك إن شاء الله تنحل المشكلة بتعديل طفيف على الكود الذي أرفقته .
04-04-13, 02:32 PM (آخر تعديل لهذه المشاركة : 04-04-13, 08:44 PM {2} بواسطة Moo00ooN.)
السلام عليكم ورحمة الله وبركاته
تفضل التقرير بعد تغيير الدالة بدالة أخرى تعمل جيداً
ملاحظة: الارقام في قاعدة البيانات التي ارفقتها فيها بيانات غير صالحة وهذا مثال منها ( 2.58080801014836E+13 ) يجب حذفها واعادة ادخال البيانات بشكل صحيح
05-04-13, 08:30 PM (آخر تعديل لهذه المشاركة : 09-05-13, 09:40 AM {2} بواسطة Moo00ooN.)
السلام عليكم ورحمة الله وبركاته
السكر المغرور كتب :المتغيرات انواعها مختلفه عما نستخدمه في فيجول بيسك[/align][/php]
بالنسبة لاختلافات بعض الاوامر عن VB اليك بعض التوضيح (وليس الكل):
المعلومة الأساسية ان هيكلة الكود هي هيكلة VB6 وليس VB.NET
مثل:
PHP كود :
Dim a As Number a = 4
'' وليس \Dim a As Number = 4
الـ Formual تعادل Function ولكن بدون معاملات Parameters حيث ستقوم أنت باعطاءه قيم الحقول مثل {Table1.Field1} بنفس هذه الأقواس وإليك مثال
PHP كود :
Dim s As String s = {tbl1.firstname}
Number : نوع البيانات الرقمية وهي تشابه Decimal وتلاحظ عدم قبول Integer
String : نوع البيانات النصية وهي نفسها لم تتغير.
ToNumber : تحويل القيمة النصية إلى إلى قيمة رقمية تشابه ("123")Val
ToText : لها استخدام عدة
تحويل قيمة رقمية الى قيمة نصية تشابه (123)Str
وأيضا بديلة لـ Format و FormatNumber ولكن بمعاملات Parameters مختلفة
مثل (12.345,2)ToText تكون النتيجة "12.34" تحديد عدد منازل الكسر
مثل ("00000000.00",12345)ToText تكون النتيجة "00012345.00"
مثل (",",12345,0)ToText تكون النتيجة "12,345" لتكوين الرقم بشكل مجموعات الالوف بفاصلة لتسهيل القراءة
مثل (",",12345,2)ToText تكون النتيجة "12,345.00" لتكوين الرقم بشكل مجموعات الالوف بفاصلة لتسهيل القراءة مع تحديد عدد منازل الكسر
Formula : لارجاع النتيجة كما في VB6 وهي تشابه أيضاً Return في VB.NET