以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  窗口输入权限  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=120842)

--  作者:cxmxjwlmq
--  发布时间:2018/6/25 0:20:00
--  窗口输入权限

各位老师:

    我在窗口中输入数值,想要的效果是:当是开发者登陆时,可以全部编辑,当登陆者的姓名等于当前行检验员的姓名时,才能编辑当前行。(也就是登陆者只能编辑自己的行),但是试运行时,有时能达到想要的效果,有时不能,特别是组合框,请老师指点编码错在什么地方了。

   表的数据是外部数据

    窗口ENTER事件编码如下: 

 

If e.Sender.Name.SubString(0,4) = "_cmb" Then \'如果名称符合
    Dim cmb As WinForm.ComboBox = e.Sender
     If cmb.Items.Count > 0 Then  \'如果已经设置了项目
        Return \'则返回
    End If
     Dim t  As  Table = cmb.BindTable \'获得绑定的Table
     Dim c As Col = cmb.BindCol \'获得绑定的Col
     Dim dr As  DataRow =  DataTables("组合框代码").Find("[表] = \'" & t.Name & "\' And [列] = \'" & c.Name &  "\'")
     If dr IsNot Nothing Then  \'如果在项目表找到对应的行
        cmb.Combolist = dr("列表项目") \'则设置列表项目
    End If
 End  If

Dim ctl As WinForm.Control = e.Sender
Dim r As Row = Tables("制造质量管理").Current  \'定义当前行检验员姓名
If r IsNot Nothing Then
  If User.Name = "开发者" Then
     ctl.ReadOnly = BooleanEnum.False \'允许编辑
   Else
     If User.Name = r("检验员") Then  \'如果登陆者姓名等于当前行检验员姓名
         ctl.ReadOnly = BooleanEnum.False \'允许编辑
      Else
         ctl.ReadOnly = BooleanEnum.True \'否则禁止编辑
     End If
   End If
End If

 

   谢谢!


--  作者:有点甜
--  发布时间:2018/6/25 9:03:00
--  

加入msgbox,看弹出什么东西。

 

msgbox(e.Sender.Name.SubString(0,4))
If e.Sender.Name.SubString(0,4) = "_cmb" Then \'如果名称符合
    Dim cmb As WinForm.ComboBox = e.Sender
    If cmb.Items.Count > 0 Then  \'如果已经设置了项目
    Else
        Dim t  As  Table = cmb.BindTable \'获得绑定的Table
        Dim c As Col = cmb.BindCol \'获得绑定的Col
        Dim dr As  DataRow =  DataTables("组合框代码").Find("[表] = \'" & t.Name & "\' And [列] = \'" & c.Name &  "\'")
        If dr IsNot Nothing Then  \'如果在项目表找到对应的行
            cmb.Combolist = dr("列表项目") \'则设置列表项目
        End If
    End If
End  If
Dim ctl As WinForm.Control = e.Sender
Dim r As Row = Tables("制造质量管理").Current  \'定义当前行检验员姓名
If r IsNot Nothing Then
    msgbox(r("检验员"))
    If User.Name = "开发者" Then
        ctl.ReadOnly = BooleanEnum.False \'允许编辑
    Else
        If User.Name = r("检验员") Then  \'如果登陆者姓名等于当前行检验员姓名
            ctl.ReadOnly = BooleanEnum.False \'允许编辑
        Else
            ctl.ReadOnly = BooleanEnum.True \'否则禁止编辑
        End If
    End If
End If

 


--  作者:cxmxjwlmq
--  发布时间:2018/6/25 10:12:00
--  

甜老师:

   1、加上后弹出PANE、BUUT、_CMB等。但没有达到预期的效果。再上传附件,请多指点!

   2、 同时:在整车质量报表中,我想达到如下效果:

        导出质量报表按钮中:Sheet(2,0).Value = Date.Today \'第二行第九列赋值   这个单元格的值等窗口中DateTimePicker1的值。(如2018-04-29)
                                    Sheet(3,0).Value = Date.Today \'第二行第九列赋值   这个单元格的值等窗口中DateTimePicker2的值。(如2018-04-01)

        在日报表中统计当日总检交检当量,合格数量,在月报表中统计本月总检交检数量,合格数量。

  3、你看按钮的代码有点乱,你看能不能优化一下?

谢谢,劳你费心!

  开发者密码:888,其它人员是人员名称每个字的第一个拼音!

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:整车制造部质量管理系统w4.rar

[此贴子已经被作者于2018/6/25 10:13:44编辑过]

--  作者:有点甜
--  发布时间:2018/6/25 10:20:00
--  

1、数据库发上来。

 

2、Sheet(2,0).Value = e.form.controls("DateTimePicker1的").Text

 

3、直接拷贝2楼代码粘贴进去,点击进入控件后,弹出什么值?


--  作者:cxmxjwlmq
--  发布时间:2018/6/25 14:47:00
--  

甜老师:数据库文件。请查收


--  作者:有点甜
--  发布时间:2018/6/25 16:13:00
--  
请正确打包数据库文件上传上来,文件大小不能超过2M
--  作者:cxmxjwlmq
--  发布时间:2018/6/26 1:51:00
--  

甜老师:请指教!

当登陆者的姓名等于当前行第三列的姓名时,才能编辑当前行。(也就是登陆者只能编辑自己的行),但是试运行时,有时能达到想要的效果,有时不能,特别是组合框,请老师指点编码错在什么地方了。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:有点甜
--  发布时间:2018/6/26 9:09:00
--  

你到底有没有认真看2楼代码?

 

If e.Sender.Name.SubString(0,4) = "_cmb" Then \'如果名称符合
    Dim cmb As WinForm.ComboBox = e.Sender
    If cmb.Items.Count > 0 Then  \'如果已经设置了项目
       
    Else

        Dim t  As  Table = cmb.BindTable \'获得绑定的Table
        Dim c As Col = cmb.BindCol \'获得绑定的Col
        Dim dr As  DataRow =  DataTables("表B").Find("[第一列] = \'" & t.Name & "\' And [第二列] = \'" & c.Name &  "\'")
        If dr IsNot Nothing Then  \'如果在项目表找到对应的行
            cmb.Combolist = dr("第三列") \'则设置列表项目
        End If
    End If
End  If
Dim ctl As WinForm.Control = e.Sender
Dim r As Row = Tables("表A").Current
If r IsNot Nothing Then
    If User.Name = r("第三列") Then
        ctl.ReadOnly = BooleanEnum.False \'允许编辑
    Else
        ctl.ReadOnly = BooleanEnum.True \'禁止编辑
    End If
End If


--  作者:cxmxjwlmq
--  发布时间:2018/6/26 12:17:00
--  

谢谢甜老师!

    是我的错呀!发后仔细逐字逐句的看!