找回密码
 立即注册

QQ登录

只需一步,快速开始

lwsammi

高级会员

300

主题

607

帖子

1997

积分

高级会员

积分
1997

微信认证勋章

lwsammi
高级会员   /  发表于:2020-12-24 11:28  /   查看:2048  /  回复:8
1金币
如何设计这样的日报  每月展示这样的形式 ,日期是自动填上的

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

我这边有个方案,您可以试试。 (1)新建一张真实表,暂叫t1;再建一个t1的视图,暂叫v1 (2)在活字格内部调用存储过程,传想要查的月份,然后用存储过程将这个月份数据插入到t1中 t1数据为 (3)再建一张视图v2用V1查询出月报,固定查1-31号,这样列就不会变,建v2 的sql供参考 然后v2就可以得到如下数据 (4)最后就可以用v2的数据作展示,如果查询的那个月没有31号或者30号,这列的数据就为空

8 个回复

倒序浏览
最佳答案
最佳答案
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2020-12-24 11:28:58
来自 8#
lwsammi 发表于 2020-12-28 14:43
视图不能使用临时表,且真实表,因为我的列有可能新增,所以我也不知道如果真实表应该怎么做,我临时表是 ...

我这边有个方案,您可以试试。
(1)新建一张真实表,暂叫t1;再建一个t1的视图,暂叫v1
(2)在活字格内部调用存储过程,传想要查的月份,然后用存储过程将这个月份数据插入到t1中
t1数据为



(3)再建一张视图v2用V1查询出月报,固定查1-31号,这样列就不会变,建v2 的sql供参考
  1. select * from(
  2. select 姓名,组别, SUBSTRING(CONVERT(varchar(100), 日期, 111),9,2) as 日期, 内容  from v1) b
  3. pivot(max(内容) for  日期 in ([01],[02],[03],[31])) c;
复制代码


然后v2就可以得到如下数据



(4)最后就可以用v2的数据作展示,如果查询的那个月没有31号或者30号,这列的数据就为空




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1满意度 +5 收起 理由
lwsammi + 5 赞一个!

查看全部评分

回复 使用道具 举报
Tracy.Liu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2020-12-24 12:19:00
2#
看你的这个截图,感觉应该设计成姓名、组别、日期、内容这几个字段。
然后通过数据透视表展示这个数据。用法和excel的数据透视表类似哈~
数据透视表:https://help.grapecity.com.cn/pa ... ion?pageId=46171809
回复 使用道具 举报
lwsammi
高级会员   /  发表于:2020-12-24 14:06:54
3#
Tracy.Liu 发表于 2020-12-24 12:19
看你的这个截图,感觉应该设计成姓名、组别、日期、内容这几个字段。
然后通过数据透视表展示这个数据。用 ...

但是透视表能不能展示文本内容阿
回复 使用道具 举报
Tracy.Liu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2020-12-24 15:30:53
4#
lwsammi 发表于 2020-12-24 14:06
但是透视表能不能展示文本内容阿

我在网上看,好像有一些机智的方法可以数据透视表中展示文本,但是暂时还没有找到某个特别合适的方式。
你这个数据是在内置库还是外联库呢?
外联库的话应该可以写视图,行转列来处理。
比如使用pivot函数
https://www.cnblogs.com/zoro-zero/p/11334785.html

或者,如果你数据不多的话,其实可以考虑直接在页面中通过vlookup去从表里查出来

有点类似之前有小伙伴做的日历的那种思路。直接写公式排版。
用活字格制作日历
https://gcdn.grapecity.com.cn/fo ... 3&fromuid=52377
(出处: 葡萄城产品技术社区)


回复 使用道具 举报
lwsammi
高级会员   /  发表于:2020-12-28 09:41:03
5#
Tracy.Liu 发表于 2020-12-24 15:30
我在网上看,好像有一些机智的方法可以数据透视表中展示文本,但是暂时还没有找到某个特别合适的方式。
...

但是我使用pivot函数做出来的只能通过存储过程建立的临时表,但是活字格搜不到SQL server的临时表怎么办
回复 使用道具 举报
Tracy.Liu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2020-12-28 12:31:16
6#
lwsammi 发表于 2020-12-28 09:41
但是我使用pivot函数做出来的只能通过存储过程建立的临时表,但是活字格搜不到SQL server的临时表怎么办

两种处理方式,一个是你不要使用临时表,直接把数据存入一个真实表中,每次执行前先清除所有数据,然后再往里面记入新的数据。

第二种,你试试能不能通过这个临时表生成一个视图,然后把这个视图连入到活字格中使用。
回复 使用道具 举报
lwsammi
高级会员   /  发表于:2020-12-28 14:43:57
7#
本帖最后由 lwsammi 于 2020-12-28 17:14 编辑
Tracy.Liu 发表于 2020-12-28 12:31
两种处理方式,一个是你不要使用临时表,直接把数据存入一个真实表中,每次执行前先清除所有数据,然后再 ...

视图不能使用临时表,且真实表,因为我的列有可能新增,所以我也不知道如果真实表应该怎么做,我临时表是这么写的,
IF OBJECT_ID('TEMPDB..##Temptable') IS NOT NULL
DROP TABLE ##Temptable

DECLARE @SqlSubject NVARCHAR(4000)
SELECT @SqlSubject= STUFF((SELECT ','+'['+worktype+']' FROM (SELECT DISTINCT worktype FROM [hzg].[dbo].[cellwork]) T  FOR XML PATH('')),1,1,'') -- 获取PIVOT科目
PRINT @SqlSubject
DECLARE @SqlPIVOT NVARCHAR(4000)='SELECT * INTO ##Temptable FROM [hzg].[dbo].[cellwork] PIVOT(MAX(num) FOR worktype IN('+@SqlSubject+')) T' -- 拼接PIVOT
PRINT @SqlPIVOT
EXEC (@SqlPIVOT)
SELECT * FROM ##Temptable
并且我还有个问题,及时我生成视图了,其实这个列还会变的,那活字格在链接的时候,也不会自动更新这些列
回复 使用道具 举报
Tracy.Liu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2020-12-28 19:06:56
9#
小姐姐可以试一下楼上提供的方法哈~可以解决您说的,视图列数是动态的问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部