Foxtable(狐表)用户栏目专家坐堂 → [求助] 表中的记录进行拆分和合并


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

主题:[求助] 表中的记录进行拆分和合并

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/20 9:15:00 [只看该作者]

以下是引用leoli在2018/11/19 23:28:00的发言:

老师,那个隔开不合适,用光标隔开点选吗?

 

只能用这种方法勾选

 

http://www.foxtable.com/webhelp/scr/1776.htm

 

如果你要复杂的,参考这里

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=127220&skin=0

 


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


加好友 发短信
等级:小狐 帖子:301 积分:2547 威望:0 精华:0 注册:2018/11/15 12:35:00
  发帖心情 Post By:2018/11/20 18:33:00 [只看该作者]

老师,现在可以用光标挑选了,可以合并不可以,能帮忙看看选中如何合并吗?另外那个黑色的单元格背景不需要可以吗? 代码如下:

 

If vars("stop") = True Then Return
If ModifierKey <> Keys.Control Then
    For Each p As String In ps
        Dim ary() As String = p.Split(",")
        If ary(0) >= 0 AndAlso ary(1) >= 0 Then
            e.Table.Grid.SetCellStyle(ary(0)+1, ary(1)+1, "")
        End If
    Next
    ps.clear
End If

For i As Integer = e.NewRange.TopRow To e.NewRange.BottomRow
    For j As Integer = e.NewRange.LeftCol To e.NewRange.RightCol
        Dim p As String = i & "," & j
        If i >= 0 AndAlso j >= 0 AndAlso ps.contains(p) = False Then
            ps.add(p)
        End If
    Next
Next

Dim sum As Double = 0
For Each p As String In ps
    Dim ary() As String= p.Split(",")
    If ary(0) >= 0 AndAlso ary(1) >= 0 Then
        Dim s As C1.Win.C1FlexGrid.CellStyle = e.Table.grid.Styles.Add("selected")
        s.backcolor = Color.red '背景
        e.Table.Grid.SetCellStyle(ary(0)+1, ary(1)+1, s)
        e.Table.DataTable.SysStyles("Focus").BackColor = Color.black
       
        '各种计算
        Dim cval = e.Table(cint(ary(0)), cint(ary(1)))
        sum += val(cval)
    End If
Next

StatusBar.Message1 = "累计:" & sum

 

 

合并代码如下:

 

 

Dim t As Table = Tables("表A")
Dim cr = t.Rows(t.BottomPosition )
For i As Integer = t.BottomPosition-1 To t.TopPosition Step -1
    If cr("产品") = t.Rows(i)("产品") AndAlso cr("单位") = t.Rows(i)("单位")
        cr("数量") += val(t.Rows(i)("数量"))
        t.Rows(i).delete
    Else
        cr = t.Rows(i)
    End If
Next

 

 

 


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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/20 18:56:00 [只看该作者]

改成


Dim t As Table = Tables("表A")
Dim cr = t.current
Dim ls As new List(Of Integer)
For Each p As String In ps
    Dim i = p.split(",")(0)
    If ls.contains(i) = False Then
        ls.add(i)
        If cr("产品") = t.Rows(i)("产品") AndAlso cr("单位") = t.Rows(i)("单位")
            cr("数量") += val(t.Rows(i)("数量"))
        Else
            cr = t.Rows(i)
        End If
    End If
Next
ls.Sort
For i As Integer = ls.count-1 To 0 Step -1
t.Rows(ls(i)).Delete
Next


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


加好友 发短信
等级:小狐 帖子:301 积分:2547 威望:0 精华:0 注册:2018/11/15 12:35:00
  发帖心情 Post By:2018/11/20 19:32:00 [只看该作者]

老师,这个不对,一并全部没有了。

 


 回到顶部
帅哥,在线噢!
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106580 积分:542071 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/20 20:01:00 [只看该作者]

建议还是使用这个http://www.foxtable.com/webhelp/scr/1776.htm

这种底层的用法如果没有很好的代码控制和调试能力,建议还是不用玩了。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/21 9:17:00 [只看该作者]

以下是引用leoli在2018/11/20 19:32:00的发言:

老师,这个不对,一并全部没有了。

 

 

具体实例发上来测试。


 回到顶部
总数 16 上一页 1 2