设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2232|回复: 11
打印 上一主题 下一主题

[Access本身] [求助]标准表达式中数据类型不匹配?

[复制链接]
跳转到指定楼层
1#
发表于 2005-9-17 17:55:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我在编写access程序时,遇到如下问题:

    Dim con As Object

    Dim rs As New ADODB.Recordset

    Set con = Application.CurrentProject.Connection

    strSQL = "select * from 水电记录表 where 水电记录表.抄表日期 = " & "'" & Forms!增加年月!请输入年月 & "'"

    rs.Open strSQL, con, adOpenKeyset, adLockBatchOptimistic

程序执行到最后有下划线的这句话报错,信息为:“标准表达式中数据类型不匹配”

水电记录表中的“抄表日期”为日期型字段,窗体中“Forms!增加年月!请输入年月”也是日期型,strSQL = "select * from 水电记录表 where 水电记录表.抄表日期 = '2005年09月' "

我认为是条件语句where的问题,可是不知道怎样改写才能让程序通过,请前辈给予指点,谢谢啦!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
12#
 楼主| 发表于 2005-11-26 09:44:00 | 只看该作者

不一定

该死的access语法上总是捉摸不定,一会行,一会不行。
11#
发表于 2005-9-24 07:56:00 | 只看该作者
以下是引用asdf26在2005-9-18 13:53:00的发言:

谢谢!我的窗体上的控件是文本框,我在格式和有效性上做了限制:“9999\年99\月”,另外,我在水电记录表的日期型字段上也做了格式限制:“yyyy年mm月”。根据您的启发,我在程序中加了一个日期型变量"dateLS"来记载"Forms!增加年月!请输入年月"的值,并且将strSQL替换成如下格式:

dim dateLS as date

strSQL = BuildCriteria("select * from 水电记录表 where 水电记录表.抄表日期", dbDate, CStr(Forms!增加年月!请输入年月))

Debug.Print strSQL

rs.SQL=strSQL

......

程序通过了,但是结果却错了!因为rs(注:recordset)永远为空,即:rs.recordcount=0,我很郁闷!

请教大虾指点迷津!



这样试试看,如果还是不对,把你Debug出来的内容贴上来,一看就知道什么问题了。

[此贴子已经被作者于2005-9-23 23:57:09编辑过]

10#
发表于 2005-9-24 07:53:00 | 只看该作者
以下是引用asdf26在2005-9-18 14:42:00的发言:



版主:你好!

BuildCriteria是什么函数?我没见过。帮助上面也查不到。



Application类的一个方法。
9#
发表于 2005-9-24 07:39:00 | 只看该作者
strSQL = "select * from 水电记录表 where 水电记录表.抄表日期 = #" & cstr(cdate(Forms!增加年月!请输入年月)) & "#"



我想是可行的。
8#
 楼主| 发表于 2005-9-18 22:42:00 | 只看该作者
版主:你好!BuildCriteria是什么函数?我没见过。帮助上面也查不到。
7#
 楼主| 发表于 2005-9-18 21:53:00 | 只看该作者
谢谢!我的窗体上的控件是文本框,我在格式和有效性上做了限制:“9999\年99\月”,另外,我在水电记录表的日期型字段上也做了格式限制:“yyyy年mm月”。根据您的启发,我在程序中加了一个日期型变量"dateLS"来记载"Forms!增加年月!请输入年月"的值,并且将strSQL替换成如下格式:dim dateLS as datedateLS = Forms!增加年月!请输入年月strSQL = "select * from 水电记录表 where 水电记录表.抄表日期=" & dateLSrs.SQL=strSQL......程序通过了,但是结果却错了!因为rs(注:recordset)永远为空,即:rs.recordcount=0,我很郁闷!请教大虾指点迷津!
6#
发表于 2005-9-18 01:34:00 | 只看该作者
以下是引用asdf26在2005-9-17 16:47:00的发言:



具体语法怎么写呀?



strSQL = BuildCriteria("select * from 水电记录表 where 水电记录表.抄表日期",dbDate,Forms!增加年月!请输入年月)

从语法上来说这样就正确了,但是从程序上来说,前面sgrshh29提出的很有道理,虽然没有看过你的窗体控件怎么命名,但是感觉你的Forms!增加年月!请输入年月确实不象是日期型的,好好检查一下。
5#
发表于 2005-9-18 01:18:00 | 只看该作者
如果你能确认窗体上的日期是日期型的,可以这样写了试试:strSQL = "select * from 水电记录表 where" & "水电记录表.抄表日期 = " & Forms!增加年月!请输入年月不过从你的strsql中的Forms!增加年月!请输入年月来看,不像是日期型的,导致与水电记录表.抄表日期类型不匹配.

4#
 楼主| 发表于 2005-9-18 00:47:00 | 只看该作者
具体语法怎么写呀?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-11 04:45 , Processed in 0.089321 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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