这里有一个例子:
http://expert.csdn.net/Expert/topic/2323/2323708.xml?temp=.2692224
http://expert.csdn.net/Expert/topic/2323/2323708.xml?temp=.2692224
解决方案 »
- 关于使用SQL Server 2008进行数据挖掘相关操作
- 什么叫ERP软件,它有什么特点。除了财务ERP软件外,还有哪些常用软件属于ERP软件?象酒店管理系统等信息管理系统之类的软件属于ERP软件吗?
- 求一sql语句:表中有编码和名称两个字段,编码不会重复,怎么查出名称重复的纪录
- 100分求一SQL语句,,送分了...
- 怎样清除ACCESS缓存
- 数据类型的转换问题
- 关于MS SQL Server 2000的自动安装
- sql server中,限制client数,指的是限制什么?
- 各位大侠!Net8 Configuration Assistant 进行本地网络服务名配置问题!
- 数据库绝症,救命嘎!!!!!
- SQL Server 中的数据挖掘工具
- 复制问题,大家看看,能解决,我可以在分,倾囊向赠都可以,再开一贴,便于给分,谢谢
推荐vsstring控件.
那有vsstring控件呀?他具体是干什么用的呀?
set @公式='((A+B)*C)/D'create table 你的表(id int,name varchar(10),value int)
insert 你的表 values(1, 'A', 20)
insert 你的表 values(2, 'B' , 10)
insert 你的表 values(3, 'C' , 5)
insert 你的表 values(4, 'D' ,15)select @公式=replace(@公式,name,value) from 你的表exec('select '+@公式+' 结果')go
drop table 你的表
/*
结果
-----------
10
*/
insert 你的表 values(1, 'A', 20)
insert 你的表 values(2, 'B' , 10)
insert 你的表 values(3, 'C' , 5)
insert 你的表 values(4, 'D' ,15)go
--创建计算的函数
create proc p_calc
@公式 nvarchar(4000)
as
declare @re decimal(38,8)
select @公式=replace(@公式,name,value) from 你的表
set @公式='select @re='+@公式
exec sp_executesql @公式,N'@re decimal(38,8) out',@re out
return(@re)
go--调用存储过程得到结果
declare @re decimal(38,8)
exec @re=p_calc '((A+B)*C)/D'
select '计算结果'=@re--删除测试环境
drop table 你的表
drop proc p_calc
@公式 varchar(4000)
as
declare @re decimal(38,8)
select @公式=replace(@公式,name,value) from 你的表
exec(@公式)
go---调用:
txtSQL = "exec 过程 '((A+B)*C)/D'"
with ar_tmp
if .state=adstateopen then .close
.open txtSQL,ac_tmp,adopenkeyset,adlockreadonly
end withif ar_tmp.recordcount>0 then
text.text=ar_tmp!名称
else
text.text=""
endif
ar_tmp.close
--创建计算的函数
create proc p_calc
@公式 nvarchar(4000),
@re decimal(38,8) output
as
select @公式=replace(@公式,name,value) from 你的表
set @公式='select @re='+@公式
exec sp_executesql @公式,N'@re decimal(38,8) out',@re out
return(@re)
go'在VB中调用的例子:function f_calc(byval 公式$)
Dim iCmd As New ADODB.Command
With iCmd
.ActiveConnection = "数据库连接字符串"
.CommandType = adCmdStoredProc
.CommandText = "p_calc"
.Parameters.Refresh
.Parameters("@公式") = 公式
.Execute
f_calc=.Parameters("@re")
end with
end function
1.项目名称不要包含()*/+-之类的符号.
2.项目名称之间不要有包含关系.
例如:有项目名称A和AA,就会导致大力的处理方法失效.对于第二个问题,可以通过修改存储过程来避免,第一个问题只能规定项目名称中不能包含特殊的字符.--为避免上面提到的第二个问题,可以将存储过程修改如下:
--创建计算的过程
create proc p_calc
@公式 nvarchar(4000),
@re decimal(38,8) output
as
select @公式=replace(@公式,name,value) from 你的表 order by name desc --加上排序,先替换项目最长的.
set @公式='select @re='+@公式
exec sp_executesql @公式,N'@re decimal(38,8) out',@re out
return(@re)
go