Foxtable(狐表)用户栏目专家坐堂 → 【求助】按条件删除的代码编写问题


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

主题:【求助】按条件删除的代码编写问题

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


加好友 发短信
等级:幼狐 帖子:122 积分:1061 威望:0 精华:0 注册:2014/12/25 23:48:00
【求助】按条件删除的代码编写问题  发帖心情 Post By:2015/6/13 13:04:00 [只看该作者]

Dim nma() As String = { "1","2","3" } 'A表数据来源列
Dim nmb() As String = { "1","2","3" } 'B表数据接收列
Dim Result As DialogResult
Dim dr As DataRow
Dim dc As String = e.DataCol.Name
Select Case dc
    Case "01"     ‘01为表A的逻辑列
        If e.DataCol.Name = "01" AndAlso  e.DataRow("01")=True Then    如果01为true
            dr = DataTables("表B").AddNew                      表B增加行
            For i As Integer = 0 To nma.Length - 1
                dr(nmb(i)) = e.DataRow(nma(i))                     将nma的值复制到nmb
                dr("4")=e.DataCol.Name                            将逻辑列01的列名作为表B4列的值
            Next         
        Else             如果01为false进行条件判断删除表B符合条件的行
            If e.DataTables("表B").DataRow.IsNull("5") = False Then              '如果表B5列不为空
            Result = MessageBox.Show("只有部门主管才能删除行,是否删除行?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)  提示
                If Result = DialogResult.OK Then    选ok表B删除相应行
                     Tables("表B").Current.Locked = False 
                      DataTables("表B").DeleteFor("[1]= '"& e.DataRow("1") & "'and [5]='" & e.DataCol.Name & "'")
                Else

                 e.Cancel = True '取消删除操作
                End If
             End If
        End If

 

 If e.DataTables("表B").DataRow.IsNull("5") = False Then  老是报错,说无法索引。

请老师看一下涂黄部分该怎么写才对。

主要实现以下功能:

A表是当前表。通过A表中逻辑列的状态实现B表的编辑。

当逻辑列为真时,复制A表内容到B表。

当逻辑列为假时,将B表对应行删除。但删除的前提是B表中的特定列(X)的值为空。不为空值是提示是否删除。


[此贴子已经被作者于2015/6/13 16:13:45编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/6/13 14:34:00 [只看该作者]

If e.DataTables("表B").DataRow.IsNull("B5") = False Then    

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


加好友 发短信
等级:幼狐 帖子:122 积分:1061 威望:0 精华:0 注册:2014/12/25 23:48:00
  发帖心情 Post By:2015/6/13 15:05:00 [只看该作者]

代码是写在表datacolchanged 事件里,

提示“编译错误:”datatables“不是”datacoleventargs“


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/6/13 15:15:00 [只看该作者]

If DataTables("表B").DataRow.IsNull("B5") = False Then    

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


加好友 发短信
等级:幼狐 帖子:122 积分:1061 威望:0 精华:0 注册:2014/12/25 23:48:00
  发帖心情 Post By:2015/6/13 15:30:00 [只看该作者]

还是不行“datarow”不是datatable的成员

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/6/13 15:39:00 [只看该作者]

你表B是当前表 还是表A是当前表?

看不懂你想干啥

Tables("表B").Current.IsNull("B5") = False Then 

这个意思?

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


加好友 发短信
等级:幼狐 帖子:122 积分:1061 威望:0 精华:0 注册:2014/12/25 23:48:00
  发帖心情 Post By:2015/6/13 16:24:00 [只看该作者]

主要实现以下功能:

A表是当前表。通过A表中逻辑列的状态实现B表的编辑。

当逻辑列为真时,复制A表内容到B表。

当逻辑列为假时,将B表对应行删除。但删除的前提是B表中的特定列(X)的值为空。不为空值是提示是否删除。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/14 10:57:00 [只看该作者]

去看find函数

 

http://www.foxtable.com/help/topics/0396.htm

 

[此贴子已经被作者于2015/6/14 10:57:31编辑过]

 回到顶部