以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于重复和条件AB表自动写入 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131935) |
||||
-- 作者:工匠 -- 发布时间:2019/3/9 15:49:00 -- [求助]关于重复和条件AB表自动写入
请教下,关于不允许重复和表A根据条件,点击检查写入将部分列写入到表B,请帮看看怎么实现,谢谢! 1.在编辑表A时,是将1.2.3.4列文本合并到第六列的,如果第六列内容在表B的第六列没有相同的内容,在点击“检查写入”时,把表A1.2.3.4列内容写入到表B的1.2.3.4列,并保持表A表B,否则不写入。 2.在编辑表B时,是将1.2.3.4列文本合并到第六列的,如果第六列内容在表B的第六列已经有相同的内容了,提示“第六列内容已经存在,请重新录入新的不重复内容”。(原表事件判断对编辑第六列有用,编辑1.2.3.4列没用) 谢谢! [此贴子已经被作者于2019/3/9 16:23:19编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/3/9 16:35:00 -- 1、自己补充完整 For Each r As Row In Tables("表A").Rows Dim dr As DataRow = DataTables("表B").Find("第一列=\'" & r("第一列") & "\' and 第二列 =\'" & r("第二列") & "\'") If dr Is Nothing Then dr = DataTables("表B").AddNew dr("第一列") = r("第一列") End If Next DataTables("表A").Save() DataTables("表B").Save() 2、去掉表B的DataColChanging事件代码 DataColChanged事件改为 Dim dr As DataRow = e.DataRow Select Case e.DataCol.Name Case "第一列","第二列","第三列","第四列" If dr.IsNull("第一列") = False AndAlso dr.IsNull("第一列") = False AndAlso dr.IsNull("第三列") = False AndAlso dr.IsNull("第四列") = False Then If e.DataTable.Compute("Count([_Identify])","第一列 = \'" & dr("第一列") & "\' And 第二列 = \'" & dr("第二列") & "\' And 第三列 = \'" & dr("第三列") & "\' And 第四列 = \'" & dr("第四列") & "\'") > 1 Then MessageBox.Show("已经存在相同型号和规格的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) e.DataRow(e.DataCol.Name) = e.OldValue \'取消输入 Else dr("第六列") = dr("第一列") & "" & dr("第二列") & "" & dr("第三列") & "" & dr("第四列") End If End If
End Select |