Foxtable(狐表)用户栏目专家坐堂 → [求助]新增字典 报错


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

主题:[求助]新增字典 报错

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


加好友 发短信
等级:一尾狐 帖子:441 积分:5330 威望:0 精华:0 注册:2016/1/28 2:59:00
[求助]新增字典 报错  发帖心情 Post By:2022/1/10 6:16:00 [只看该作者]


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

Dim fzdx As String = “A;B;C”
DIM _fxtj_dt as datatable = datatables("表A")
DIM _fxtj_dt1 as datatable datatables("表B")
Dim fzdxs() As String = fzdx.split(";")
Dim zd As New Dictionary(Of String, Double)
Dim Arys As List(Of String()) = _fxtj_dt.GetValues(fzdx.Replace(";","|"))
'--------------------------------------------------------------------------------------------------------------------------------------
For Each Ary As String() In Arys
    Dim xh As String = ""
    For i As Integer = 0 To fzdxs.Length - 1
        If xh > "" Then
            xh = xh & "|"
        End If
        xh = xh & Ary(i)
    Next
    For Each dc As DataCol In _fxtj_dt1.DataCols
        Dim j As String = xh & "*" & dc.name
        zd.Add(j,0)
    Next
Next

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/10 8:49:00 [只看该作者]

数据过多,内存溢出

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


加好友 发短信
等级:一尾狐 帖子:441 积分:5330 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/10 10:17:00 [只看该作者]

请问有何解决方法?
字典上限多少个?

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


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

别用字典,直接用编号列和名称列,如果一定只要一列,可以将名称列隐藏,然后在DrawCell事件:

if e.Col = "编号" then
  e.text = e.row("名称")
end if

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/10 10:22:00 [只看该作者]

只能减少生成字典的数据。

这不在于字典上限是多少,因为foxtable是32位程序,目前只能使用大概1G的内存。打开窗口,加载表格数据、生成报表等等都会占用内存,A功能占用的内存多了,B功能就只能使用剩下的内存。不管多少个功能,总共能够使用的内存大概1G左右

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


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

输入的话,可以动态生成,参考:


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


加好友 发短信
等级:一尾狐 帖子:441 积分:5330 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/10 10:29:00 [只看该作者]

我想将一个表的所有行和所有列添加到字典中
该如何操作?
例如 表A 列名:分类名称、合计1、合计2…合计300

那么我想将每行的 分类名称+每列列名 作为键,每列的合计作为值
字典 zd.add(每行分类名称 & 每列列名,对应的单元格值)
这种还有何方式可改?


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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/10 10:34:00 [只看该作者]

每行主键+列名作为键

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


加好友 发短信
等级:一尾狐 帖子:441 积分:5330 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/10 11:18:00 [只看该作者]

以下是引用狐狸爸爸在2022/1/10 10:20:00的发言:
别用字典,直接用编号列和名称列,如果一定只要一列,可以将名称列隐藏,然后在DrawCell事件:

if e.Col = "编号" then
  e.text = e.row("名称")
end if

您这个并非我想要的,我是别有用途


 回到顶部