以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  项目代码改到窗口  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137759)

--  作者:有点蓝
--  发布时间:2019/7/15 10:12:00
--  
这个意思?

Dim g As New CrossTableBuilder("统计表1", DataTables("设备状态表"))
g.HGroups.AddDef("使用设备")
g.HGroups.AddDef("设备名称")
g.FromServer = True
Tables("设备分配表_设备运行").DataSource = g.BuildDataSource()
Dim dt As DataTable = Tables("设备分配表_设备运行").DataTable
dt.GlobalHandler.DrawCell = True

For i As Integer = 1 To 31
    dt.DataCols("日" & i).caption = format(Date.Today.AddDays(i-1), "MM-dd")
Next
dt.BuildHeader

--  作者:有点蓝
--  发布时间:2019/7/15 10:44:00
--  
到命令窗口执行下面代码,看看生成的统计表的表结构

Dim g As New CrossTableBuilder("统计表1", DataTables("设备状态表"))
g.HGroups.AddDef("使用设备")
g.HGroups.AddDef("设备名称")
g.FromServer = True
g.Build()
maintable = tables("统计表1")

--  作者:有点蓝
--  发布时间:2019/7/15 11:09:00
--  
命令窗口执行使用代码看看标题,统计表是根据数据生成列名的,如果数据里没有“日1”的数据,是不会生成这个列名的。如果需要创建一个临时表填充数据,建议使用(http://www.foxtable.com/webhelp/topics/0679.htm)。不要使用这行取巧的方式

Dim g As New CrossTableBuilder("统计表1", DataTables("设备状态表"))
g.HGroups.AddDef("使用设备")
g.HGroups.AddDef("设备名称")
g.FromServer = True
Tables("设备分配表_设备运行").DataSource = g.BuildDataSource()
Dim dt As DataTable = Tables("设备分配表_设备运行").DataTable
For Each dc As DataCol In dt.DataCols
    Output.Show("列名=" & dc.Name & ",标题=" & dc.Caption)
Next

--  作者:有点蓝
--  发布时间:2019/7/15 12:04:00
--  
这种代码不适合放到表事件处理,放到按钮。每个事件都有自己的使用场景和用途,不是随便打开一个事件就写代码
--  作者:有点蓝
--  发布时间:2019/7/15 13:45:00
--  
代码子贴出来,不要截图,这样别人没有办法改。
--  作者:有点蓝
--  发布时间:2019/7/15 14:26:00
--  
没看懂代码的意思,需要做什么功能?
--  作者:有点蓝
--  发布时间:2019/7/15 14:44:00
--  
13楼的描述我实在看不出来和11楼的代码有什么关系
--  作者:有点蓝
--  发布时间:2019/7/15 15:26:00
--  
DataColChanged没看出来和求和有什么关系?!根据什么条件,从哪个表求和?
--  作者:有点蓝
--  发布时间:2019/7/15 15:49:00
--  
Dim dt As DataTable =DataTables("开机任务表")
If e.DataCol.Name = "使用设备"  Then
    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.Add(dc.Caption,dc.Name)
    Next
    Dim drs = dt.SQLSelect("使用设备 = \'" & e.DataRow("使用设备") & "\'")
    For Each dr As DataRow In drs
        Dim cn As String = format(dr("生产日期"),"yy-MM")
        If dict.ContainsKey(cn)
             e.DataRow(dict(cn)) = dr("当班任务")
        End If
    Next
End If

--  作者:有点蓝
--  发布时间:2019/7/15 16:50:00
--  
Dim cn As String = format(dr("生产日期"),"yy-MM")
改为
Dim cn As String = format(dr("生产日期"),"MM-dd")