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


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

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

帅哥哟,离线,有人找我吗?
遍寻不着
  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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
遍寻不着
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


 回到顶部
帅哥哟,离线,有人找我吗?
遍寻不着
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看

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


加好友 发短信
等级:婴狐 帖子:26 积分:282 威望:0 精华:0 注册:2012/7/14 23:49:00
  发帖心情 Post By:2012/7/31 13:20:00 [显示全部帖子]

以下是引用mr725在2012-7-31 10:48:00的发言:

8楼你的图片不是实现了你的要求吗,即:删除 产品尺寸列的123后,143141、ad不是上移了嘛。

又没有删除行,所以总行数当然不变罗···

 

估计你没说清楚自己的意思········

这是我自己后来自己研究出来了。

所以现在是想看看这段研究出来的代码能不能精简下,感觉自己弄得挺复杂的。

[此贴子已经被作者于2012-7-31 13:20:25编辑过]

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


加好友 发短信
等级:婴狐 帖子:26 积分:282 威望:0 精华:0 注册:2012/7/14 23:49:00
  发帖心情 Post By:2012/7/31 13:28:00 [显示全部帖子]

以下是引用sloyy在2012-7-31 1:45:00的发言:

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

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

 

我这个项目是设计给设计人员填写产品具体情况和成本价用的,需要经过多次修改,所以需要比较干净的效果。

这样方便其他人员查阅产品信息。


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


加好友 发短信
等级:婴狐 帖子:26 积分:282 威望:0 精华:0 注册:2012/7/14 23:49:00
  发帖心情 Post By:2012/7/31 13:30:00 [显示全部帖子]

以下是引用狐狸爸爸在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

还需要这一列的数据不留空哦。


 回到顶部