以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]统计报错,生成的SQL语句错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=125448)

--  作者:天一生水
--  发布时间:2018/9/28 12:32:00
--  [求助]统计报错,生成的SQL语句错误

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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试出庭统计.foxdb



--  作者:有点甜
--  发布时间:2018/9/28 12:37:00
--  

case when,是sqlserver数据库的,access数据库,用iif函数。

 

我这样测试没问题

 

Dim cn As String = "" \'数据源名(空白时为内数据表)
\'Dim cn As String = "swptsql"   \'sql外部数据源
Dim bm As String = "统计表1"
Dim b As New SQLGroupTableBuilder(bm,"机关负责人出庭")
\'b.ConnectionName = cn
b.Groups.AddDef("案号")
b.Groups.AddDef("被告")
b.Groups.AddDef("承办人")   \'暂

\'b.Totals.AddExp("负责人","Case When 出庭情况_负责人 =1 then 1 Else null End")
\'b.Totals.AddExp("正职","Case When 出庭情况_正职 =1 then 1 Else null End")
\'b.Totals.AddExp("本机关工作人员","Case When 出庭情况_本机关工作人员 =1 then 1 Else null End")
\'b.Totals.AddExp("下级机关工作部门人员","Case When 出庭情况_下级机关工作部门人员 =1 then 1 Else null End")
\'b.Totals.AddExp("仅下级机关工作部门人员","Case When 出庭情况_仅下级机关工作部门人员 =1 then 1 Else null End")
\'b.Totals.AddExp("仅委托律师","Case When 出庭情况_仅委托律师 =1 then 1 Else null End")
\'b.Totals.AddExp("仅下级机关工作部门人员和律师","Case When 出庭情况_仅下级机关工作部门人员和律师 =1 then 1 Else null End")
\'b.Totals.AddExp("行政机关未经法庭许可中途退庭","Case When 出庭情况_行政机关未经法庭许可中途退庭 =1 then 1 Else null End")
\'b.Totals.AddExp("无人出庭应诉","Case When 出庭情况_无人出庭应诉 =1 then 1 Else null End")
b.Subtotal = True
b.SubtotalLevel = 0
Tables("司法统计_Table1").DataSource = b.BuildDataSource

With Tables("司法统计_Table1")
    .MergeMode = MergeModeEnum.Standard \'标准合并模式
    .MergeCols.Clear() \'清除原来的合并列
    .MergeCols.Add("案号") \'加入要合并的列
    \'.MergeSort = "被告"  \'设置合并模式下的排序方式
    .AllowMerge = True \'启用合并模式
End With
Tables("司法统计_Table1").AutoSizeCols()  \'自动列宽End If


--  作者:天一生水
--  发布时间:2018/10/11 21:14:00
--  
甜老师,统计没有问题了。
有个问题,我在统计表中添加了一列“开庭时间”,想在统计表中保持数据表中的列格式(DateTime列,比如:2018-10-10 21:51),但在统计表中显示为“10”,应该怎样设置?
加上这句不行:
Tables("司法统计_Table1").Cols("开庭时间").SetDateTimeFormat(DateTimeFormatEnum.DateTime)

------------------------------------------------------------------------------
Syscmd.Project.Save()
Dim cn As String = ""    \'数据源名(空白时为内数据表)
Dim bm As String = "统计表1"
Dim b As New SQLGroupTableBuilder(bm,"机关负责人出庭")
b.ConnectionName = cn
b.Groups.AddDef("案号")
b.Groups.AddDef("原告")
b.Groups.AddDef("被告")
b.Groups.AddDef("承办人")   
b.Groups.AddDef("开庭时间")
b.Groups.AddDef("出庭情况_备注","备注")

b.Groups.AddDef("出庭情况_负责人姓名职务","负责人姓名职务")
b.Totals.AddExp("负责人","iif(出庭情况_负责人 = true,1,null)")
b.Totals.AddExp("正职","iif(出庭情况_正职 = true,1,null)")
b.Totals.AddExp("副职","iif(出庭情况_副职 = true,1,null)")
b.Totals.AddExp("本机关工作人员","iif(出庭情况_本机关工作人员 = true,1,null)")
b.Totals.AddExp("下级机关工作部门人员","iif(出庭情况_下级机关工作部门人员 = true,1,null)")
b.Totals.AddExp("仅下级机关工作部门人员","iif(出庭情况_仅下级机关工作部门人员 = true,1,null)")
b.Totals.AddExp("仅委托律师","iif(出庭情况_仅委托律师 = true,1,null)")
b.Totals.AddExp("仅下级机关工作部门人员和律师","iif(出庭情况_仅下级机关工作部门人员和律师 = true,1,null)")
b.Totals.AddExp("行政机关未经法庭许可中途退庭","iif(出庭情况_行政机关未经法庭许可中途退庭 = true,1,null)")
b.Totals.AddExp("无人出庭应诉 ","iif(出庭情况_无人出庭应诉  = true,1,null)")

b.Subtotal = True
b.SubtotalLevel = 0
Tables("司法统计_Table1").DataSource  = b.BuildDataSource

--  作者:有点甜
--  发布时间:2018/10/11 21:17:00
--  

b.Groups.AddDef("开庭时间")

 

改成

 

b.Groups.AddDef("开庭时间", DateGroupEnum.none)


--  作者:天一生水
--  发布时间:2018/10/11 21:35:00
--  
谢谢甜老师!
现在可以显示为日期,比如:2018-10-10
能不能显示为原来数据表中的格式,日期时间呢?比如:2018-10-10 21:51

--  作者:有点甜
--  发布时间:2018/10/11 21:39:00
--  

Dim b As New SQLGroupTableBuilder("统计表1","表A")
b.Groups.AddDef("第一列") \'根据产品分组
b.Groups.AddDef("第四列", DateGroupEnum.none)

b.Totals.AddDef("第二列") \'对数量进行统计
b.Build \'生成统计表
DataTables("统计表1").DataCols("第四列").SetDateTimeFormat(DateTimeFormatEnum.DateLongTime)
MainTable = Tables("统计表1") \'打开生成的统计表


--  作者:天一生水
--  发布时间:2018/10/12 17:02:00
--  
3楼的代码能不能只统计[开庭时间]是某个月的数据?不是指分组,是指筛选后的数据。
比如:后台数据[开庭时间]是10月份或11月份的统计。

--  作者:有点甜
--  发布时间:2018/10/12 17:06:00
--  
以下是引用天一生水在2018/10/12 17:02:00的发言:
3楼的代码能不能只统计[开庭时间]是某个月的数据?不是指分组,是指筛选后的数据。
比如:后台数据[开庭时间]是10月份或11月份的统计。

 

统计不是可以加条件,如

 

b.filter = "开庭时间 >= ## and 开庭时间 <= ##"