الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة فى دالة التفقيط داخل الاكتيف ريبورت

بدأه ahmead24 في 13 يونيو 2011 · 1 رد · 553 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

استخدم برنامج اكتيف ريبورت لعمل التقارير ActiveReports for .net 3.0 و قمت بتصميم فاتورة و وضعت كود للتفقيط

[code
]
public string Tafgeet(Double Amount, string Curr, string SubCurr)
{
string Value = Math.Floor(Amount).ToString();
string NewValue = null;
string[] Part1 = new string[10] { "", "إحدي ", "اثنا", "ثلاث", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة" };
string[] Part2 = new string[10] { "", "عشر", "عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", "ثمانون", "تسعون" };
string[] Part3 = new string[10] { "", "مئة", "مئان", "ثلاث مائة", "أربع مائة", "خمس مائة", "ست مائة", "سبع مائة", "ثمان مائة", "تسع مائة" };
string[] Part4 = new string[10] { "", "ألف", "ألفان", "ثلاثة آلاف", "أربع آلاف", "خمسة آلاف", "ستة آلاف", "سبع آلاف", "ثمانية آلاف", "تسعة آلاف" };

//---------------------------< ....... الملاييييييييييييين ........ >
if (Value.Length == 7)
{
if (Value.Substring(0, 1) == "1")
NewValue = "مليون ";
else if (Value.Substring(0, 1) == "2")
NewValue = "مليونان ";
else
NewValue = Part1[int.Parse(Value.Substring(0, 1))] + " ملايين";

Value = Value.Substring(1, Value.Length - 1);
}
//------------------------------------< ....... مئات الألوف....... >
if (Value.Length == 6)
{
NewValue += " " + Part3[int.Parse(Value.Substring(0, 1))] + " و";
Value = Value.Substring(1, Value.Length - 1);
}
//----------------------------------
if (Value.Length == 5)
{
NewValue += " " + Part1[int.Parse(Value.Substring(1, 1))];
NewValue += " و" + Part2[int.Parse(Value.Substring(0, 1))] + " ألفا و";
Value = Value.Substring(1, Value.Length - 1);
Value = Value.Substring(1, Value.Length - 1);
}
//---------------------------------
if (Value.Length == 4)
{
NewValue += " " + Part4[int.Parse(Value.Substring(0, 1))];
Value = Value.Substring(1, Value.Length - 1);
}
if (Value.Length == 3)
{
NewValue += " " + Part3[int.Parse(Value.Substring(0, 1))] + " و";
Value = Value.Substring(1, Value.Length - 1);
}
//-----------------------------------
if (Value.Length >= 1 && Value.Length <= 2)
{
NewValue += Part1[int.Parse(Value.Substring(1, 1))];
NewValue += " " + Part2[int.Parse(Value.Substring(0, 1))];
Value = Value.Substring(1, Value.Length - 1);
Value = Value.Substring(1, Value.Length - 1);
}
NewValue += " " + Curr;
//الكسر العشري
string Real = Amount.ToString("");
int Pos = Real.IndexOf('.', 0, Real.Length);
if (Pos != -1)
{
Pos++;
try
{
string NewReal = (float.Parse(Real.Substring(Pos, Real.Length - Pos))).ToString();
if (NewReal.Length == 1)
NewValue += " و " + Part1[int.Parse(NewReal.Substring(0, 1))];
else
{
NewValue += " و " + Part1[int.Parse(NewReal.Substring(1, 1))];
NewValue += " و " + Part2[int.Parse(NewReal.Substring(0, 1))];
}
NewValue += " " + SubCurr;
}
catch { }
}
return NewValue;
}
[/code

]

ثم وضعت الكود التالى فى التقرير

private void fatora_FetchData(object sender, FetchEventArgs eArgs)
        {
            double amount1 = Convert.ToDouble(this.Fields["amount1"].Value);
            double pricebtax = Convert.ToDouble(this.Fields["pricebtax"].Value);



            this.Fields["totalprice"].Value = (amount1 * pricebtax);
            this.Fields["tax"].Value = (amount1 * pricebtax *.1);

            this.Fields["total"].Value = (amount1 * pricebtax * 1.1);
          this.Fields["a"].Value = con.Tafgeet(Double.Parse(Convert.ToString(this.Fields["total"].Value)), "دولار", "سنت");

            this.Fields["a"].Value = textBox15.Value;
        }

        private void fatora_DataInitialize(object sender, EventArgs e)
        {
            this.Fields.Add("totalprice");
            this.Fields.Add("tax");
            this.Fields.Add("total");

            this.Fields.Add("a");
        }

لكن كل مرة يقوم بتفقيط اول سطر فى التقرير فقط و يتجاهل بقية الصفوف فما هو الخطأ .

#2

لقد عرفت الخطأ و الحل كالتالى

  private void fatora_FetchData(object sender, FetchEventArgs eArgs)
        {
            double amount1 = Convert.ToDouble(this.Fields["amount1"].Value);
            double pricebtax = Convert.ToDouble(this.Fields["pricebtax"].Value);


            // Now perform the calculation for our added calculated field:
            this.Fields["totalprice"].Value = (amount1 * pricebtax);
            this.Fields["tax"].Value = (amount1 * pricebtax *.1);

            this.Fields["total"].Value = (amount1 * pricebtax * 1.1);

        }

  private void fatora_DataInitialize(object sender, EventArgs e)
        {
            this.Fields.Add("totalprice");
            this.Fields.Add("tax");
            this.Fields.Add("total");

            this.Fields.Add("a");
        }

  private void groupFooter1_Format(object sender, EventArgs e)
        {
            double totatalp = Convert.ToDouble(textBox12.Text) + Convert.ToDouble(textBox14.Text);
            textBox17.Text = totatalp.ToString();
            textBox15.Text = con.Tafgeet(Double.Parse(Convert.ToString(totatalp.ToString())), "جنية", "قرش");

            this.Fields["a"].Value = textBox15.Value;
        }

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…