以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于用Eval()计算时忽略中文() (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=10763) |
-- 作者:tianhe95 -- 发布时间:2011/6/22 13:30:00 -- [求助]关于用Eval()计算时忽略中文() 用Eval()计算时,如果计算式中有中文“()”,就会出错,建议Eval能自动忽略“()”的中英文区别。 本想在表属性中设置当输入中文“()”时自动改为英文“()”,但表属性中不能输入中文“()”。 |
-- 作者:hhbb -- 发布时间:2011/6/22 13:56:00 -- Output.Show(Eval("(7+2)/3".Replace(")",")").Replace("(","("))) 最好规范数据,不然Eval("[7+2]/3")一样结果不对 |
-- 作者:tianhe95 -- 发布时间:2011/6/22 14:02:00 -- Replace("(","(")在表属性中无效,因为表属性所有代码中“(”自动为“(”,命令窗口是可以的 |
-- 作者:hhbb -- 发布时间:2011/6/22 14:30:00 -- \'\'\' If CurrentTable.Position = 0 Then MessageBox.Show(Eval("(7+2)/3".Replace(")",")").Replace("(","("))) End If [此贴子已经被作者于2011-6-22 14:36:15编辑过]
|
-- 作者:tianhe95 -- 发布时间:2011/6/22 14:40:00 -- 我的意思是,在代码中不能输入"(",狐表会自动把"("改为"(",所以上面的代码在表属性的DataColChanged中不存在“(”,就不能替换。 |
-- 作者:hhbb -- 发布时间:2011/6/22 14:47:00 -- \'\'\' If e.DataTable.Name = "表A" Then Dim dr As DataRow = e.DataRow If dr("第一列") =Nothing dr("第二列") =Nothing Else dr("第二列")=Eval(dr("第一列").Replace(")",")").Replace("(","(")) End If End If
|
-- 作者:tianhe95 -- 发布时间:2011/6/22 14:53:00 -- 以下是引用hhbb在2011-6-22 14:47:00的发言:
\'\'\'
If e.DataTable.Name = "表A" Then
Dim dr As DataRow = e.DataRow
If dr("第一列") =Nothing
dr("第二列") =Nothing
Else
dr("第二列")=Eval(dr("第一列").Replace(")",")").Replace("(","("))
End If
End If 在输入代码后,红色部分会变成一样 dr("第二列")=Eval(dr("第一列").Replace(")",")").Replace("(","(")) |
-- 作者:hhbb -- 发布时间:2011/6/22 14:57:00 -- 对比你的代码和我的有何不同! |
-- 作者:hhbb -- 发布时间:2011/6/22 15:00:00 -- 自动全角转换和着色 在默认的情况下,代码编辑器会自动将全角字符转换为半角,如果你不喜欢这种强制转换,可以在第一行代码输入:\'\'\'。 例如: \'\'\' 此外编辑器会用不同的颜色标出各种关键词,以及表名和列名,如果你的电脑性能不太好,代码又比较长,这种代码自动着色的功能会耗费较长的时间,此时你只需在第一行输入"\'...",即可关闭自动着色。 例如: \'... 如果你希望同时关闭全角转换和着色,只需在第一行输入"\'\'\'..."。 例如: \'\'\'...
|
-- 作者:tianhe95 -- 发布时间:2011/6/22 15:03:00 -- 懂了,多谢 [此贴子已经被作者于2011-6-22 15:07:58编辑过]
|