工资管理系统中,如果用户需要自己定义工资发放例如:加班工资=加班小时数*2
工资=基本工资+加班工资疑问:1、如何判断用户输入的公式合法
2、数据库又如何设计
3、中文公式如何实现运算?是不是要将中文替换成字母==============================================================================================
在网上查了好多资料也是一头雾水,只知道最简单的方法是用第三方控件Script Control 来实现
如果有这方面经验的恳求指点下,分不够 我在加~~~
工资=基本工资+加班工资疑问:1、如何判断用户输入的公式合法
2、数据库又如何设计
3、中文公式如何实现运算?是不是要将中文替换成字母==============================================================================================
在网上查了好多资料也是一头雾水,只知道最简单的方法是用第三方控件Script Control 来实现
如果有这方面经验的恳求指点下,分不够 我在加~~~
解决方案 »
- 菜鸟求助!很简单的加载问题
- 如何将vb创建的dll生成打包成cab包???
- 一个很简单的问题!
- 怎样通过Modem建立的连接来实现文件传送?急!
- 高分求救,在任务栏里怎么隐藏我的应用程序图标?
- activereport1.1如何更改纸张为横向和纸张的大小?
- 想办法给我例子看呀与数据库的;如显示的list,增加,删除,修改,等的小例子啊,救我哦,我不想死!
- 如何压缩数据库显示进度(送100分!决不食言!在先等候!)
- 各位大哥,如何将程序的用户名和密码保存到程序路径下的文件里(可以修改)
- 学了三年的数据库,怎么对这个问题一点思路也没有
- 哪位boos帮忙看看
- vb6读远端数据库到本地数据库中有什么好方法吗?
字段:
1:strFormulaName 主键 如:加班工资
2: strFormulaText 公式内容 加班工资*2
3:tmBegDate 该公式生效日期
4:tmEndDate 该公式结束日期
.................. 其他的必要属性判断合法性:比如要看 工资=基本工资+加班工资 这个公式正确性
公式内容为:基本工资+加班工资 根据+-*/()等公式基本符号分解字符串
既ss=基本工资 + 加班工资 遇到符号前后都加空格
dim strSub() as string
strSub=split(ss)
判断不是基本符号的项在数据库中是否都存在(最基本的项在数据库中必须事先设定好。)如果不存在,则公式错误。 如果都存在,把不是基本符号的项都转换为随机数。进行运算。3:运算方法 一种可以根据Script Control 来。
另一种方法可以通过数据库来 举个例子:
基本工资 + 加班工资 取出对应的数后 字符串为:ss="2000.5+555"
strSql="select " & ss & " as Result"
adoConnection.execute strsql
rs.fields("Result") 就是计算结果
这样子如何判断公式是否正确呀
二、使用vba6.dll中的API函数EbExecuteLine计算表达式。
三、使用On Error Resume Next和Err.Number是否为0判断表达式是否合法。
A)EbExecuteLine 是只在 VB-IDE 中有效的“技术”。
B)Eval 只能用于计算,你要用它校验公式是否可行,那就需要给每个项目预设值。
由于公式是不确定的,那么项目的预设值很可能导致公式中 A/(B-C) 产生除零错误。自己写表达式解析器就能同时做到定义校验和运算。
vba6.dll的api函数EbExecuteLine可以计算表达式,但是不知道能不能支持if..then。。等语句
点工程,引用Microsoft Script Control 1.0
在当前form上面,一个text文本框,用于输入公式 ,一个command1按钮Private Sub Command1_Click()
Dim script_control As Object
Set script_control = CreateObject("MSScriptControl.ScriptControl")
script_control.Language = "VBScript"
Dim s As String
s = script_control.Eval(Text1.Text)
MsgBox s
End Sub
例如定义一个实得底薪,在公式里可写成:if(上班天数>=21,实得底薪,基本底薪*(上班天数/21),基本底薪和上班天数是一个项目。
此自定义公式经测试成功,且目前有支持十几个函数,但可以增加多个函数