Foxtable(狐表)用户栏目专家坐堂 → [原创]代码问题


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

主题:[原创]代码问题

帅哥哟,离线,有人找我吗?
爱相随
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/8/7 11:52:00 [只看该作者]

老师,还是不得行,比如A表和B表,A表是计划表,B表是申请表,由A表复制生成B表记录,在A表有个逻辑列用于记录计划编号在B表存不存在,如果复制到B表并存在相同的计划编号,则逻辑列为真,如果不存在,则为否。现在是如果复制后,A表的逻辑值是真,但把B表的数据删除后,A表的值不会变。代码是应该放在A表还是B表呢,我觉得应该是B表,但如果是B表的话,则代码需要修改,在A表值不会变。请老师指点
Dim dr As DataRow = DataTables("ZJJHB").Find("产品编号 = '" & e.DataRow("产品编号") & "'")
If
 dr IsNot Nothing Then
    e.Datarow("JZ") = False

End
 If

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/7 11:54:00 [只看该作者]

写在 B表申请表 BeforeDeleteDataRow事件

 

Dim dn As DataRow = DataTables("zjsqb").Find("[jhbh] = '" & e.DataRow("jhbh") & "'")
If dn IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
    dn("jz") = False
End If


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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/8/7 11:59:00 [只看该作者]

但判断值是在A,比如 dn("jz") = False应该是A表的值

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/7 12:03:00 [只看该作者]

以下是引用爱相随在2014-8-7 11:59:00的发言:
但判断值是在A,比如 dn("jz") = False应该是A表的值

 

写在 B表申请表 BeforeDeleteDataRow事件

 

Dim dn As DataRow = DataTables("zjsqb").Find("[jhbh] = '" & e.DataRow("jhbh") & "'")
If dn IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
    dn("jz") = False
End If


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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/8/7 12:15:00 [只看该作者]

老师,下面这段代码,如果已经审核,则只要光标移到该列,或者不小心将光标移到了该列,则会有不停的提示,无法退出。如果想要只有当双击单元格时,才提示信息不允许编辑,是需要修改代码,还是将下面代码换个地方就可以了??请老师帮助一下,谢谢
'下列代码为指定角色可以编辑哪些列
   If User.IsRole("子公司财务") Then
        Select Case e.Col.Name
            Case "SQDWCW1","SQDWCW"
                e.Cancel = False
               If E.Row.IsNULL("SQDWCW2") = True Then
                    e.Cancel = False                
              Else
                   MessageBox.Show("已审核,不能编辑")
              End If
        End Select
    ElseIf User.IsRole("总工办1") Then
        Select Case e.Col.Name
            Case "SHYJ","SH1","YYSM"
                e.Cancel = False
           If E.Row.IsNULL("SH") = True Then
                e.Cancel = False                  
             Else
                MessageBox.Show("已审核,不能编辑")
            End If
        End Select
    ElseIf User.IsRole("集团财务1") Then
        Select Case e.Col.Name
            Case "CWSH1","CWSH3","CWSH4","CWSH5"
                e.Cancel = False
                  If E.Row.IsNULL("cwsh2") = True Then
                    e.Cancel = False                  
                     Else
                     MessageBox.Show("已审核,不能编辑")
            End If
        End Select
End If
[此贴子已经被作者于2014-8-7 12:35:19编辑过]

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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/8/7 12:25:00 [只看该作者]

如果将上面的代码拆分为两段代码,分别放在PREPAREDIT和STARTEDIT两个地方,有提示,但还是能够编辑。
[此贴子已经被作者于2014-8-7 12:30:28编辑过]

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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/8/7 13:06:00 [只看该作者]

以下是引用有点甜在2014-8-7 12:03:00的发言:

 

写在 B表申请表 BeforeDeleteDataRow事件

 

Dim dn As DataRow = DataTables("zjsqb").Find("[jhbh] = '" & e.DataRow("jhbh") & "'")
If dn IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
    dn("jz") = False
End If


老师,是A表中有计划单编号,B表也有计划单编号,相对应的。B表的计划单编号由A表复制而来。A表有一列N是判断在B表是否有与A表计划单编号相同的行,如果有,则A表的N列为TRUE,如果没有对应的计划单编号,则A表的N列为FALSE。一般是马上复制后肯定为TRUE。但是,如果把B表计划单编号对应的行删除了,A表的计划单编号在B表找不到对应的计划单编号了,那A表的N列值就应自动变FALSE了。


[此贴子已经被作者于2014-8-7 13:08:19编辑过]

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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/8/7 15:31:00 [只看该作者]

以下是引用有点甜在2014-8-7 12:03:00的发言:

 

写在 B表申请表 BeforeDeleteDataRow事件

 

Dim dn As DataRow = DataTables("zjsqb").Find("[jhbh] = '" & e.DataRow("jhbh") & "'")
If dn IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
    dn("jz") = False
End If


老师,是A表中有计划单编号,B表也有计划单编号,相对应的。B表的计划单编号由A表复制而来。A表有一列N是判断在B表是否有与A表计划单编号相同的行,如果有,则A表的N列为TRUE,如果没有对应的计划单编号,则A表的N列为FALSE。一般是马上复制后肯定为TRUE。但是,如果把B表计划单编号对应的行删除了,A表的计划单编号在B表找不到对应的计划单编号了,那A表的N列值就应自动变FALSE了。上面的代码不执行


[此贴子已经被作者于2014-8-7 15:32:41编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/7 15:35:00 [只看该作者]

  回复18楼,你的意思就是,删除了表B数据的时候,把表A的数据设置成False啊

 

Dim dn As DataRow = DataTables("zjsqb").Find("[jhbh] = '" & e.DataRow("jhbh") & "'")
If dn IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
    dn("jz") = False
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/7 15:37:00 [只看该作者]

以下是引用爱相随在2014-8-7 12:25:00的发言:
如果将上面的代码拆分为两段代码,分别放在PREPAREDIT和STARTEDIT两个地方,有提示,但还是能够编辑。
[此贴子已经被作者于2014-8-7 12:30:28编辑过]

 

放在 PREPAREDIT 的代码,去掉MessageBox

 

同样复制代码到 Click 事件去。


 回到顶部
总数 40 上一页 1 2 3 4 下一页