Office中国论坛/Access中国论坛

标题: 有难度的问题——关于日历控件多选 [打印本页]

作者: 凡人之道    时间: 2020-3-5 16:23
标题: 有难度的问题——关于日历控件多选
新手,正在做一个小模块,想实现双日历多日期选择,做了好久了也没能做成,哪位高手给指点一下或提供一下类似的例子,在此不胜感激。效果图上传。注:效果图网上找的好像是网页版,但是我想access也能做出。
作者: 凡人之道    时间: 2020-3-5 16:25
上面的效果图[attach]63642[/attach]
作者: roych    时间: 2020-3-6 00:04
其实难也不能说多难。2003版之前是有calendar(日历)或者datetimepicker(日期选择器)控件的。datetimepicker控件可能需要点击2次。不过calendar本身就是一个日历,把两个月份的日历放在一个窗体上,设置成相邻2个月就好了。当然,还有一些细节需要注意:
例如,两个日期设置的默认日期应该是相隔一个月。
再如,点选完第一个日期,应该将数据缓存到某个位置(例如,数组),点选完第二个日期,再添加进去到这个位置,排序,按大小排序后拼接成“从某某日到某某日”。

大体思路可以从这方面着手。——但是,遗憾的是,2010版本以后,它们所属的mscomctl控件已经被微软给阉割了,——可能是因为文本框选用日期格式后,获取焦点时自动弹出日期选择器了吧,又或者因为这个控件的兼容性一直有这种那种问题。反正,默认情况下是不会安装它了。所以一旦用它,你可能需要给客户端手动或自动去安装这个控件,可能很麻烦。

在这种情况下,要么自己去写一个控件,这就涉及你所说的“高难度”了。单独一个日历控件,倒也没什么。但要求双日历的话,个人更倾向于写一个类来调用。然后还要继续考虑前面提及的细节问题。一时间还真没法写。——有空的时候,我再试试。

此外,还有一种变通的办法。这个控件貌似是一个叫做easyUI的jQuery插件。你也可以通过jQuery去引用,论坛上也有一些在Access里使用jQuery的例子,但据我所知,在Access里使用jQuery插件,门槛还是有一点的。前面提到过的问题一个都不少,可能还有所增加。
1、内核IE的安全性提示。印象中很难除去这个黄色警告。
2、web控件与Access控件的交互有时候可能会给你造成困扰,例如,怎么判断点击的是Access上的按钮而不是webbrowser上的按钮。又或者说,webbroswer上的点击事件如何返回给Access接收。有些例子说是解决过这个问题。但测试后时灵时不灵。所以也不好说什么。

最后一点,其实这很重要么?如果你要把数据录入到数据库的话,这反而是一种很麻烦的事情。显示了“从某某日到某某日”,但录入时你还要重新把这个文本处理一遍才能录入。即使是查询,你也需要做同样的处理才能运行查询。
但web上为什么就可以呢?——因为它有其它东西支撑。jQuery本身就可以解决兼容性问题,还可以使用json等内置数据结构来存储数据,甚至JavaScript上的数组也比VBA的要强,至少VBA的数组没有Pop,push这些方法(总不能为这个自己去写一个数组类吧?)。

总结一下,这个不是不能做,而是基于以下原因,不建议做:
1、缺乏其它外在的有力支撑,造轮子的代价非常大。
2、从业务逻辑上来看,并不利于业务的实现。——除了好看之外,可能一无是处。
3、使用第三方插件,体验可能十分糟糕。
作者: roych    时间: 2020-3-6 00:09
为了避免我空口说白话,还是上传一个论坛上的例子吧。当然,没有web控件那么好看,暂时也没实现“双日期”。[attach]63644[/attach]
将日期标签复制一份做一下,可以实现双日期么?理论上是可以。但前面提及的细节,你需要注意。此外,有太多的事件要写,所以我还是倾向于写一个类来处理它。

作者: 凡人之道    时间: 2020-3-6 07:08
roych 发表于 2020-3-6 00:09
为了避免我空口说白话,还是上传一个论坛上的例子吧。当然,没有web控件那么好看,暂时也没实现“双日期” ...

感同身受,你上传的例子我看了一下,昨晚改了改,通过页面上的35个标签确定录入日期,很有创意,但是真应了你说的那句话“从业务逻辑上来看,并不利于业务的实现。——除了好看之外,可能一无是处“。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3