以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 改变当前列的方法是什么 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=96536) |
-- 作者:zhangchi96 -- 发布时间:2017/2/22 20:58:00 -- 改变当前列的方法是什么 在窗体中插入表,绑定表【职工信息】,鼠标选定了的列为【性别】,则当前列为“性别”, 在保存这个表时,为了不触发某些代码,要不论当前列是什么,都统一改为【身份证号】,请问怎么写代码?
|
-- 作者:有点色 -- 发布时间:2017/2/23 2:12:00 --
不理解你为什么要这样做,会触发什么事件什么代码?切换为 身份证号 又会怎样? |
-- 作者:zhangchi96 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2017/2/23 9:09:00 -- 你这个逻辑有点矛盾。既然不想触发就不要写这个事件。 |
-- 作者:有点色 -- 发布时间:2017/2/23 11:23:00 -- 1、代码为什么写在AfterSelchange?单独做一个按钮处理不行?
2、你本来要做什么?在窗口不需要这个功能? |
-- 作者:zhangchi96 -- 发布时间:2017/2/24 20:46:00 -- 【职工信息】表中显示的是2017年2月的职工信息,鼠标点击职工“李四”时,当前列为"月考分”, 要触发的理由: 此时当前行为“李四”,当前列为“月考分”,希望在鼠标点击时引起触发AfterSelchange事件,然后就读取“李四”的2016年1月到2017年1月的信息,并读取到表“教职工历月信息”中,这样当前表是2017年2月信息,同时又能看到“李四”在以前各个月中的“”月考分“”,以观察该职工的月考分变化情况。 不要触发的理由: 当对“职工信息”表进行逐行保存时,保存过程中设置了把每行作为当前行的语句,使得使用者能直观看到正在保存的行,但此时没有必要触发AfterSelchange事件的代码。 为此我希望在保存时,当前列改为“身份证号”列,多谢各位老师费心了,谢谢老师!
[此贴子已经被作者于2017/2/24 20:57:25编辑过]
|
-- 作者:有点蓝 -- 发布时间:2017/2/24 21:18:00 -- 定义一个全局变量做开关 AfterSelchange 事件 if vars("不处理") = false then \'原AfterSelchange 事件代码 end if 保存时 vars("不处理") = true \'原保存代码 vars("不处理") = false
|
-- 作者:zhangchi96 -- 发布时间:2017/2/24 22:39:00 -- 这个间接的方法我也想过,问这个问题就是也想了解一下,用代码设置当前列可不可以? |
-- 作者:有点蓝 -- 发布时间:2017/2/24 22:50:00 -- 列名是没有办法改变的。 改标题的话就不要使用name来判断,使用Caption,可以试试把代码改成 If C.Caption <> "姓名" And C.Caption <> "身份证号" 但是不建议这样做,用户体验很不好,用户会觉得莫名其妙,某个列突然就变了标题,而且标题和数据完全对应不上。
|
-- 作者:zhangchi96 -- 发布时间:2017/2/25 16:07:00 -- 谢谢老师,我就用7楼的方法,这个方法其他地方我也用过,挺有针对性,清楚明了,不容易引起莫名的错误。 |