设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 9232|回复: 23
打印 上一主题 下一主题

[窗体] 你为该字段输入的值无效——其错误号是多少[已解决]

[复制链接]
跳转到指定楼层
1#
发表于 2011-2-10 13:01:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 简 于 2011-2-12 12:57 编辑

我在输入时间时,需要将(小时:分钟)转化为小时,比如3:30转化为小时后就是3.5小时。我在文本框里采用中时间的格式,这时出现的问题是:当时间为3小时时,我想提高输入效率,省略后面的:00,直接回车,这时就出现错误提示,如下图所示:


我就想问,这个错误提示的错误号是多少,我想屏蔽它,应该怎么处理。

还有,如果我输入3:00时,有没有办法直接输入3而不弹出上面的错误提示呢。

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
24#
发表于 2011-9-6 15:02:31 | 只看该作者
高手们,能留下联系方式吗??我有问题解决不了,5555555
23#
发表于 2011-2-20 20:33:01 | 只看该作者
本帖最后由 todaynew 于 2011-2-20 21:09 编辑
简 发表于 2011-2-20 19:23
我将你的代码加入我的数据库中,运行却是错误,不能正常运行。

另外,我想了想,从你的代码上来看,你是 ...


可以根据交叉查询动态设置选择查询,具体方法可参见以下示例中窗体1中的代码:

本帖子中包含更多资源

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

x
22#
 楼主| 发表于 2011-2-20 19:23:40 | 只看该作者
本帖最后由 简 于 2011-2-20 20:15 编辑
todaynew 发表于 2011-2-20 10:39
在原例的基础上,按以下步骤进行即可:

1、在模块中写一个自定义函数:
我将你的代码加入我的数据库中,运行却是错误,不能正常运行。

另外,我想了想,从你的代码上来看,你是把字段的类型设置为数字型,保存的是小时形式,而不是(小时:分),然后再在SQL的查询语句中通过hhmm()函数来转换,使之在查询中显示为(小时:分)。

你的SQL我想到一个问题,你的列标题即工时类别的值是固定的,如果以后在工时类别上增加或删除或修改了某个值,比如把刨下模改成刨凹模,那代码上是不是也要相应的修改呢?后期的维护又如何考虑这个问题呢。
21#
发表于 2011-2-20 10:39:21 | 只看该作者
简 发表于 2011-2-20 09:21
我并没有用到有“#”之类的地方呀,而且“#”也只是代表日期,与文本,数字类型无关。而且我的交叉查询是 ...

在原例的基础上,按以下步骤进行即可:

1、在模块中写一个自定义函数:

Function hhmm(h As Single)
    hhmm = Format(Int(h), "00") & ":" & Format(Int((h - Int(h)) * 60), "00")
End Function

2、以原交叉查询为基础,做一选择查询:

SELECT qryGrLb.工序, qryGrLb.操作工, hhmm(nz([总计 工时],0)) AS 总计, hhmm(nz(qryGrLb.刨普通,0)) AS 刨普通, hhmm(nz(qryGrLb.刨下模,0)) AS 刨下模, hhmm(nz(qryGrLb.普通,0)) AS 普通
FROM qryGrLb;
20#
发表于 2011-2-20 10:00:55 | 只看该作者
本帖最后由 todaynew 于 2011-2-20 10:05 编辑
简 发表于 2011-2-20 09:21
我并没有用到有“#”之类的地方呀,而且“#”也只是代表日期,与文本,数字类型无关。而且我的交叉查询是 ...


这只是算法问题而已。你总不能指望Access能直接算出"2:30" + "1:15"="3:45"吧?

所以这是在哪个环节将小数转换为时间格式的问题,与交叉查询何干?

你欺负交叉查询不会说话,这是不对的。


19#
 楼主| 发表于 2011-2-20 09:21:17 | 只看该作者
todaynew 发表于 2011-2-20 08:30
如果计算的结果为一个字段那么交叉查询出不出错没什么关系;如果计算的结果作为查询的准则,那么将原先 ...

我并没有用到有“#”之类的地方呀,而且“#”也只是代表日期,与文本,数字类型无关。而且我的交叉查询是采用系统向导方式生成的,具体实例可以见http://www.office-cn.net/thread-96172-1-1.html,将附件中的工时改为文本字符,这时再看交叉查询,就失效了。
18#
发表于 2011-2-20 08:30:04 | 只看该作者
本帖最后由 todaynew 于 2011-2-20 08:37 编辑
简 发表于 2011-2-19 22:31
你这段代码不能解决大于24小时的工时,比如25:10;
要解决的话,代码就应该是str=format(int(h) ,"00" ...


如果计算的结果为一个字段那么交叉查询出不出错没什么关系;如果计算的结果作为查询的准则,那么将原先使用#号处改为单引号就完事了。
简言之,数据类型不是导致查询出错的根本,查询书写错误才是真正的原因。
17#
 楼主| 发表于 2011-2-19 22:31:25 | 只看该作者
本帖最后由 简 于 2011-2-19 22:53 编辑
todaynew 发表于 2011-2-11 19:07
进位制问题,有何难哉?
假设变量h中存小时数据,则:
str=format(int(h) mod 24,"00") & ":" & format(i ...


你这段代码不能解决大于24小时的工时,比如25:10;
要解决的话,代码就应该是str=format(int(h) ,"00") & ":" & format(int((h-int(h))*60 ),"00")

而且这个形式只能存为文本,不能存为时间格式,如果存为时间格式,25:10就变成1:10了。如果存为文本格式,交叉查询就会出错,郁闷呀。
16#
 楼主| 发表于 2011-2-19 22:13:39 | 只看该作者
本帖最后由 简 于 2011-2-19 22:43 编辑

在工时累加中,我需要显示大于24小时的时间形式hh:mm,比如35:05,我原来设置的时间格式是短时间,现在看来,不能用短时间,如果用字符,又做不起交叉查询的工时统计,怎么办呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-22 09:58 , Processed in 0.103790 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表