以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [讨论] 在线开发指南中的一个问题: 代码好像不全? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=139191) |
-- 作者:龙潭春早 -- 发布时间:2019/8/7 20:50:00 -- [讨论] 在线开发指南中的一个问题: 代码好像不全? 【问题】 在线开发指南的 BeforeEnterFolder事件 的 示例二,介绍的好像有问题,感觉代码不全。 【代码】 If e.FolderName = "/" OrElse e.FolderName = "/公共" OrElse e.FolderName = "/" & User.Name Then ElseIf User.Group = "经理" Then Else e.Cancel = True MessageBox.Show("你无权访问他人目录!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) End If 【网址】 http://www.foxtable.com/webhelp/ |
-- 作者:有点蓝 -- 发布时间:2019/8/8 8:59:00 -- 没有问题。请认真看看这段代码前面的文字说明。 |
-- 作者:龙潭春早 -- 发布时间:2019/8/8 13:46:00 -- 蓝老师,之前就认真看过了。 感觉上面代码的两个 Then 后面,是不是还应该有针对 If 和 ElseIf 的代码呢? 就直接进入到 Else 了吗?
|
-- 作者:有点蓝 -- 发布时间:2019/8/8 13:59:00 -- 认真看过了?那来说一下,下面这句代码表示什么意思? If e.FolderName = "/" OrElse e.FolderName = "/公共" OrElse e.FolderName = "/" & User.Name Then 下面这句代码又表示什么意思? ElseIf User.Group = "经理" Then 然后重新理解一下if语句的语法:http://www.foxtable.com/webhelp/topics/0223.htm
|
-- 作者:龙潭春早 -- 发布时间:2019/8/8 14:11:00 -- 嗯 意思理解。 只是之前没有见过 Then 后面直接连用 ElseIf 和 Else 的,以为缺代码。 因为 If 语句的单分支、双分支和多分支三种形式,Then 后面都有代码1、代码2等。 如果蓝老师一再确认没有问题,那应该是没错的。 我们也要学习和应用这种用法。 多谢啦!
[此贴子已经被作者于2019/8/8 14:14:08编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/8/8 14:19:00 -- 说明还是木理解。例如 if user.name = "张三" orelse user.name = "李四" else msgbox("我既不是张三也不是李四") end if 和 if user.name <> "张三" andalso user.name <> "李四" msgbox("我既不是张三也不是李四") end if 效果都一样,但是第一段代码的效率会比第二段高,为什么呢?
|
-- 作者:龙潭春早 -- 发布时间:2019/8/9 13:59:00 -- 抱歉,昨天头儿临时叫去干活了。 楼上提到的效率问题: 之前研究开发指南的时候,在“开发指南/杂项/常见效率问题”的讲解中, 通过实测示例代码的效率,得出结论: 在查询中,“等于”比较是最高效的;其他任何形式的比较,效率都要低很多。 是这个原因吗?
[此贴子已经被作者于2019/8/9 14:07:26编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/8/9 14:06:00 -- 嗯嗯,是我搞错了,6楼的代码效率是一样的,只是用法不一样而已。 |
-- 作者:龙潭春早 -- 发布时间:2019/8/9 14:36:00 -- 又出现5楼的问题: 在“开发指南/工作流/数据的自动流转之一/8、…”中,又出现了 Then 后面没有代码,直接连用 ElseIf 和 Else 的情况。 【代码】 Dim jd As String = "1A"
\' 代码 …… If jd = "1B" AndAlso dr("进度") = "2A"
Then \'注意这里的处理技巧,意思是2A不能回到1B,3A不能回到2B ElseIf jd = "2B" AndAlso dr("进度") = "3A" Then Else dr("进度") = jd End If 【链接】http://www.foxtable.com/webhelp/topics/2264.htm 【疑问】 对于这类用法,能理解其语法结构,但是对其表述的逻辑关系又不是很明确。 对于一楼和本条中的代码,蓝老师能给明确的说明一下吗? 主要的问题是:“那么”以后,就怎么了呢? 语法表述: If(如果) 条件1 Then(那么) ElseIf(否则,如果) 条件2 Then(那么) Else(否则) \'代码 …… End If
|
-- 作者:有点蓝 -- 发布时间:2019/8/9 14:48:00 -- If e.FolderName = "/" OrElse e.FolderName = "/公共" OrElse e.FolderName = "/" & User.Name Then 每个用户可能访问自己的目录,所有用户都能访问名为“公共”以及根目录,如果符合此条件就不需要做任何处理 ElseIf User.Group = "经理" Then 不符合上面的添加,就会进来这里,再判断是否是经理,如果是,也不做任何处理,因为“如果用户分组为经理,则能访问所有用户的目录” Else 上面的条件都不符合,就进来这里,既然不符合条件就取消访问 e.Cancel = True 上面的用法等同于下面用法,如果实在不理解就用下面的用法吧 If e.FolderName <> "/" andalso e.FolderName <> "/公共" andalso e.FolderName <> "/" & User.Name andalso User.Group <> "经理" Then e.Cancel = True MessageBox.Show("你无权访问他人目录!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) end if
|