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

دا مثال حملته علشان التفقيط في الكريستال ريبورت وكويس جداً لكن المشكلة
في الارقام عندما تكون اقل من 1000 يبقى كويس لكن من 1000 واكثر يكتبه بزيادة صفر مثال ( 1000 عشرة الاف ) وهكذا 10000 يعتبرها مائة الف
جزاكم الله كل خير


الملفات المرفقة
.rar   crestal10.rar (الحجم : 28.87 ك ب / التحميلات : 374)
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم...

الملف في المرفقات عبارة عن ملف تقرير (rpt). نرجو إرفاق الكود في ملف نصي أو كتابته مباشرة في المشاركة.

سلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}
تم الشكر بواسطة:
#3
و عليكم السلام ،،
الكود موجود يالغلا ،، في الكريستال ريبورت ،، حدد الحقل الخاص بالتقفيط ،، تم قم بتعديله ستجد الكود بداخله ،،، حقيقه اول مره تمر علي هذه الخاصيه لما اكرف انه يوجد امكانية ادراج كود في الكريستال ريبورت ،، على العموم كان بودي المساعده و وضعت كود خاص بي و لكن لا اعلم لماذا لا يعلم و ايضا المتغيرات انواعها مختلفه عما نستخدمه في فيجول بيسك

هذا هو الكود ::
PHP كود :
[align=left]
Dim sStrNosResultc1c2c3sMidStrNo As String
Dim nLenNo
nLoop As number
sResult 
""
sStrNo CStr({Main._No})
If 
Left(Right(sStrNo2), 1) = "." Then sStrNo sStrNo "0"
If Left(Right(sStrNo3), 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 Or nLenNo 6 Then
sMidStrNo 
Mid(sStrNonLoop1)
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(sStrNonLoop1)
If 
nLenNo Or nLenNo Or nLenNo 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(sStrNonLoop1)
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(sResult1) = "و" Then
sResult 
Mid(sResult2nLenNo)
End If
formula sResult

[/align
الرد }}}
تم الشكر بواسطة: asemshahen5
#4
الاستاذ ناجي إبراهيم الكود موجود في التقرير مثل ما الاستاذ الفاضل وضع في التعليق بتاعة
،،،،،،،،،،،،،،،،،
استاذي الفاضل السكر المغرور انا فعلاً عارف الكود وعملته عليه كثر من التغيرات لكن المشكلة في انه بيضف صفر لما بتكون المنازل العشرية موجود بعد الالف وكذلك اللى بعده الالف
لما اجد الحل
ارجوا المساعدة
الرد }}}
تم الشكر بواسطة:
#5
السلام عليكم

- توجد في هذا المثال دالة جميلة لتحويل الأرقام إلى حروف بشكل جيد .

- تحياتي .


الملفات المرفقة
.rar   MonyToChar.rar (الحجم : 2.24 ك ب / التحميلات : 452)
الرد }}}
تم الشكر بواسطة: asemshahen5
#6
اخي الفاضل vb_coder
اشكرك على المثال الممتاز
لكن لو التكرم من حضرتك يكون على الكريستال ريبورت لان كده لازم يكون عندي حقل لاستقبال الحروف دي
انا عايزها مباشرة في الكريستال مثل المثال السابق
اشكرك على مجهودك ورد السريع
الرد }}}
تم الشكر بواسطة:
#7
ارجوا من الاخوة اصحاب الخبرة الحل لمشكلتي
جزاكم الله كل خير
الرد }}}
تم الشكر بواسطة:
#8
أهلا بك , للأسف ماعندي كريستال ريبورت , ولكن هل يمكن عمل وإستدعاء دالة في كود الكريستال . إذا كان كذلك إن شاء الله تنحل المشكلة بتعديل طفيف على الكود الذي أرفقته .
الرد }}}
تم الشكر بواسطة:
#9

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





تفضل التقرير بعد تغيير الدالة بدالة أخرى تعمل جيداً
ملاحظة: الارقام في قاعدة البيانات التي ارفقتها فيها بيانات غير صالحة وهذا مثال منها ( 2.58080801014836E+13 ) يجب حذفها واعادة ادخال البيانات بشكل صحيح







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


الملفات المرفقة
.rar   crestal10-03.rar (الحجم : 25.79 ك ب / التحميلات : 484)
الرد }}}
تم الشكر بواسطة: ابو ابراهيم
#10

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


السكر المغرور كتب :المتغيرات انواعها مختلفه عما نستخدمه في فيجول بيسك[/align][/php]



بالنسبة لاختلافات بعض الاوامر عن VB اليك بعض التوضيح (وليس الكل):

المعلومة الأساسية ان هيكلة الكود هي هيكلة VB6 وليس VB.NET
مثل:
PHP كود :
Dim a As Number
4

'' وليس
\Dim a As Number 


الـ Formual تعادل Function ولكن بدون معاملات Parameters حيث ستقوم أنت باعطاءه قيم الحقول مثل {Table1.Field1} بنفس هذه الأقواس وإليك مثال
PHP كود :
Dim s As String
= {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



السلام عليكم ورحمة الله وبركاته
الرد }}}
تم الشكر بواسطة:



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


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