以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 自动复制行问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=41531) |
-- 作者:tj-pacer -- 发布时间:2013/10/21 23:04:00 -- 自动复制行问题 开发指南自动复制行 If e.DataCol.Name = "逻辑列名" AndAlso e.DataRow("逻辑列名") = True Then
要是不用逻辑列名,改用字符型的列如:
If e. DataCol.Name="客户" and AndAlso e.DataRow("客户")="AAA" Dim nma() As String = {"A1","A2","A3","A4"} \'A表数据来源列
问题是每次重置列后,都会复制一遍,怎样才能只复制一次? |
-- 作者:有点甜 -- 发布时间:2013/10/21 23:08:00 -- 这样的话,就需要在表B里存储表A的_Identify列。 在新增复制之前,先用find查找表B是否有表A当前行的内容(比较_Identify),有就不新增/复制。
[此贴子已经被作者于2013-10-21 23:08:55编辑过]
|
-- 作者:tj-pacer -- 发布时间:2013/10/21 23:39:00 -- 能帮我写出代码吗?我现在还不行? |
-- 作者:yan2006l -- 发布时间:2013/10/22 1:58:00 -- 你再增加一个辅助列得了:逻辑列“已复制”。然后代码加一点点进去: if e.DataRow("已复制") = false then e.DataRow("已复制") = true
If e.DataCol.Name = "逻辑列名" AndAlso e.DataRow("逻辑列名") = True Then
end if |
-- 作者:tj-pacer -- 发布时间:2013/10/22 6:18:00 -- 以下是引用yan2006l在2013-10-22 1:58:00的发言:
你再增加一个辅助列得了:逻辑列“已复制”。然后代码加一点点进去: if e.DataRow("已复制") = false then e.DataRow("已复制") = true
If e.DataCol.Name = "逻辑列名" AndAlso e.DataRow("逻辑列名") = True Then
end if 谢谢!这样可以解决重复复制的问题,但我希望没有手动点击的动作,将复合条件的行完全自动复制到另一张表。 |
-- 作者:tj-pacer -- 发布时间:2013/10/22 7:46:00 -- 以下是引用有点甜在2013-10-21 23:08:00的发言:
这样的话,就需要在表B里存储表A的_Identify列。 在新增复制之前,先用find查找表B是否有表A当前行的内容(比较_Identify),有就不新增/复制。
[此贴子已经被作者于2013-10-21 23:08:55编辑过] A表_Identify的添加到表B(VMI1)的“调拨ID”列,下面的代码还是有错误,不知如何改,请指教,谢谢! If e.DataCol.Name = "CustomerCode" AndAlso e.DataRow("CustomerCode") = "LOMBJ" |
-- 作者:有点甜 -- 发布时间:2013/10/22 20:57:00 -- 试试这样改 If e.DataCol.Name = "CustomerCode" AndAlso e.DataRow("CustomerCode") = "LOMBJ" Dim nma() As String = {"_Identify","StokvisPN","CustomerCode","实际发货数量"} Dim nmb() As String = {"调拨ID","StokvisPN","客户编码","数量"} Dim dr As DataRow dr = DataTables("VMI1入库").Find("调拨ID = \'" & e.NewValue & "\'") If dr IsNot Nothing Then e.Cancel = True Else Dim dr As DataRow = DataTables("VMI1入库").AddNew For i As Integer = 0 To nma.Length - 1 dr(nmb(i)) = e.DataRow(nma(i)) Next End If End If |
-- 作者:tj-pacer -- 发布时间:2013/10/22 22:11:00 -- 刚试过了,报错“编译错误,变量dr在封闭块中隐藏变量“,错误代码: Dim dr As DataRow = DataTables("VMI1入库").AddNew
记得其它项目代码也有类似的报错,你让将所有的dr改成ndr就好了,我这次也试了ndr,还是报错。 |
-- 作者:有点甜 -- 发布时间:2013/10/22 22:16:00 -- 呃,给dr命名成一个新的名字呗。任意取一个名字。 |
-- 作者:有点甜 -- 发布时间:2013/10/22 22:17:00 -- If e.DataCol.Name = "CustomerCode" AndAlso e.DataRow("CustomerCode") = "LOMBJ" Dim nma() As String = {"_Identify","StokvisPN","CustomerCode","实际发货数量"} Dim nmb() As String = {"调拨ID","StokvisPN","客户编码","数量"} Dim dr As DataRow ndr = DataTables("VMI1入库").Find("调拨ID = \'" & e.NewValue & "\'") If ndr IsNot Nothing Then e.Cancel = True Else Dim nnnnndr As DataRow = DataTables("VMI1入库").AddNew For i As Integer = 0 To nma.Length - 1 nnnnndr(nmb(i)) = e.DataRow(nma(i)) Next End If End If
[此贴子已经被作者于2013-10-22 22:17:14编辑过]
|