以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教自动复制行的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=165300) |
-- 作者:zhuoziwang -- 发布时间: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 -- 发布时间:2021/5/13 10:00:00 -- 比如“工资总表存档”已经有了某员工5月份工资,重复复制时,就判别已存在相同行,禁止复制 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2021/5/13 10:26:00 -- 蓝总,如果我想实现,重复复制就提醒我这种功能呢? 比如:利用姓名和月份做判别条件,如果数据接收表已经存在相同姓名和月份的行,就提醒,“禁止重复存档”
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2021/5/13 10:55:00 -- 解决了,谢谢蓝总 |