Foxtable(狐表)用户栏目专家坐堂 → 自动删除行


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

主题:自动删除行

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


加好友 发短信
等级:婴狐 帖子:40 积分:376 威望:0 精华:0 注册:2012/1/3 17:14:00
自动删除行  发帖心情 Post By:2012/1/8 19:27:00 [只看该作者]

以下是开发指南中自动复制行的公式

动复制行

定表A有个逻辑列,希望在某行选中此逻辑列时,自动将此行复制到表B。

为此可以将表A的DataColChanged事件代码设置为:

If e.DataCol.Name = "逻辑列名" AndAlso e.DataRow("逻辑列名") = True Then
     Dim dr As DataRow = DataTables("表B").AddNew
    
For Each dc As DataCol In DataTables("B").DataCols
         dr(dc.Name) = e.DataRow(dc.Name)
    
Next
End
If

上面的代码假定表A和表B的结构相同,且列名相同。

如果列名不同,或者只需复制部分列,可以参考下面的代码:

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



如果"逻辑列名"选择以后A表自动复制数据到B表,如果撒消选择后把复制的数据删除,那么以上的公式如何修改?


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


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
功能咨询  发帖心情 Post By:2012/1/8 20:47:00 [只看该作者]

楼主:需要在表B 中加入一列"id"

If e.DataCol.Name = "逻辑列名" Then
    If e.DataRow("逻辑列名") = True Then
        Dim dr As DataRow = DataTables("表B").AddNew
        For Each dc As DataCol In DataTables("表B").DataCols
            If dc.name ="id" Then
                dr("id") =e.DataRow("_identify")
            Else
                dr(dc.Name) = e.DataRow(dc.Name)
            End If
        Next
    Else
        Dim tr As DataRow =DataTables("表B").find("id ="& e.DataRow("_identify"))
        If tr IsNot Nothing Then
            tr.delete()
        End If
    End If
End If


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


加好友 发短信
等级:婴狐 帖子:40 积分:376 威望:0 精华:0 注册:2012/1/3 17:14:00
  发帖心情 Post By:2012/1/9 20:38:00 [只看该作者]

好像不行,另个ID列作用是什么,能说明一下吗

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2012/1/9 20:51:00 [只看该作者]

看看这个

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:根据√选数据移动和删除.table


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/1/9 21:11:00 [只看该作者]

判断逻辑列= false 后

dr(dc.Name) = e.DataRow(dc.Name)  改为:dr(dc.Name) = nothing


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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2012/1/9 21:28:00 [只看该作者]

以下是引用chan1997在2012-1-9 20:38:00的发言:
好像不行,另个ID列作用是什么,能说明一下吗

4楼表A窗口应是你所要


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


加好友 发短信
等级:婴狐 帖子:40 积分:376 威望:0 精华:0 注册:2012/1/3 17:14:00
  发帖心情 Post By:2012/1/11 18:34:00 [只看该作者]

4楼的表A如果是删除行,表B对应记录的行能同时删除,公式该如何修改?

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/1/12 7:37:00 [只看该作者]

Datatables("表B").Deletefor("列名='" & 表A相对应的条件 & "'")

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


加好友 发短信
等级:婴狐 帖子:40 积分:376 威望:0 精华:0 注册:2012/1/3 17:14:00
  发帖心情 Post By:2012/1/12 15:58:00 [只看该作者]

Datatables("表B").Deletefor("列名='" & 表A相对应的条件 & "'")
以上的公式能帮我在4楼的文件表A公式里插入,改成我要的效果吗?

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/1/12 17:46:00 [只看该作者]

设置表A的DataRowDeleting事件为:

 

Dim dr As DataRow = DataTables("表B").Find("ID = " & e.DataRow("_Identify"))
If dr IsNot Nothing Then
    dr.Delete
End If
dr = DataTables("表C").Find("ID = " & e.DataRow("_Identify"))
If dr IsNot Nothing Then
    dr.Delete
End If

 

这样在表A删除行,会自动删除表B和表C对应的行。


 回到顶部
总数 13 1 2 下一页