一个特别急的问题!(ADO ACCESS)(50分)

  • 主题发起人 主题发起人 delwang
  • 开始时间 开始时间
D

delwang

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ACCESS建的表,其中有一个字段为日期/时间类型:
首先,我不知道在ACCESS里日期/时间类型的格式是什么样的?
其次,我要将时间插入到库里,可遇到问题
time1:=now;
datamodule2.ADOQuery1.FieldByName('stime').AsDateTime :=strtodatetime(formatdatetime('yyyy-mm-dd ',time1));
可提示:adoquery1 :type mismatch for field stime excepting :widestring actual datetime
不知道如何解决?
后面的SQL语句还要用到该字段,所以很急!
 
错误是类型与字段类型不匹配,看看你的数据库字段类型设置!
 

datamodule2.ADOQuery1.FieldByName('stime').AsString :=formatdatetime('yyyy-mm-dd hh:nn:ss',time1);
试试.
 
我的设置是日期/时间呀,没错吧
 
to :TYZhang, :
你这样肯定可以,我原来就是那样写的,后来自己把数据库的‘STIME’字段类型改了
原因是我后面SQL里要用到该字段作为我查询的一个条件(时间进行比较),所以这个问题一定
要解决掉才行,且我不太清楚ACCESS里的日期/时间格式是啥样?
 
最简单的办法,是将Query的paramCheck设置成False,然后直接写SQL语句,设计时间的使用
Convert或者to_Date等转化,一切OK。
 
datamodule2.ADOQuery1.FieldByName('stime').AsDateTime := Now()
难道不行?
 
他里面含有冒号,Access使用#而不是'来实现时间段,Query认为是参数,所以会蹦叉
 
datamodule2.ADOQuery1.FieldByName('stime').AsDatetime :=now();
这样不行!我试了一下,提示同上
这是我后面要用到的,方便大家解决我这个问题:
begin
with adoquery1 do
begin
sql.clear;
close;
sql.add('select * from sun where stime<:ctime order by stime desc');
paramByname('ctime').asdatetime :=strtodatetime(formatdatetime('yyyy-mm-dd hh:mm:ss',(dateedit1.Date)));
//dateedit1是rxlib里的
open;
end;
end;
 
怎么没有人来回答呢?
 
请注意Assec的数据与普通数据不一样,不用''号,请用DELPHI6的SQL EXPLOR试一试就
知道!
 
begin
with adoquery1 do
begin
sql.clear;
close;
sql.add('select * from sun where stime<#'+formatdatetime('yyyy-mm-dd hh:mm:ss',(dateedit1.Date))+'# by stime desc');
open;
end;
end;
如果这样还不行的话,还是看一下表结构吧!
 
后退
顶部