Foxtable(狐表)用户栏目专家坐堂 → [讨论]指定列清除某一行数据内容后自动将各行数据上移且不影响其他列的数据位置


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

主题:[讨论]指定列清除某一行数据内容后自动将各行数据上移且不影响其他列的数据位置

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


加好友 发短信
等级:婴狐 帖子:26 积分:282 威望:0 精华:0 注册:2012/7/14 23:49:00
[讨论]指定列清除某一行数据内容后自动将各行数据上移且不影响其他列的数据位置  发帖心情 Post By:2012/7/29 11:59:00 [只看该作者]

各位,我在窗口设计中设置了一个删除按钮清除指定列的指定数据,

现在想实现清除某一行数据后能自动将下面各行数据上移,而且不影响其他列的数据位置。

 

以下是我自己编的代码,对代码还不甚熟悉精通,不知道还有什么更简单的方法么?

而且这段代码限制了指定列的类型,设置为字符型会出错。

 

 

 

 

 

 7-31,代码自己研究出来了,还是放在一楼,大家看看能否有更简便的方法?

 

With Tables ( "产品核价" )
    Dim cc As Integer
    cc =.find ( e. form .controls ( "请输入产品尺寸" ).text , 0, "产品尺寸" , False, True , True )
    If cc >-1 Then
        . Position =cc
        . Current ("产品尺寸" )= Nothing
        e .Form .Controls ( "请输入产品尺寸" ).value = Nothing
    Else
        e .Form .Controls ( "请输入产品尺寸" ).value = Nothing
    End If
    Dim n As Integer =. Rows .count
    Dim i As Integer
    Dim ccc As Integer
    Dim xyh As String
    For i =0 To n -1 Step 1
        ccc =.find ( "", 0 ,"产品尺寸" , False, True ,True )
        If ccc >-1 Then
            If ccc =n -1 Then
                Exit For
            Else
                . Position =ccc +1
                If .Current ( "产品尺寸" )Is Nothing Then
                    Exit For
                Else   xyh =. current( "产品尺寸" )
                    . Current ("产品尺寸" )= Nothing
                    . Position =ccc
                    . Current ("产品尺寸" )= xyh
                End If
            End If
        End If
    Next
    e .Form .Controls ( "套数"). text =ccc
    . Position =0
    . Current ("产品套数" )= e. form .Controls ( "套数"). text
End With
[此贴子已经被作者于2012-7-31 13:32:01编辑过]

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


加好友 发短信
等级:婴狐 帖子:26 积分:282 威望:0 精华:0 注册:2012/7/14 23:49:00
  发帖心情 Post By:2012/7/29 14:37:00 [只看该作者]

已经自己研究出来了,是因为在做判断的时候系统会将要判定的内容自动转换为DOUBLE型,而字符型转换不了。

代码自己修改完善了下,顺便传上项目给大家看看。

 

With Tables("产品核价")
    Dim cc As Integer
    cc=.find(e.form.controls("请输入产品尺寸").text, 0, "产品尺寸", False, True, True)
    If cc>-1 Then
        .Position =cc
        .Current("产品尺寸")=Nothing
        e.Form.Controls("请输入产品尺寸").value=Nothing
    Else
        e.Form.Controls("请输入产品尺寸").value=Nothing
    End If
    Dim n As Integer =.Rows.count
    Dim i As Integer
    Dim ccc As Integer
    Dim xyh As String
    For i=0 To n-1 Step 1
        ccc=.find("",i,"产品尺寸",False,True,True)
        If ccc>-1 Then
            If ccc=n-1 Then
                Exit For
            Else
                .Position=ccc+1
                If .Current("产品尺寸")Is Nothing Then
                    Exit For
                Else  xyh =.current("产品尺寸")
                    .Current("产品尺寸")=Nothing
                    .Position=ccc
                    .Current("产品尺寸")=xyh
                End If
            End If
        End If
    Next
    e.Form.Controls("套数").text=ccc
    .Position=0
    .Current("产品套数")=e.form.Controls("套数").text
End With

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2012-7-30 0:04:51编辑过]

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


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

你应该给个项目让大家测试···· 

看看是不是这样的:

With Tables("产品核价")
    Dim n As Integer = .RowSel 
    For i As Integer = n To .count-2
        .rows(i)("产品尺寸") = .rows(i+1)("产品尺寸")
    Next
    .rows(.count-1)("产品尺寸") = Nothing

End With


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


加好友 发短信
等级:婴狐 帖子:26 积分:282 威望:0 精华:0 注册:2012/7/14 23:49:00
  发帖心情 Post By:2012/7/30 0:20:00 [只看该作者]

以下是引用mr725在2012-7-29 20:40:00的发言:

你应该给个项目让大家测试···· 

看看是不是这样的:

With Tables("产品核价")
    Dim n As Integer = .RowSel 
    For i As Integer = n To .count-2
        .rows(i)("产品尺寸") = .rows(i+1)("产品尺寸")
    Next
    .rows(.count-1)("产品尺寸") = Nothing

End With

这个代码好像没有判定空白行的效果? 我是希望能够当指定列的中间某一行数据被删除后留下的空白能够由下面的数据上移补上。


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


加好友 发短信
等级:九尾狐 帖子:2180 积分:13816 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2012/7/30 0:33:00 [只看该作者]

有这么麻烦吗? 删除当前表的当前行:

CurrentTable.Current.Delete()

 


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/7/30 0:53:00 [只看该作者]

以下是引用sloyy在2012-7-30 0:33:00的发言:

有这么麻烦吗? 删除当前表的当前行:

CurrentTable.Current.Delete()

 

 

您了解别人要干啥吗?


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


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

以下是引用遍寻不着在2012-7-30 0:20:00的发言:

这个代码好像没有判定空白行的效果? 我是希望能够当指定列的中间某一行数据被删除后留下的空白能够由下面的数据上移补上。

"想实现清除某一行数据后能自动将下面各行数据上移,而且不影响其他列的数据位置。"  (这是你1楼说的呀)

“希望能够当指定列的中间某一行数据被删除后留下的空白能够由下面的数据上移补上”,有什么区别???

贴上来一个效果图····  看看。


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


加好友 发短信
等级:婴狐 帖子:26 积分:282 威望:0 精华:0 注册:2012/7/14 23:49:00
  发帖心情 Post By:2012/7/31 0:17:00 [只看该作者]

以下是引用mr725在2012-7-30 9:02:00的发言:

"想实现清除某一行数据后能自动将下面各行数据上移,而且不影响其他列的数据位置。"  (这是你1楼说的呀)

“希望能够当指定列的中间某一行数据被删除后留下的空白能够由下面的数据上移补上”,有什么区别???

贴上来一个效果图····  看看。

就是说删除当前行内的数据,而不删除当前行,总行数不变

 

 


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:九尾狐 帖子:2180 积分:13816 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2012/7/31 1:45:00 [只看该作者]

你是想清除某一单元格内容,然后下一行单元格数据上移吧?

说实话,把这个功能用于统计毫无意义


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/7/31 8:58:00 [只看该作者]

删除选定行数据,但不删除行:

 

Dim r As Row = Tables("表A").current
For Each c As col In Tables("表A").cols
    r(c.name) = Nothing
Next


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