100分,为什么查询总是出错?提示....

shaxue 2003-08-20 06:36:48
表:入库记录表,字段:代码,类别,日期id,都是text字段
把数据从临时表中导入到此表:
insert into 入库记录表 select 数量,金额,代码,类别,日期id from 临时表,其中
日期id=format(date,"yyyymmdd").所有字段都为text文本字段
我的目的是根据日期id汇总数量和金额,来做指定时间范围的入库查询
s1="select sum(val(数量)),sum(val(金额)) from 入库记录表 where val(日期id)=20030820"
re1.open s1,cn,..
查询出错:标准表达式种数据类型不正确
也就是val(日期id)=20030820这句话,有问题,那么问题出在哪里呢?我实在是找不出来,还请高手帮忙?
...全文
56 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
minghui000 2003-08-22
  • 打赏
  • 举报
回复
s1="select sum(val(数量)),sum(val(金额)) from 入库记录表 where trim(日期id)='20030820'"
lzj34 2003-08-21
  • 打赏
  • 举报
回复
即然如此何不设计成"日期id"为数字型
DragonBill 2003-08-21
  • 打赏
  • 举报
回复
用str将20030820转为字符串再比较.
饮水需思源 2003-08-21
  • 打赏
  • 举报
回复
“日期id”的类型为text,设计不合理
Sammi52 2003-08-21
  • 打赏
  • 举报
回复
把语句放到access中执行看会不会出错,如果不出错则说明语名没有语法上的错误

select sum(val(数量)),sum(val(金额)) from 入库记录表 where val(日期id)=20030820
Sammi52 2003-08-21
  • 打赏
  • 举报
回复
"val(日期id)>20030820"没问题
iiboy 2003-08-21
  • 打赏
  • 举报
回复
s1="select sum(val(数量)),sum(val(金额)) from 入库记录表 where 日期id>'20030820' and 日期id<'20030920'
应该就可以查询一段时间的记录了,val(日期id)这个数据经转换后会有少许误差的,它可能不会精确等于某个数值.
iiboy 2003-08-21
  • 打赏
  • 举报
回复
s1="select sum(val(数量)),sum(val(金额)) from 入库记录表 where 日期id>'20030820'
of123 2003-08-21
  • 打赏
  • 举报
回复
有时候出什么错?
我们都没有用字符串处理日期的经验。把你的情况说清楚(错别字就忍受了),帮你分析分析。
Alicky 2003-08-20
  • 打赏
  • 举报
回复
s1="select sum(val(数量)),sum(val(金额)) from 入库记录表 where 日期id between #2003-08-16 0:00:00# and #2003-08-20 23:59:59#"
hengxin54 2003-08-20
  • 打赏
  • 举报
回复
s1="select sum(val(数量)),sum(val(金额)) from 入库记录表 where 日期id>'2003-08-16' and 日期id<'2003-08-20'
 


s1="select sum(val(数量)),sum(val(金额)) from 入库记录表 where 日期id between '2003-08-16' and '2003-08-20'"
shaxue 2003-08-20
  • 打赏
  • 举报
回复
总是的意思就是在别人的电脑上,就是,有时是在我的电脑上,我想知道就是val(日期id)>20030820到底是行还是不行?
emerson3000 2003-08-20
  • 打赏
  • 举报
回复
标题:……为什么查询总是出错?……
——————————————
你有说:……这个语句是正确的,但是有时候,出错。……

——————————————

到底是“总”还是“有时”?faint……
shaxue 2003-08-20
  • 打赏
  • 举报
回复
你们是不是不知道我的意思?我把日期比如:2003-08-20,变成字符串20030820,作为日期id,输入到表中去,然后我利用val(日期id)>20030820来查询所有20好以后的,不要总是说什么,===,要的是时间范围,不是用日期类型,是因为这个字段还有别的用处。
我说的事为什么出错,并没有说这个语句是错误的,这个语句是正确的,但是有时候,出错。我不知道这是为什么。
metious 2003-08-20
  • 打赏
  • 举报
回复
val(日期id)=20030820,没有意义,s1="select sum(val(数量)),sum(val(金额)) from 入库记录表 where trim(日期id)='20030820'" 就行了
emerson3000 2003-08-20
  • 打赏
  • 举报
回复
如果数据库中日期字段是文本类型,则不能正确查询时间段,比如,你若查询2003-8-1到2003-8-19之间的数据,你会发现,2003-8-2到2003-8-9之间的数据查不出来,因为它们比较时是根据ascii比较的,所以建议你将日期字段类型改为日期类型。
祝你成功
shaxue 2003-08-20
  • 打赏
  • 举报
回复
那么如果我要查询一段时间的呢?我的想法是:val(日期id)>20030816 and val(日期id)<20030820
Wang_xiaoni 2003-08-20
  • 打赏
  • 举报
回复
#2003020# 而不是 '20030820'
cn0005 2003-08-20
  • 打赏
  • 举报
回复
s1="select sum(val(数量)),sum(val(金额)) from 入库记录表 where trim(日期id)='20030820'"
zhenglc 2003-08-20
  • 打赏
  • 举报
回复

直接用 日期id='20030820'

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