报错:不正常的定义参数对象,提供了不一致或不完整的信息数据库是用的ACCESS!DT字段是时间日期型的。这段SQL语句在.net里测试过是没有错误的。不知道怎么到DELPHI7中就不行了
这是代码~大家帮忙分析下好么?谢谢了function FBillManger():TDataSet;
var
dtshijian :string;
begin
adoyingyong.DataModule2.conn.Open;
adoyingyong.DataModule2.dt1.Connection:= adoyingyong.DataModule2.conn;
adoyingyong.DataModule2.dt1.CommandType:= cmdText;
dtshijian:= 'select * from bill where dt between #2000-12-12 12:12:12# and #2007-12-12 12:12:12#';
adoyingyong.DataModule2.dt1.CommandText:= dtshijian;
adoyingyong.DataModule2.dt1.Active:=true; result:= adoyingyong.DataModule2.dt1 ;
end;
这是代码~大家帮忙分析下好么?谢谢了function FBillManger():TDataSet;
var
dtshijian :string;
begin
adoyingyong.DataModule2.conn.Open;
adoyingyong.DataModule2.dt1.Connection:= adoyingyong.DataModule2.conn;
adoyingyong.DataModule2.dt1.CommandType:= cmdText;
dtshijian:= 'select * from bill where dt between #2000-12-12 12:12:12# and #2007-12-12 12:12:12#';
adoyingyong.DataModule2.dt1.CommandText:= dtshijian;
adoyingyong.DataModule2.dt1.Active:=true; result:= adoyingyong.DataModule2.dt1 ;
end;
但是我想精确到秒啊dtshijian:= 'select * from bill where dt between #2000-12-12# and #2007-12-12#';
Date2:='2007-12-12 12:12:12';
dtshijian:=Format('select * from bill where dt between #%s# and #%s#',[Date1,Date2]);
dtshijian:= 'select * from bill where (dt >' + # + '2000-12-12 12:12:12' + # + ') and (dt <' + # + '2007-12-12 12:12:12' + # + ')';dtshijian:= 'select * from bill where (dt >' + # + DateTimeToStr(Date1) + # + ') and (dt <' + # + DateTimetoStr(date2) + # + ')';
不好意思,没有测试.
测了以后发现dtshijian:= 'select * from bill where (dt >' + '# 2000-12-12 12:12:12 #' + ') and (dt <' + '#2007-12-12 12:12:12#' + ')';也无法通过,因为ADOquery.open函数把2007-12-12 12:12:12总是作为两个字段来处理
不过这样可以通过:
dtshijian:= 'select * from bill where (dt >' + FloatToStr(StrToDateTime('2000-12-12 12:12:12')) + ') and (dt <' + FloatToStr(StrToDateTime('2007-12-12 12:12:12')) + ')';
Str := 'select * from bill where ldate > :date1';
ADOQuery1.SQL.Add(str);
ADOQuery1.Parameters.ParamByName('date1').Value := StrToDateTime('2000-12-12 12:12:12');
ADOQuery1.Open;
Decodetime(time,hour,min,sec,msec);