Foxtable(狐表)用户栏目专家坐堂 → 分组 计数,找不到列名的问题


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

主题:分组 计数,找不到列名的问题

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


加好友 发短信
等级:幼狐 帖子:165 积分:1218 威望:0 精华:0 注册:2020/5/23 14:56:00
分组 计数,找不到列名的问题  发帖心情 Post By:2021/10/12 18:04:00 [只看该作者]

需要在数据库中执行以下语句:
sel ect 部门名称, 加班日期,
avg(isnull( 部门人数, 0) ) as 部门人数 
, count(*) as 加班人数 
from neightWorkAddMain
where 可用 = 1
group by 部门名称,加班日期
order by 部门名称,加班日期

在分组计数时,显示 count(*) as 加班人数 的列名无效。


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


加好友 发短信
等级:幼狐 帖子:165 积分:1218 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/10/12 18:05:00 [只看该作者]


前端 :
//执行统计
$('#exctj1').click(function(){
var strGroup = $('#group').val();
var strType  = $('#zhouqi').val();
var nType = '';
if( strType == 'year'){
//ssType = 'Year';
nType = 1;
}

if( strType == 'month'){
// ssType = 'Month';
nType = 3;
}

if( strType == 'date'){
//ssType = 'Day';
nType = 5;
}

var sDate    = $('#d1').val();
var eDate    = $('#d2').val();

var data = {
dataSource : 'OAbm',
baseTable : 'neightWorkAddMain',
groups    : JSON.stringify([{
name  : '部门名称',
},{
name     : '加班日期',
dateGroup   : nType
}]),
totals    : JSON.stringify([{
exName        : '总人数',
expression  : 'isnull(部门人数,0)',
exCaption     : '总人数',
aggregate   : 6     // AggregateEnum.Average   求平均值
},{
name        : '加班人数',
aggregate   : 4     // AggregateEnum.Count     求计数
}]),
GroupProportion : true,         // 分组总占比
Filter          : '可用 = 1',
};

console.log(data);

admin.ajax({
url : 'group',
data: data ,
success : function ( res ){
console.log(res);
//由于reload方法对cols的重载有问题,这里只能使用render方法渲染表格
table.render({
elem: '#t1',
data : res.data,
cols: [
{field: '部门名称' , title : '部门名称' , align : 'center' , style : 'text-align:right', minWidth  : '120'},
{field: '加班日期' , title : '加班日期' , align : 'center' , style : 'text-align:right', minWidth  : '120'},
{field: '部门人数' , title : '部门人数' , align : 'center' , style : 'text-align:right', minWidth  : '120'},
{field: '加班人数' , title : '加班人数' , align : 'center' , style : 'text-align:right', minWidth  : '120'},
],
text: {none: '没有得到服务器返回数据!'},
done:function(res){

}
});
}
});

return false;
});


传递的data 值:

dataSource: "OAbm"
baseTable: "neightWorkAddMain"
groups: "[{"name":"部门名称"},{"name":"加班日期","dateGroup":5}]"
totals: "[{"exName":"总人数","expression":"isnull(部门人数,0)","exCaption":"总人数","aggregate":6},{"name":"加班人数","aggregate":4}]"
GroupProportion: true
Filter: "可用 = 1"

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


加好友 发短信
等级:幼狐 帖子:165 积分:1218 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/10/12 18:06:00 [只看该作者]


执行后,foxTable报错:  
统计错误,错误提示:
无法完成延迟准备
未能准备语句
列名: ‘加班人数’ 无效
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:2.txt


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


加好友 发短信
等级:幼狐 帖子:165 积分:1218 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/10/12 18:07:00 [只看该作者]

以上附件为后端代码 , 

admin.ajax的 URL : 'group' 中的执行代码

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


加好友 发短信
等级:幼狐 帖子:165 积分:1218 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/10/12 18:08:00 [只看该作者]

foxTable中的输出信息

传入e.Path : group
当前函数:sqlGroup
执行 b.Groups.AddDef('部门名称',-1,'','')
执行 b.Groups.AddExp('','','')
执行 b.Groups.AddDef('加班日期',5,'','')
执行 b.Groups.AddExp('','','')
执行 b.Totals.AddDef('',6,'','')
执行 b.Totals.AddExp('总人数','isnull(部门人数,0)','总人数',6)
执行 b.Totals.AddDef('加班人数',4,'','')
执行 b.Totals.AddExp('总人数','isnull(部门人数,0)','总人数',4)
执行 b.GroupProportion= True
执行 b.Filter = 可用 = 1
执行开始
errlog:
2021-10-12 18:01:01.7385
事件/函数:自定义函数,sqlGroup
调用的目标发生了异常。
   在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   在 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   在 Foxtable.UserFunctions.Execute(String Name, Object[] Args)
未将对象引用设置到对象的实例。
   在 Foxtable.SQLGroupTableBuilder.BuildDataSource()
   在 Foxtable.SQLGroupTableBuilder.Build(Boolean OnlyDataTable)
   在 UserCode.AVaiIz2TIxAM9Tghy(Object[] Args)


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


加好友 发短信
等级:超级版主 帖子:76067 积分:385907 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/12 20:25:00 [只看该作者]

定义分组使用的是这个代码:Dim b As New SQLGroupTableBuilder(strCaption ,e.values("baseTable"))。e.values("baseTable")表示的是一个数据库表?还是1楼sql生成的视图?

如果是数据库表肯定不存在加班人数 ,因为这是SQL生成的一个临时列。SQLGroupTableBuilder只能使用数据库里存在的列名


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


加好友 发短信
等级:幼狐 帖子:165 积分:1218 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/10/13 7:22:00 [只看该作者]

那这个问题要如何解决?

我的baseTable 是数据库中的表,不是视图

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


加好友 发短信
等级:幼狐 帖子:165 积分:1218 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/10/13 7:34:00 [只看该作者]

统计表达式有count枚举值,那应该是可以计数的啊, 
[此贴子已经被作者于2021/10/13 7:34:17编辑过]

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


加好友 发短信
等级:幼狐 帖子:165 积分:1218 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/10/13 7:50:00 [只看该作者]

还有个问题, 如何生成   加班人数/总人数 = 加班比率。

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


加好友 发短信
等级:幼狐 帖子:165 积分:1218 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/10/13 7:55:00 [只看该作者]

加班比率查到有 “百分比与统计”的说明文档了

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