Foxtable(狐表)用户栏目专家坐堂 → 改变当前列的方法是什么


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

主题:改变当前列的方法是什么

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


加好友 发短信
等级:二尾狐 帖子:550 积分:4985 威望:0 精华:0 注册:2012/2/11 13:27:00
改变当前列的方法是什么  发帖心情 Post By:2017/2/22 20:58:00 [只看该作者]

在窗体中插入表,绑定表【职工信息】,鼠标选定了的列为【性别】,则当前列为“性别”,

在保存这个表时,为了不触发某些代码,要不论当前列是什么,都统一改为【身份证号】,请问怎么写代码?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/23 2:12:00 [只看该作者]

 

 不理解你为什么要这样做,会触发什么事件什么代码?切换为 身份证号 又会怎样?


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


加好友 发短信
等级:二尾狐 帖子:550 积分:4985 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2017/2/23 7:57:00 [只看该作者]

在AfterSelchange 事件中我写了这样的代码,如果把当前列选定为身份证号,下面代码就不会执行了

Dim c As Col = e.Table.Cols(e.NewRange.ColSel)    'C  为当前列
Dim dr As Row
dr = e.Table.Rows(e.NewRange.rowSel)   'dr 为当前行
If C.Name <> "姓名" And C.Name <> "身份证号" Then '如果正在编辑的是[..]列
    With DataTables("教职工历月信息")
        .DataRows.Clear()
    End With
    '()---调数据库中的当月数据
    Dim mg As New Merger
    mg.SourcePath = ProjectPath &"\Data\数据库.mdb"    '指定数据文件
    mg.SourceTableName = "职工信息"
    mg.DataTableName = "职工历月信息"
    mg.Filter = " 身份证号 = '"& dr("身份证号") &"' "
    mg.FieldMaps.Add("台帐年月","台帐年月")
    mg.FieldMaps.Add("身份证号","身份证号")
    mg.FieldMaps.Add("姓名","姓名")
    mg.FieldMaps.Add( C.Name ,"信息列")
    mg.Merge()
    '-- 改列标题
    With DataTables("职工历月信息")
        .DataCols("信息列").Caption = C.Name
        .BuildHeader
    End With
End If

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/23 9:09:00 [只看该作者]

你这个逻辑有点矛盾。既然不想触发就不要写这个事件。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/23 11:23:00 [只看该作者]

1、代码为什么写在AfterSelchange?单独做一个按钮处理不行?

 

2、你本来要做什么?在窗口不需要这个功能?


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


加好友 发短信
等级:二尾狐 帖子:550 积分:4985 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2017/2/24 20:46:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

【职工信息】表中显示的是2017年2月的职工信息,鼠标点击职工“李四”时,当前列为"月考分”,

要触发的理由:
    此时当前行为“李四”,当前列为“月考分”,希望在鼠标点击时引起触发AfterSelchange事件,然后就读取“李四”的2016年1月到2017年1月的信息,并读取到表“教职工历月信息”中,这样当前表是2017年2月信息,同时又能看到“李四”在以前各个月中的“”月考分“”,以观察该职工的月考分变化情况。

不要触发的理由:
     当对“职工信息”表进行逐行保存时,保存过程中设置了把每行作为当前行的语句,使得使用者能直观看到正在保存的行,但此时没有必要触发AfterSelchange事件的代码。

为此我希望在保存时,当前列改为“身份证号”列,多谢各位老师费心了,谢谢老师!
[此贴子已经被作者于2017/2/24 20:57:25编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/24 21:18:00 [只看该作者]

定义一个全局变量做开关

AfterSelchange 事件
if vars("不处理") = false then
'原AfterSelchange 事件代码
end if

保存时
vars("不处理")  = true
'原保存代码
vars("不处理")  = false

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


加好友 发短信
等级:二尾狐 帖子:550 积分:4985 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2017/2/24 22:39:00 [只看该作者]

这个间接的方法我也想过,问这个问题就是也想了解一下,用代码设置当前列可不可以?

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/24 22:50:00 [只看该作者]

列名是没有办法改变的。

改标题的话就不要使用name来判断,使用Caption,可以试试把代码改成

If C.Caption <> "姓名" And C.Caption <> "身份证号" 

但是不建议这样做,用户体验很不好,用户会觉得莫名其妙,某个列突然就变了标题,而且标题和数据完全对应不上。

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


加好友 发短信
等级:二尾狐 帖子:550 积分:4985 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2017/2/25 16:07:00 [只看该作者]

谢谢老师,我就用7楼的方法,这个方法其他地方我也用过,挺有针对性,清楚明了,不容易引起莫名的错误。

 回到顶部