Foxtable(狐表)用户栏目专家坐堂 → 请教自动复制行的问题


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

主题:请教自动复制行的问题

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


加好友 发短信
等级:婴狐 帖子:38 积分:282 威望:0 精华:0 注册:2019/5/29 16:10:00
请教自动复制行的问题  发帖心情 Post By:2021/5/13 9:57:00 [只看该作者]

请教狐爸,我做了一个按钮,实现跨表自动复制行的功能。就是把表A的内容,自动复制到表B。如果我想做个判别,如果已经复制过,不再重复复制,该怎么做?

Dim Result As DialogResult
Result = MessageBox.Show("确定要存档吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    MessageBox.Show("切记,存档操作只可执行一次.","提示")
Dim f As New Filler
f.SourceTable = DataTables("工资总表") '指定数据
f.SourceCols = "姓名ID,姓名,部门,备注,计薪年月,病假,事假扣除,岗位工资,年功,加班费,绩效工资,卫生费,行车补贴,艰边津贴,中夜班补助,应发总额,交通补贴,养老保险,医疗保险,失业保险,住房公积金,本月所得税,水电房租,扣款总额,实发工资,通讯补贴,奖金,生育假,罚款,其他补贴" '指定数据来源列
f.DataTable = DataTables("工资总表存档") '指定数据接收表
f.DataCols = "姓名ID,姓名,部门,备注,计薪年月,病假,事假,岗位工资,年功,加班费,绩效工资,卫生费,行车补贴,艰边津贴,中夜班补助,应发总额,交通补贴,养老保险,医疗保险,失业保险,住房公积金,本月所得税,水电房租,扣款总额,实发工资,通讯补贴,奖金,生育假,罚款,其他补贴" '指定数据接收列
f.Fill() '
Else
    MessageBox.Show("再检查一下吧.","提示")
End If

也就是说:我已经存档过一次,不能重复存档,怎么做判别?

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


加好友 发短信
等级:婴狐 帖子:38 积分:282 威望:0 精华:0 注册:2019/5/29 16:10:00
  发帖心情 Post By:2021/5/13 10:00:00 [只看该作者]

比如“工资总表存档”已经有了某员工5月份工资,重复复制时,就判别已存在相同行,禁止复制

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/13 10:02:00 [只看该作者]

换种方式填充:http://www.foxtable.com/webhelp/topics/1533.htm

直接使用find查询一下是否有记录,比如:
Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim 
Cols2() As String = {"接收列一","接收列二","接收列三"}
For Each 
dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
    Dim dr2 As DataRow = DataTables("表B").find("编号='" & dr1("编号") & "'")
if dr2 is nothing then
    
dr2 = DataTables("表B").AddNew()
    For 
i As Integer = 0 To Cols1.Length -1
        
dr2(Cols2(i)) = dr1(Cols1(i
))
    Next
end if
Next

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


加好友 发短信
等级:婴狐 帖子:38 积分:282 威望:0 精华:0 注册:2019/5/29 16:10:00
  发帖心情 Post By:2021/5/13 10:26:00 [只看该作者]

蓝总,如果我想实现,重复复制就提醒我这种功能呢?

比如:利用姓名和月份做判别条件,如果数据接收表已经存在相同姓名和月份的行,就提醒,“禁止重复存档”

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/13 10:29:00 [只看该作者]

Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim 
Cols2() As String = {"接收列一","接收列二","接收列三"}
For Each 
dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
    Dim dr2 As DataRow = DataTables("表B").find("姓名='" & dr1("姓名") & "' and 月份='" & dr1("月份") & "'")
if dr2 is nothing then
    
dr2 = DataTables("表B").AddNew()
    For 
i As Integer = 0 To Cols1.Length -1
        
dr2(Cols2(i)) = dr1(Cols1(i
))
    Next
else
msgbox("禁止重复存档")
end if
Next

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


加好友 发短信
等级:婴狐 帖子:38 积分:282 威望:0 精华:0 注册:2019/5/29 16:10:00
  发帖心情 Post By:2021/5/13 10:55:00 [只看该作者]

解决了,谢谢蓝总

 回到顶部