Foxtable(狐表)用户栏目专家坐堂 → if 语句总提示“应为语句结束”


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

主题:if 语句总提示“应为语句结束”

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
if 语句总提示“应为语句结束”  发帖心情 Post By:2012/8/22 23:08:00 [只看该作者]

各位老师,下面的语句哪里有问题,确定时总提示“应为语句结束”

If _UserName <> "开发者" Then
        For Each dr1 As DataRow In DataTables("授权表").Select("部门 = '" & _UserGroup & "' And 角色 In ('" & _UserRole & "')")
            If dr1.IsNull("可查看列") Then
                Tables(dr1("表名")).Visible = False
                Tables(dr1("表名")).AllowEdit = False
            ElseIf dr1.IsNull("可编辑列") Then
                Tables(dr1("表名")).AllowEdit = False
            Else
                For Each c As Col In dr1("表名").Cols
                    If c.name In (dr1("可查看列")) Then
                        c.Visible = True
                    ElseIf c.name In dr1(("可编辑列")) Then
                        c.AllowEdit = True
                    End If
                Next
            End If
        Next
 End If


 


此主题相关图片如下:qq截图20120822230601.jpg
按此在新窗口浏览图片

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


加好友 发短信
等级:幼狐 帖子:139 积分:1021 威望:0 精华:0 注册:2012/1/18 14:40:00
  发帖心情 Post By:2012/8/22 23:47:00 [只看该作者]

if c.name in dr1("可查看列") then

 

去掉 ()试一下


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


加好友 发短信
等级:幼狐 帖子:139 积分:1021 威望:0 精华:0 注册:2012/1/18 14:40:00
  发帖心情 Post By:2012/8/22 23:47:00 [只看该作者]

去掉外面的()

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


加好友 发短信
等级:幼狐 帖子:139 积分:1021 威望:0 精华:0 注册:2012/1/18 14:40:00
  发帖心情 Post By:2012/8/22 23:48:00 [只看该作者]

ElseIf c.name In dr1(("可编辑列")) Then
这句好像也应该为:

 

ElseIf c.name In dr1("可编辑列") Then


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/8/23 0:35:00 [只看该作者]

谢谢各位的回复,还是不行,可能不能用"in"做判断,后来只好把代码改成下面,麻烦了一些,但是可以了,跟大家分享一下,不知道狐爸有什么好办法?

If _UserName <> "开发者" Then
        For Each dr1 As DataRow In DataTables("授权表").Select("部门 = '" & _UserGroup & "' And 角色 In ('" & _UserRole & "')")
            If dr1.IsNull("可查看列") Then
                Tables(dr1("表名")).Visible = False
                Tables(dr1("表名")).AllowEdit = False
            ElseIf dr1.IsNull("可编辑列") Then
                Tables(dr1("表名")).AllowEdit = False
            Else
                For Each tb As Table In Tables
                    If tb.name = dr1("表名") Then
                        For Each c As Col In tb.Cols
                            Dim a As String = c.name
                            If dr1("可查看列").contains(a) Then
                                c.Visible = True
                            ElseIf dr1("可编辑列").contains(a) Then
                                c.AllowEdit = True
                            Else
                                c.Visible = False
                                c.AllowEdit = False
                            End If
                        Next
                    End If
                Next
            End If
        Next
    End If


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/8/23 7:50:00 [只看该作者]

if c.name in dr1("可查看列") then   行吗?没有试过  没有这样的写法的吧.


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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2012/8/23 9:07:00 [只看该作者]

For Each c As Col In dr1("表名").Cols
dr是datarow,表示行,没有cols属性的吧

 

for each ...in..

 

next

这整个是一个语句,in不是一个语句,你搞错了

[此贴子已经被作者于2012-8-23 9:13:08编辑过]

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


加好友 发短信
等级:幼狐 帖子:139 积分:1021 威望:0 精华:0 注册:2012/1/18 14:40:00
  发帖心情 Post By:2012/8/23 11:11:00 [只看该作者]

现在才明白你的意思

不是 in 语句不能用,而是你在用的时候,语法错误了

 

你的dr1("表名")中应该是一个字符串吧,存放各个col名

 

in 的用法是:

if  col.name in ('xxx1','xxx2','xxx3'....)

 

所以如果你要用 in 的话,应该对dr1("表名")进行一下转换,转换成  ('xxx1','xxx2','xxx3'....)才可以

 

因此,直接用string的contains方便一点

 


 回到顶部