ASKaffash
دوشنبه 18 خرداد 1388, 10:13 صبح
سلام
مدتی است که در چند تالار مشاهده میکنم که دوستان در نرم افزارهای متفاوت از جمله یک سیستم حقوق و ... قصد محاسبه یک عبارت محاسباتی (فرمول) را دارند بنابراین راه حل ذیل را که حدود 5 سال قبل ایجاد کرده ام را به دوستان آموزش میدهم :
شایان ذکر است این مثال به زبان #C و بانک SQLServer است ولی برای هر زبان و هر بانک
اطلاعاتی مثل اکسس و اراکل و ... نیز قابل استفاده است (با کمی تغییرات)
در این روش شما از طریق زبان برنامه نویسی کلیه متغیرها را ترجمه کرده و یک رشته ساده مثل:
1.234*2.33+2767-88
میسازید حال رشته را به بانک اطلاعاتی ارسال تا محاسبه و نتیجه را باز گرداند
به همین سادگی :
مثال ذیل را ملاحظه کنید :
float X = 1.23f, Y = 1.345f;
String Formula = @"3*X*Y+Sin(X/Y)+1.7*Power(X,2)-Y";
Formula = Formula.Replace("X", X.ToString());
Formula = Formula.Replace("Y", Y.ToString());
SqlConnection C = new SqlConnection("Data Source=.;Initial Catalog=master;Integrated Security=True");
C.Open();
this.Text = new SqlCommand("Select " + Formula, C).ExecuteScalar().ToString();
C.Close();
حال شما این کد را دستکاری کنید و حالتهای پیشرفته تری ایجاد کنید .
مدتی است که در چند تالار مشاهده میکنم که دوستان در نرم افزارهای متفاوت از جمله یک سیستم حقوق و ... قصد محاسبه یک عبارت محاسباتی (فرمول) را دارند بنابراین راه حل ذیل را که حدود 5 سال قبل ایجاد کرده ام را به دوستان آموزش میدهم :
شایان ذکر است این مثال به زبان #C و بانک SQLServer است ولی برای هر زبان و هر بانک
اطلاعاتی مثل اکسس و اراکل و ... نیز قابل استفاده است (با کمی تغییرات)
در این روش شما از طریق زبان برنامه نویسی کلیه متغیرها را ترجمه کرده و یک رشته ساده مثل:
1.234*2.33+2767-88
میسازید حال رشته را به بانک اطلاعاتی ارسال تا محاسبه و نتیجه را باز گرداند
به همین سادگی :
مثال ذیل را ملاحظه کنید :
float X = 1.23f, Y = 1.345f;
String Formula = @"3*X*Y+Sin(X/Y)+1.7*Power(X,2)-Y";
Formula = Formula.Replace("X", X.ToString());
Formula = Formula.Replace("Y", Y.ToString());
SqlConnection C = new SqlConnection("Data Source=.;Initial Catalog=master;Integrated Security=True");
C.Open();
this.Text = new SqlCommand("Select " + Formula, C).ExecuteScalar().ToString();
C.Close();
حال شما این کد را دستکاری کنید و حالتهای پیشرفته تری ایجاد کنید .