1、环境:.net framework2.0
SQL Server2000数据库
winform程序
2、问题主题:计算数据库中存储的计算公式计算出需要的值(计算公式中带有参数)
3、例如数据库中如下存储: (字段横向看)
字段: Parameter Formula1 Formula1Info Formula2 Formula2Info
数据库保存内容: X,Y,Z L 2X+3Y-Z R (X*Y)/Z
如传入3个值 20,30,60 (带入3个值时,只能用顺序对应上述参数值) 。最后计算得出结果 L = 70,R = 10
说明:其中参数个数和名称都是可变的,存什么是什么,但是可以和后面公式里肯定能匹配,这点不用考虑。
另数据库格式不能改变,因为这是在人家数据库基础上做二次开发。
请各位大大帮忙想个好的方法,能提供第三方也行。
6 个解决方案
#1
基本的计算使用new DataTable.Compute("1+1","")计算
函数使用matlab等 http://topic.csdn.net/u/20100107/15/bfcd4874-376b-4745-beae-277dce9acbb2.html
函数使用matlab等 http://topic.csdn.net/u/20100107/15/bfcd4874-376b-4745-beae-277dce9acbb2.html
#2
这个办法好!
#3
能不能说的更详细一点?
继续等待其他高手的方法
#4
2楼的意思是,传参数->构造计算式->利用datatable的Compute方法计算结果
就这么简单
就这么简单
#5
可借助office库Microsoft Script Control进行计算
1:引用Interop.MSScriptControl.dll库。
2:代码
//表达式
string displayString = @“1 * 2 /(3 + 4)”;
//计算数据
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
sc.Language = "JavaScript";
var result = sc.Eval(valueString).ToString();
1:引用Interop.MSScriptControl.dll库。
2:代码
//表达式
string displayString = @“1 * 2 /(3 + 4)”;
//计算数据
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
sc.Language = "JavaScript";
var result = sc.Eval(valueString).ToString();
#6
不好意思,都差点忘记结贴了。
datatable的Compute方法我自己一早就考虑过,但是当时想我要计算的是带参数的表达式,所以总认为这个方法不能达到目的。
但是忽然想通了,因为问的参数是可以和数值对应的,那样,我可以把表达式里面的参数用数值替换掉,然后再用datatable.Compute直接计算。
datatable的Compute方法我自己一早就考虑过,但是当时想我要计算的是带参数的表达式,所以总认为这个方法不能达到目的。
但是忽然想通了,因为问的参数是可以和数值对应的,那样,我可以把表达式里面的参数用数值替换掉,然后再用datatable.Compute直接计算。
#1
基本的计算使用new DataTable.Compute("1+1","")计算
函数使用matlab等 http://topic.csdn.net/u/20100107/15/bfcd4874-376b-4745-beae-277dce9acbb2.html
函数使用matlab等 http://topic.csdn.net/u/20100107/15/bfcd4874-376b-4745-beae-277dce9acbb2.html
#2
这个办法好!
#3
能不能说的更详细一点?
继续等待其他高手的方法
#4
2楼的意思是,传参数->构造计算式->利用datatable的Compute方法计算结果
就这么简单
就这么简单
#5
可借助office库Microsoft Script Control进行计算
1:引用Interop.MSScriptControl.dll库。
2:代码
//表达式
string displayString = @“1 * 2 /(3 + 4)”;
//计算数据
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
sc.Language = "JavaScript";
var result = sc.Eval(valueString).ToString();
1:引用Interop.MSScriptControl.dll库。
2:代码
//表达式
string displayString = @“1 * 2 /(3 + 4)”;
//计算数据
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
sc.Language = "JavaScript";
var result = sc.Eval(valueString).ToString();
#6
不好意思,都差点忘记结贴了。
datatable的Compute方法我自己一早就考虑过,但是当时想我要计算的是带参数的表达式,所以总认为这个方法不能达到目的。
但是忽然想通了,因为问的参数是可以和数值对应的,那样,我可以把表达式里面的参数用数值替换掉,然后再用datatable.Compute直接计算。
datatable的Compute方法我自己一早就考虑过,但是当时想我要计算的是带参数的表达式,所以总认为这个方法不能达到目的。
但是忽然想通了,因为问的参数是可以和数值对应的,那样,我可以把表达式里面的参数用数值替换掉,然后再用datatable.Compute直接计算。