以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127272)

--  作者:最嗨魔女呜啦啦
--  发布时间:2018/11/9 17:16:00
--  窗口问题

图片点击可在新窗口打开查看此主题相关图片如下:g(pwczwl(rmzzg~h0nbaxl.png
图片点击可在新窗口打开查看

如图我想实现的是若我没有点击添加缺勤项目,我是无法在病假天数和事假天数两列填写数据的
因此我在窗口afterload里面写了
DataTables("月度考核填报_Table1").DataCols("病假天数").AllowEdit = False
DataTables("月度考核填报_Table1").DataCols("事假天数").AllowEdit = False

在表事件(表类型是查询表)里
图片点击可在新窗口打开查看此主题相关图片如下:bxo}rn7u~j}su1iyf5_(6n.png
图片点击可在新窗口打开查看
afterselrange事件里写了代码:
DataTables("月度考核填报_Table1").DataCols("病假天数").AllowEdit = False
Dim c As Col = e.Table.Cols(e.NewRange.ColSel)
Select Case c.name
  Case "病假天数","事假天数"
    messagebox.show("请点击添加缺勤项目按钮添加请假天数","提示")
End Select

但我在添加缺勤项目按钮里写DataTables("月度考核填报_Table1").DataCols("病假天数").AllowEdit = true
点击缺勤项目就会触发表afterselrange事件报错,如何实现我点击添加缺勤项目,病假天数和事假天数两列就可以编辑而且还要判断其中一列值不为空,最好是只能在缺勤项目这行编辑这两列

图片点击可在新窗口打开查看此主题相关图片如下:y$$usgmnqnkqkc39z)r9v.png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2018/11/9 17:28:00
--  

换一种思路,首先,表格允许编辑,然后,

 

startEdit事件,写代码

 

If e.row("考勤项目") <> "缺勤项目" Then

    If e.col.name = "病假天数" orelse e.col.name = "事假天数" Then

        e.cancel = true

    End If

Else

   

End If


--  作者:最嗨魔女呜啦啦
--  发布时间:2018/11/9 18:10:00
--  
搞定啦  谢谢甜老师   再请教个问题  能不能在保存按钮判断下,如果病假天数或者事假天数没填写就messagebox下填0
--  作者:有点甜
--  发布时间:2018/11/9 18:15:00
--  

Dim fdr = DataTables("月度考核填报_Table1").Find("考勤项目 = \'缺勤项目\' and (病假天数 is null or 事假天数 is null)")

If fdr IsNot Nothing Then

    msgbox("有病假、事假没填")

    DataTables("月度考核填报_Table1").replacefor("病假天数", 0, "考勤项目 = \'缺勤项目\' and 病假天数 is null")

    DataTables("月度考核填报_Table1").replacefor("事假天数", 0, "考勤项目 = \'缺勤项目\' and 事假天数 is null")

End If