Foxtable(狐表)用户栏目专家坐堂 → [讨论] 在线开发指南中的一个问题: 代码好像不全?


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

主题:[讨论] 在线开发指南中的一个问题: 代码好像不全?

美女呀,离线,留言给我吧!
龙潭春早
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
[讨论] 在线开发指南中的一个问题: 代码好像不全?  发帖心情 Post By: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/

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107648 积分:547549 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/8 8:59:00 [只看该作者]

没有问题。请认真看看这段代码前面的文字说明。

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/8/8 13:46:00 [只看该作者]

蓝老师,之前就认真看过了。

感觉上面代码的两个 Then 后面,是不是还应该有针对 If 和 ElseIf 的代码呢?

就直接进入到 Else 了吗?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107648 积分:547549 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/8/8 14:11:00 [只看该作者]

嗯 意思理解。

只是之前没有见过 Then 后面直接连用 ElseIf 和 Else 的,以为缺代码。

因为 If 语句的单分支、双分支和多分支三种形式,Then 后面都有代码1、代码2等。

如果蓝老师一再确认没有问题,那应该是没错的。

我们也要学习和应用这种用法。

多谢啦!
[此贴子已经被作者于2019/8/8 14:14:08编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107648 积分:547549 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

效果都一样,但是第一段代码的效率会比第二段高,为什么呢?

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/8/9 13:59:00 [只看该作者]

抱歉,昨天头儿临时叫去干活了。

楼上提到的效率问题:

之前研究开发指南的时候,在“开发指南/杂项/常见效率问题”的讲解中,

通过实测示例代码的效率,得出结论:

在查询中,“等于”比较是最高效的;其他任何形式的比较,效率都要低很多

是这个原因吗?
[此贴子已经被作者于2019/8/9 14:07:26编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107648 积分:547549 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/9 14:06:00 [只看该作者]

嗯嗯,是我搞错了,6楼的代码效率是一样的,只是用法不一样而已。

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/8/9 14:36:00 [只看该作者]

又出现5楼的问题:

在“开发指南/工作流/数据的自动流转之一/8、…”中,又出现了 Then 后面没有代码,直接连用 ElseIf 和 Else 的情况。

【代码】

Dim jd As String = "1A"
 ' 代码 ……
If jd = "1B" AndAlso dr("进度") = "2A" Then '注意这里的处理技巧,意思是2A不能回到1B3A不能回到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


 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107648 积分:547549 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
总数 11 1 2 下一页