以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [讨论]指定列清除某一行数据内容后自动将各行数据上移且不影响其他列的数据位置  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=21961)

--  作者:遍寻不着
--  发布时间: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编辑过]

--  作者:遍寻不着
--  发布时间: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
--  发布时间: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


--  作者:遍寻不着
--  发布时间: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
--  发布时间:2012/7/30 0:33:00
--  

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

CurrentTable.Current.Delete()

 


--  作者:程兴刚
--  发布时间:2012/7/30 0:53:00
--  
以下是引用sloyy在2012-7-30 0:33:00的发言:

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

CurrentTable.Current.Delete()

 

 

您了解别人要干啥吗?


--  作者:mr725
--  发布时间:2012/7/30 9:02:00
--  
以下是引用遍寻不着在2012-7-30 0:20:00的发言:

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

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

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

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


--  作者:遍寻不着
--  发布时间:2012/7/31 0:17:00
--  
以下是引用mr725在2012-7-30 9:02:00的发言:

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

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

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

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

 

 


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

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

--  作者:sloyy
--  发布时间:2012/7/31 1:45: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