Foxtable(狐表)用户栏目专家坐堂 → [求助]关于用Eval()计算时忽略中文()


  共有11543人关注过本帖树形打印复制链接

主题:[求助]关于用Eval()计算时忽略中文()

帅哥哟,离线,有人找我吗?
tianhe95
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:148 积分:1665 威望:0 精华:0 注册:2008/9/1 19:40:00
[求助]关于用Eval()计算时忽略中文()  发帖心情 Post By:2011/6/22 13:30:00 [只看该作者]

用Eval()计算时,如果计算式中有中文“()”,就会出错,建议Eval能自动忽略“()”的中英文区别。

本想在表属性中设置当输入中文“()”时自动改为英文“()”,但表属性中不能输入中文“()”。


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/6/22 13:56:00 [只看该作者]

Output.Show(Eval("(7+2)/3".Replace(")",")").Replace("(","(")))

最好规范数据,不然Eval("[7+2]/3")一样结果不对


 回到顶部
帅哥哟,离线,有人找我吗?
tianhe95
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:148 积分:1665 威望:0 精华:0 注册:2008/9/1 19:40:00
  发帖心情 Post By:2011/6/22 14:02:00 [只看该作者]

Replace("(","(")在表属性中无效,因为表属性所有代码中“(”自动为“(”,命令窗口是可以的

 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:148 积分:1665 威望:0 精华:0 注册:2008/9/1 19:40:00
  发帖心情 Post By:2011/6/22 14:40:00 [只看该作者]

我的意思是,在代码中不能输入"(",狐表会自动把"("改为"(",所以上面的代码在表属性的DataColChanged中不存在“(”,就不能替换。

 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:148 积分:1665 威望:0 精华:0 注册:2008/9/1 19:40:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/6/22 14:57:00 [只看该作者]

对比你的代码和我的有何不同!

 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/6/22 15:00:00 [只看该作者]

自动全角转换和着色

在默认的情况下,代码编辑器会自动将全角字符转换为半角,如果你不喜欢这种强制转换,可以在第一行代码输入:'''。

例如:

'''
Dim
s1 As String
s1 =
"我喜欢Foxtable,因为..."
Output.Show(s1)

此外编辑器会用不同的颜色标出各种关键词,以及表名和列名,如果你的电脑性能不太好,代码又比较长,这种代码自动着色的功能会耗费较长的时间,此时你只需在第一行输入"'...",即可关闭自动着色。

例如:

'...
Dim s1 As String
s1 = "我喜欢Foxtable,因为..."
Output.Show(s1)

如果你希望同时关闭全角转换和着色,只需在第一行输入"'''..."。

例如:

'''...
Dim s1 As String
s1 = "我喜欢Foxtable,因为..."
Output.Show(s1)

 


 回到顶部
帅哥哟,离线,有人找我吗?
tianhe95
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:148 积分:1665 威望:0 精华:0 注册:2008/9/1 19:40:00
  发帖心情 Post By:2011/6/22 15:03:00 [只看该作者]

懂了,多谢

[此贴子已经被作者于2011-6-22 15:07:58编辑过]

 回到顶部