Foxtable(狐表)用户栏目专家坐堂 → 当前行自动填充


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

主题:当前行自动填充

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


加好友 发短信
等级:婴狐 帖子:32 积分:344 威望:0 精华:0 注册:2014/9/1 14:43:00
当前行自动填充  发帖心情 Post By:2014/9/16 8:46:00 [只看该作者]

通过表A下的窗口Button1的click,将当前行数据自动新增填充到表B(两表结构相似,大部分列名称相同),但是多次单击click会针对当前行在表B新增填充多条雷同行,有没有办法依据两表"人员编码"列当前行是否一致,不一致则填充到表B,一致则返回不填充并锁定当前行?click事件代码如下:

   Tables("体检人员清单").Current.Save()
Dim r As Row = Tables("体检人员清单").Current
Dim  dr As DataRow  = DataTables("体检登记流水").Addnew
dr("人员编码") = r("人员编码")
dr("体检序号") = r("体检序号")
dr("姓名")= r("姓名")
dr("性别") = r("性别")
dr("村") = r("村")
dr("组") = r("组")
dr("出生日期") = r("出生日期")
dr("身份证号") = r("身份证号")
dr("管理属性") = r("管理属性")
dr("联系电话") = r("联系电话")
dr("体检时间") = r("体检时间")

另外,在此窗口Button2的click事件里面,写入了撤销以上填充操作的代码,以实现判断两表当前行人员编码是否一致,一致则删除表B当前行的目的,但是执行到表B无当前行的时候,便会出现"未将对象引用设置到对象实例"的报错,我的代码如下:

If Tables("体检人员清单").Current.DataRow("人员编码") = Tables("体检登记流水").Current.DataRow("人员编码") Then '如果流水表和人员清单表当前行的人员编码相同
        Tables("体检登记流水").Current.Delete   '那么删除流水表的当前行
    Else 
        If Tables("体检登记流水").rows.count = 0 Then '否则判断如果流水表不是Nothing
         Tables("体检人员清单").Current.Locked = False    '那么解锁清单表当前行
     End If
End If

以上代码应该怎样改,谢谢各位老师了,琢磨了一晚上没弄好,谢谢!


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/9/16 8:52:00 [只看该作者]

1. 利用FIND找到是否有相同行 http://www.foxtable.com/help/topics/0396.htm

2. 要判断一下当前行是否为空 if Tables("体检人员清单").Current isnot nothing then  再执行其他

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


加好友 发短信
等级:婴狐 帖子:32 积分:344 威望:0 精华:0 注册:2014/9/1 14:43:00
  发帖心情 Post By:2014/9/16 10:26:00 [只看该作者]

谢谢,虽然不是用find,但总算是解决了,Button1代码如下:

If Tables("体检登记流水").Current Is Nothing Then  '如果体检登记流水表当前行为空
      Dim r As Row = Tables("体检人员清单").Current
      Dim  dr As DataRow  = DataTables("体检登记流水").Addnew
        dr("人员编码") = r("人员编码")
        dr("体检序号") = r("体检序号")
        dr("姓名")= r("姓名")
        dr("性别") = r("性别")
        dr("村") = r("村")
        dr("组") = r("组")
        dr("出生日期") = r("出生日期")
        dr("身份证号") = r("身份证号")
        dr("管理属性") = r("管理属性")
        dr("联系电话") = r("联系电话")
        dr("体检时间") = r("体检时间")
     ElseIf Tables("体检登记流水").Current IsNot Nothing Then  '如果体检登记流水表当前行不为空
         If Tables("体检人员清单").Current.DataRow("人员编码") <> Tables("体检登记流水").Current.DataRow("人员编码") Then '如果体检人员清单表和体检登记流水表当前行的人员编码不同
       Dim r As Row = Tables("体检人员清单").Current
       Dim  dr As DataRow  = DataTables("体检登记流水").Addnew
        dr("人员编码") = r("人员编码")
        dr("体检序号") = r("体检序号")
        dr("姓名")= r("姓名")
        dr("性别") = r("性别")
        dr("村") = r("村")
        dr("组") = r("组")
        dr("出生日期") = r("出生日期")
        dr("身份证号") = r("身份证号")
        dr("管理属性") = r("管理属性")
        dr("联系电话") = r("联系电话")
        dr("体检时间") = r("体检时间")
    End If
End If

 

Button2代码如下:

If Tables("体检登记流水").Current IsNot Nothing Then  '如果体检登记流水表当前行不为空
    If Tables("体检人员清单").Current.DataRow("人员编码") = Tables("体检登记流水").Current.DataRow("人员编码") Then '如果体检人员清单表和体检登记流水表当前行的人员编码相同
     Tables("体检登记流水").Current.Delete   '那么删除流水表的当前行
    End If
End If

 

 

还是要感谢Bin老师!!!

 

 

 

 


 回到顶部