110,534
社区成员
发帖
与我相关
我的任务
分享
/*
* 1.查询数据库得到公式
* 2.查询数据库得到该公式的参数列表
* 3.参数定义并赋值
* 4.执行公式 --整个流程就像执行一段JS一样,先定义参数,然后根据公式计算出结果,如下
*/
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl();
sc.Language = "JavaScript";
StringBuilder sb = new StringBuilder();//初始化参数值,这里应该从数据库得到参数列表,最终拼成类似格式:var a=10;var b=12;....
sb.Append("var i=10,j=12;");
sb.Append("var x=30;");
sc.ExecuteStatement(sb.ToString());//加入这段脚本
string formula = "(i+j)*x";//得到公式
MessageBox.Show(sc.Eval(formula).ToString());//执行公式,并得到返回结果,660
DECLARE @S NVARCHAR(4000)
SET @S='(((,V1,-,V2,)*,C,*0.09)/(,V,*5/100))*100'
--> 测试数据: #TB
if object_id('tempdb.dbo.#TB') is not null drop table #TB
create table #TB (Code varchar(2),PARVALUE DEC(18,2))
insert into #TB
select 'V',10 union all
select 'C',10 union all
select 'V2',10 union all
select 'V1',15
select @S=REPLACE(@S,','+CODE+',',PARVALUE) from #TB
SELECT @S
EXEC('SELECT '+@S)
/*(((15.00-10.00)*10.00*0.09)/(10.00*5/100))*100
(所影响的行数为 1 行)
------------------------------------
900.00000000000000000
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl();
sc.Language = "JavaScript";
MessageBox.Show(sc.Eval("(((15-10)*10*0.09)/(10*5/100))*100").ToString());//900