填报-自动填入填报时间-如何用单元格设置实现LEFT JOIN

本帖最后由 boykarl911 于 2016-7-27 12:43 编辑

本人自己因工作需要做了个填报报表,在制作过程中,遇到一些问题。很运气的自己解决了,特拿出来与大家分享!
备注:各位高手也许可以通过各种参数、控件甚至自己写存储过程、自己开发JAVA来解决,我的这办法是给菜鸟用的,勿喷。
首先介绍下环境:
我有两个查询集:A 有三列  名字、时间、业务员   B集 有三列 名字、指派业务员、指派日期
分别在位于A1、B1、C1、D1、E1、F1
在A1单元格设置过滤后,得到查询集中时 时间=today()-365的结果
现在问题来了,当我对D1单元格设置D1=A1过滤后发现,部分A1里有的值 B1里并没有
导致出来的结果如下
A1            D1
1               1
2               3
3               5
4               6
5
6
而我想要的是
A1        D1
1          1
2
3           3
4
5           5
6           6
几经测试后发现,将D1的左父格设置为A1后,问题解决。
第二个问题:指派日期
本来我想的是直接在G1=today(),这样填报的时候就自动把日期填进去了。后来发现,这样的话 我填报任意一行,所有行的填报日期都会变成今天。
求教了群友后,我在后面加了两列H、I
H列的值也是取的B数据集 指派业务员 字段  I列 则设置为IF(H1=E1,F1,today())
在设置填报属性时 E1对应 指派业务员字段  I1则对应指派日期字段
这样,当在WEB页面进行填报时,如果填报表中,E1与数据库中指派业务员字段的值相等,则I1填报的时间就是数据库中的时间。
当E1填报的值与数据库中指派业务员字段的值不想等,则I1填报的时间就是今天。

至此,我的这个表顺利完成。希望我的经验对后来的菜鸟门有用,能用其他高技术手段解决的高手,请绕道。

FineReportboykarl911 发布于 2016-7-27 12:41
悬赏:2 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
0
boykarl911发布于2016-7-27 12:41(编辑于 2023-9-6 09:34)
555
最佳回答
0
boykarl911发布于2016-7-27 12:41(编辑于 2023-9-6 09:34)
555
最佳回答
0
iorisgzh发布于2016-7-28 06:50(编辑于 2023-9-6 09:34)
555
  • boykarl911 boykarl911(提问者)

    时间填报这块,昨天应业务经理的要求进行了些改进,同时也应楼上兄弟的要求,再详细说明下。
    我具体的做法如下:
    A列    指派业务员     此单元格设置文本控件 填报属性中对应 指派业务员字段
    B列    指派时间         此单元未设置文本控件,未设置填报属性,也就是说填报的时候,此单元格内容不会填入数据库
    C列    指派业务员      此单元未设置文本控件,未设置填报属性,也就是说填报的时候,此单元格内容不会填入数据库
    D列    公示=IF(A1+1=\'1\',NULL,IF(A1=C1,B1,TODAY()))    此单元格设置文本控件,填报属性中 对应指派时间
    通过上面的做法,我在设置了c、d两列的隐藏后,报表中只会显示A B两列
    当填报人员修改A列的时候 D列会自己对比A列是否和C列的值相同,当值一样的时候,就代表没有修改,D的值就是B的值,也就是数据库中上一次录入填报时间;当A列的值和C列的值不一样的时候,代表填报人对A列进行了修改,D列自动通过TODAY()获取当前日期。
    提交的时候,其实B列和C列是不会写入数据库的,因为没设置文本控件也没设置填报属性。
    D列公式中的A1+1=\'1\',是判断A1是否为空,如果A1没有值,就代表没有指派,自然指派时间就是NULL
    这里不能用\' \',不然时间会显示为1900-1-1.


    我的就这么多了,如果有朋友,有什么问题 或者想法 欢迎交流。
    回复
    2016-07-28 09:14 
最佳回答
0
boykarl911发布于2016-7-28 09:14(编辑于 2023-9-6 09:34)
555
  • yixingtianyuan yixingtianyuan

    IF(条件,TODAY(),SQL()),可以直接判断,不用加列
    回复
    2016-07-28 09:21 
最佳回答
0
yixingtianyuan发布于2016-7-28 09:21(编辑于 2023-9-6 09:34)
555
  • boykarl911 boykarl911(提问者)
    我是基于三点考虑没这么做的。首先,我测试过,加的单元格在隐藏后报表导出的时候,是不会被导出的。所以,我不担心加的单元个导致报表出现我不想让人看到的内容
    其次,如果用SQL函数直接写的话,SQL语句短还无所谓,长的话,就会很长..不符合我菜鸟的身份..
    最后,因为这个SQL语句是做成了数据集的,我直接引用。后期当我想修改某些取数条件的时候,我直接修改数据集即可。如果按这个方法,我还得在单元格里单独修改。不方便。(这个原因是很现实的,实际做的过程中,我就发现数据集的SQL语句写的有问题,导致结果是错误的,进行了一次修改)
    综上所述,我觉得加个单元格是可以接收的。直接用语句做IF,不太适合我这次的工作。
    回复
    2016-07-27 12:41 
最佳回答
0
yixingtianyuan发布于2016-7-28 09:44(编辑于 2023-9-6 09:34)
555
  • 0关注人数
  • 1250浏览人数
  • 最后回答于:2016-7-28 09:44
    活动推荐 更多
    热门课程 更多
    返回顶部