شرح صورت مسئله
زمانی نیاز است جمع مقادیر یک ستون در جدول محاسبه شود و روی فرم درون یک فیلد نمایش داده شود.
برای مثال جدول کالا شامل لیست نام و قیمت یک سری کالا است و میخواهیم که در فرم بعدی درون یک فیلد مقدار جمع قیمت کالاها را نمایش دهیم.
میتوانیم از کد زیر درون یک فعالیت-کدنویسی(ScriptTask) استفاده کنیم و در آخر نام فیلدی را که جمع مقادیر را نشان میدهد درون بخش پارامترهای خروجی فعالیت کدنویسی (ScriptTask) و درون بخش پارامترهای ورودی فعالیت کاربر(UserTask) بعدی تعریف کنیم. در اینجا این فیلد DecimalTotalPrices است.
using System;
using System.Data;
using System.Data.SqlClient;
using Chargoon.Didgah.BPMS.CommonApi;
namespace Chargoon.Didgah.BPMS.Runtime
} public class ScriptTask : IScriptTask
}public IExecution Execution { get; set; }
public void Execute()
{
//تعریف متغییر sum که قرار است در آن جمع مقادیر ریخته شود.//
Decimal sum=0.0m;
// اتصال به دیتا بیس. BPMSConnectionنام رشته اتصال میباشد.//
SqlConnection conn=new
SqlConnection(Execution.GetConnectionString(“BPMSConnection”));
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
// کوئری SQL که در آن با استفاده از دستور SUM(Column name) جمع ستون مورد نظر را بدست میاوریم. //
// به جای Column name نام ستون موردنظر جدول باید درج شود.//
cmd.CommandText = @”SELECT SUM(Column name)
FROM bpm_SumColDataModel_Extra_GridField
WHERE ParentGuid = @BusinessKey”;
// طبق شرط WHERE ParentGuid = @BusinessKey، مقداردهی @BusinessKey به صورت زیر است تا
همان بخش از جدول در نمونه فعلی فرایند انتخاب شود.//
cmd.Parameters.AddWithValue(“@BusinessKey”,Execution.GuidValue(“___BusinessKey”));
conn.Open();
// خروجی کوئری را تبدیل به نوع داده عدد اعشاری میکنیم.//
sum = Convert.ToDecimal(cmd.ExecuteScalar());
conn.Close();
// متغییر sumرا درون فیلد مجموع قیمت که روی فرم قرار دارد میریزیم DecimalTotalPrices.//
Execution.SetVariable(“DecimalTotalPrices”,sum);
}
}
}
}
[ratemypost]