谁能给个公式计算COM开发思路? ( 积分: 100 )

  • 主题发起人 主题发起人 chefee
  • 开始时间 开始时间
C

chefee

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库中列
tag 1 tag2 tag 3
4.5 5.4 45

如动态生成公式(if (tag2-tag1)>0{tag1+tag2*tag3 })生成为字符串型公式,转换的具体的计算过程,现在能实现公式列转换成具体的数据(if(5.4-4.5)>0{4.5+5.4*45})
但 保留字 AND OR > * + / 如何表示。

要实现的功能为生成一个控件,供ASP调用,只需传入(计算式如:1+9*(8-9))就能计算出具体的值:-8
 
'获得数据类型列,存入数据字典,已备公式计算

CSql="select FId,FTag,FTagText,CData from ok_Fina_tableIndex where FType<2"
Set CDny=Server.CreateObject("Scripting.Dictionary")
Set Chefee=Server.CreateObject("AdoDB.Recordset")
OpenConn_OKOA : Chefee.open CSql,Conn_OKOA,1,1
Parm=""
For i=0 to Chefee.recordcount-1
Parm=Parm&","&Chefee(1)
Chefee.movenext
Next
Chefee.close
CSql="Select FTid" &Parm&" from Ok_Fina_Tax where tag15='"&UserName&"'"
OpenConn_OKOA : Chefee.open CSql,Conn_OKOA,1,1

If Not Chefee.eof and not Chefee.bof then
CDny.ReMoveAll()
For i=1 to Chefee.fields.count-1
If IsNumeric(Chefee(i)) Then
CDny.Add Chefee.fields(i).name,Chefee(i)
Else
CDNy.Add Chefee.fields(i).name,0
End If
Next
End if

FMAS=Split(FMA,",")
FMATS=Split(FMAT,",")

For i=0 to ubound(FMAS)-1

If FMAS(i)<>"" and Not IsNull(FMAS(i)) then

'----------------------------------------
'用REPLACE方法把数据字典里的数据替换公式进去
Dim Regx,RepcStr,num,String,Formula,v
Formula=Cstr(FMATS(i))

Set Regx=New RegExp
String="Tag[0-9]+"
Regx.Pattern =String ' 设置模式。
Regx.IgnoreCase =True ' 设置是否区分大小写。
Regx.Global=True
Regx.MultiLine=True

Set RepcStr=Regx.Execute(string)
For each num In RepcStr
Formula =Replace(Formula,Cstr(num),CDny(Cstr(num)))
Next




'----------------------------------------
CKF.Add FMAS(i),Formula


end If
Next
 
用DELPHI开发COM
 
现在的DFW人气不行了,连速度也慢了很多........
 
你这个问题实际上是数据结构里面的堆栈操作问题,呵呵,回去好好看看书吧,上面有个现成的例子,不但要区分优先级,还要进行括号,去括号运算。祝你好运~~~
 
就是运算符,操作符的运算过程,哪书上有例子?
 
后退
顶部