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


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

主题:自动复制行问题

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


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
自动复制行问题  发帖心情 Post By:2013/10/21 23:04:00 [只看该作者]

开发指南自动复制行

If e.DataCol.Name = "逻辑列名" AndAlso e.DataRow("逻辑列名") = True Then
    Dim nma() As String = {"A1","A2","A3","A4"}
'A表数据来源列
    Dim nmb() As String = {"B1"
,"B2","B3","B4"} 'B表数据接收列
    Dim dr As DataRow = DataTables("表B"
).AddNew
   
For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
   
Next
End
If

 

要是不用逻辑列名,改用字符型的列如:

 

If e. DataCol.Name="客户" and AndAlso e.DataRow("客户")="AAA"

 Dim nma() As String = {"A1","A2","A3","A4"} 'A表数据来源列
    Dim nmb() As String = {"B1"
,"B2","B3","B4"} 'B表数据接收列
    Dim dr As DataRow = DataTables("表B"
).AddNew
   
For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
   
Next
End
I

 

问题是每次重置列后,都会复制一遍,怎样才能只复制一次?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/10/21 23:08:00 [只看该作者]

 这样的话,就需要在表B里存储表A的_Identify列。

 在新增复制之前,先用find查找表B是否有表A当前行的内容(比较_Identify),有就不新增/复制。
[此贴子已经被作者于2013-10-21 23:08:55编辑过]

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


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
  发帖心情 Post By:2013/10/21 23:39:00 [只看该作者]

能帮我写出代码吗?我现在还不行?

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


加好友 发短信
等级:一尾狐 帖子:431 积分:3214 威望:0 精华:2 注册:2011/9/10 21:35:00
  发帖心情 Post By:2013/10/22 1:58:00 [只看该作者]

你再增加一个辅助列得了:逻辑列“已复制”。然后代码加一点点进去:

if e.DataRow("已复制") = false then

e.DataRow("已复制") = true

   

    If e.DataCol.Name = "逻辑列名" AndAlso e.DataRow("逻辑列名") = True Then
    Dim nma() As String = {"A1","A2","A3","A4"}
'A表数据来源列
    Dim nmb() As String = {"B1"
,"B2","B3","B4"} 'B表数据接收列
    Dim dr As DataRow = DataTables("表B"
).AddNew
   
For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
   
Next
    End
If

 

end if


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


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
  发帖心情 Post By: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
    Dim nma() As String = {"A1","A2","A3","A4"}
'A表数据来源列
    Dim nmb() As String = {"B1"
,"B2","B3","B4"} 'B表数据接收列
    Dim dr As DataRow = DataTables("表B"
).AddNew
   
For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
   
Next
    End
If

 

end if

谢谢!这样可以解决重复复制的问题,但我希望没有手动点击的动作,将复合条件的行完全自动复制到另一张表。


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


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
  发帖心情 Post By: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"
    Dim nma() As String = {"_Identify","StokvisPN","CustomerCode","实际发货数量"}
    Dim nmb() As String = {"调拨ID","StokvisPN","客户编码","数量"}
  
    Dim dr As DataRow= DataTables("VMI1入库")
    dr = e.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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
  发帖心情 Post By:2013/10/22 22:11:00 [只看该作者]

刚试过了,报错“编译错误,变量dr在封闭块中隐藏变量“,错误代码: Dim dr As DataRow = DataTables("VMI1入库").AddNew

 

记得其它项目代码也有类似的报错,你让将所有的dr改成ndr就好了,我这次也试了ndr,还是报错。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/10/22 22:16:00 [只看该作者]

 呃,给dr命名成一个新的名字呗。任意取一个名字。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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编辑过]

 回到顶部
总数 27 1 2 3 下一页