以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 窗口输入权限 (http://foxtable.net/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,其它人员是人员名称每个字的第一个拼音!
[此贴子已经被作者于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
--
甜老师:请指教!
当登陆者的姓名等于当前行第三列的姓名时,才能编辑当前行。(也就是登陆者只能编辑自己的行),但是试运行时,有时能达到想要的效果,有时不能,特别是组合框,请老师指点编码错在什么地方了。
|
-- 作者:有点甜
-- 发布时间: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
--
谢谢甜老师!
是我的错呀!发后仔细逐字逐句的看!
|