Foxtable(狐表)用户栏目专家坐堂 → 数据统计


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

主题:数据统计

美女呀,离线,留言给我吧!
nuoyan89
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2023/7/29 14:39:00 [只看该作者]

测试了,红色部分添加进去后提示相同键,调试之后提示设备名称和材料编码重复了。但是不知道怎么改?

Dim s As String = e.form.controls("月份1").Text
Dim d As Date = CDate(s.Insert(4, "-") & "-01")
Dim d2 As Date = New Date(d.Year, d.Month, Date.DaysInMonth(d.Year, d.Month))
Dim dict As New Dictionary(Of String, String)
For i As Integer = d.Day To d2.Day
    e.DataRow(i) = Nothing
    Dim dc As DataCol = e.DataTable.DataCols(i)
    msgbox(dc.Caption & "--" & dc.Name)
    dict.Add(dc.Caption, dc.Name)
Next
Dim b As New SQLGroupTableBuilder("统计表1", "油类切消液明细")
b.C
b.Groups.AddDef("使用设备")
b.Groups.AddDef("材料编码")
b.Groups.AddDef("领用日期", DateGroupEnum.None)
b.Totals.AddDef("领用数量")
b.Filter = "使用设备 = '" & e.DataRow("使用设备") & "'"
Dim dt As DataTable = b.Build(True)
For Each dr As DataRow In dt.DataRows
    Dim cn As String = dr("领用日期").day
    If dict.ContainsKey(cn) Then
        e.DataRow(dict(cn)) = dr("领用数量")
    End If
Next

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


加好友 发短信
等级:超级版主 帖子:107720 积分:547933 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/29 14:51:00 [只看该作者]

建表的时候也没有使用标题啊,直接使用列名不行吗,为什么要使用列标题

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2023/7/29 21:58:00 [只看该作者]

请老师再帮忙看下,怎么改都不对

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2023/7/30 1:31:00 [只看该作者]

老师,改到现在不知道怎么改了?还是提示如图1的异常
Dim dict As New Dictionary(Of String, String)
For i As Integer = 1 To 31
       e.DataRow(i) = Nothing
    Dim dc As DataCol = e.DataTable.DataCols(i)
    dict(dc.Name) = format(e.DataRow(i), "yyyy-MM-dd")
Next
Dim b As New SQLGroupTableBuilder("统计表1", "油类切消液明细")
b.C
b.Groups.AddDef("使用设备")
b.Groups.AddDef("材料编码")
b.Groups.AddDef("领用日期", DateGroupEnum.None)
b.Totals.AddDef("领用数量")
b.Filter = "使用设备 = '" & e.DataRow("使用设备") & "'"
Dim dt As DataTable = b.Build(True)
For Each dr As DataRow In dt.DataRows
    Dim cn As String = format(dr("领用日期"), "yyyy-MM-dd")
    If dict.ContainsKey(cn) Then
        e.DataRow(dict(cn)) = dr("领用数量")
    End If
Next

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

[此贴子已经被作者于2023/7/30 1:42:01编辑过]

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


加好友 发短信
等级:超级版主 帖子:107720 积分:547933 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/30 20:31:00 [只看该作者]

去掉字典

Dim b As New SQLGroupTableBuilder("统计表1", "油类切消液明细")
b.C
b.Groups.AddDef("使用设备")
b.Groups.AddDef("材料编码")
b.Groups.AddDef("领用日期", DateGroupEnum.None)
b.Totals.AddDef("领用数量")
b.Filter = "使用设备 = '" & e.DataRow("使用设备") & "'"
Dim dt As DataTable = b.Build(True)
For Each dr As DataRow In dt.DataRows
    Dim cn As String = format(dr("领用日期"), "yyyy-MM-dd")
    If e.datatable.datacols.Contains(cn) Then
        e.DataRow(cn) = dr("领用数量")
    End If
Next

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2023/7/30 20:56:00 [只看该作者]

