用adoquery查询foxpro表,条件是日期型,其表达市的问题?急!(100分)

  • 主题发起人 主题发起人 taim
  • 开始时间 开始时间
T

taim

Unregistered / Unconfirmed
GUEST, unregistred user!
我的表达是:where riqi='05/27/01'(因为foxpro表中是这样显示的),也用了riqi='01-5-27'
(因为delphi是这样显示的),而且去掉引号也试了。均出现这样的错误信息:
“[ODBC Visual Foxpro Driver]Operator/operand type mismatch”。
不知其正确的表达式是什么?谢谢大虾帮帮忙。(如果去掉此条件,则无错误出现)
 
双引号!
 
双引号也不行。
 
用个参数不就可以了
where riqi = :param
 
是个参数,但他的格式呢。正确的应该怎样写?
 
不如都改为长日期型,在控制面板的区域设置的日期里改.
我用BCB试了一下,好象可以
SYSTEMTIME SystemTime; //定义日期时间变量
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from 表1 where datetime <= :dt ");
GetLocalTime(&amp;SystemTime); //得到当前日期时间
ADOQuery1->Parameters->ParamByName("dt")->Value = SystemTimeToDateTime(SystemTime);
//给参数赋值
ADOQuery1->Parameters->ParamByName("dt")->DataType = ftDateTime; //参数类型
ADOQuery1->Open();

以上是将表1中日期时间小于当前日期时间的记录选出
 
where riqi='05/27/01'
这样子:
adoquery1.sql.text:='select * from utable where riqi=:dt';
adoquery1.parambyname('dt').AsDatetime:=strtodate('05/27/01');
adoquery1.open;
就可以了
 
form.create 时
设shortdataformat:='mm/dd/yy';
parambyname('dt').AsDatetime:=strtodate('05/27/01')
 
必须采用日期格式 MM-DD-YY
 
同意sonie!

如果不想传递参数的话也可以这样写

'select * from utable where riqi=StrToDate("'+'05/27/01'+'")'
 
你取出数据之后用FORMATDATETIME('YYYY-MM-DD',日期型数据)转换一下,不过注意一下
FORMATDATETIME返回的是字符串的类型,还要将它转换为日期类型的数据
 
ADO的日期格式是跟Local SQL不同,如果是VFP6应该这样写 {^2001-5-27};
反正你在Foxpro里是怎样写ADOQuery就跟着怎样写。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部