老师,在帮忙看看,谢谢
控件代码:
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("使用设备", GetType(String), 250)
dtb.AddDef("设备名称", GetType(String), 250)
dtb.AddDef("材料编码", GetType(String), 250)
dtb.AddDef("材料描述", GetType(String), 250)
dtb.AddDef("规格型号", GetType(String), 250)
dtb.AddDef("最小量", GetType(Double), 32)
dtb.AddDef("最大量", GetType(Double), 32)
dtb.AddDef("领用总量", GetType(Double), 32)
dtb.Build()
Dim s As String = e.form.controls("月份1").Text
Dim d As Date = CDate(s.Insert(4, "-") & "-01")
Dim d2 As Date = New Date(d.Year, d.Month, Date.DaysInMonth(d.Year, d.Month))
Do While d <= d2
    dtb.AddDef(format(d, "yyyy-MM-dd"), GetType(Date))
    d = d.adddays(1)
Loop
Tables("使用监控台_现存量").DataSource = dtb.BuildDataSource()
Dim Cols1() As String = {"使用设备", "设备名称"}
Dim Cols2() As String = {"使用设备", "设备名称"}
For Each dr1 As DataRow In DataTables("设备状态表").sqlSelect("[使用设备] like '%A%' and [使用状态] = '使用中'")
    Dim dr2 As DataRow = DataTables("使用监控台_现存量").AddNew()
    For i As Integer = 0 To Cols1.Length - 1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next
Tables("使用监控台_现存量").Sort = "使用设备"
表事件代码:
Dim b As New SQLGroupTableBuilder("统计表1", "油类切消液明细")
b.C
b.Groups.AddDef("使用设备")
b.Groups.AddDef("材料编码")
b.Groups.AddDef("领用日期", DateGroupEnum.None)
b.Totals.AddDef("领用数量")
b.Filter = "使用设备 = '" & e.DataRow("使用设备") & "'"
Dim dt As DataTable = b.Build(True)
For Each dr As DataRow In dt.DataRows
    Dim cn As String = format(dr("领用日期"), "yyyy-MM-dd")
    If e.DataTable.datacols.Contains(cn) Then
        e.DataRow(cn) = dr("领用数量")
    End If
Next

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

[此贴子已经被作者于2023/7/30 21:12:45编辑过]

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


加好友 发短信
等级:超级版主 帖子:107720 积分:547933 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/30 21:54:00 [只看该作者]

看看添加列的时候应该使用什么类型的列

Add(ColumnName, GetType(Type))
Add(ColumnName, GetType(Type), Expression)
Add(ColumnName, GetType(Type), Expression, Caption)
Add(ColumnName, GetType(Type), MaxLength)
Add(ColumnName, GetType(Type), MaxLength, Expression)
Add(ColumnName, GetType(Type), MaxLength, Expression, Caption)

后三个语法是针对字符列的。
 

参数说明:

  • Name
    新增列的名称
     
  • Type
    新增列的数据类型,需要配合GetType关键字来获得数据类型,例如GetType(String)表示字符型,GetType(Boolean)表示逻辑型。


dtb.AddDef(format(d, "yyyy-MM-dd"), GetType(Date))这里应该使用什么类型?
[此贴子已经被作者于2023/7/30 21:53:49编辑过]

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2023/7/30 22:08:00 [只看该作者]

改成的数字类型,测试时没错误提示了,但这个项目直接闪退了

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


加好友 发短信
等级:超级版主 帖子:107720 积分:547933 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/30 22:20:00 [只看该作者]

正常啊,代码都是随便找个地方写的就这样了。把表事件代码放到按钮里,这种代码就不适合在表事件处理

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2023/7/30 22:40:00 [只看该作者]

老师,我放到了控件里,帮忙看看还能怎么改,谢谢!我把红色代码删除后测试时提示没有实例,不删除又无法保存!
Dim dr3 As DataRow
Dim b As New SQLGroupTableBuilder("统计表1", "油类切消液明细")
b.C
b.Groups.AddDef("使用设备")
b.Groups.AddDef("材料编码")
b.Groups.AddDef("领用日期", DateGroupEnum.None)
b.Totals.AddDef("领用数量")
b.Filter = "使用设备 = '" & dr3("使用设备") & "'"
Dim dt As DataTable = b.Build(True)
For Each dr As DataRow In dt.DataRows
    Dim cn As String = format(dr("领用日期"), "yyyy-MM-dd")
    If e.DataTable.datacols.Contains(cn) Then
        dr3(cn) = dr("领用数量")
    End If
Next
[此贴子已经被作者于2023/7/30 22:42:24编辑过]

 回到顶部
总数 38 上一页 1 2 3 4 下一页