SQL语句如何加入DELPHI中(100分)

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

dominolu

Unregistered / Unconfirmed
GUEST, unregistred user!
因在数据库设计时出现问题把clrq(处理日期)的类型设置成了字符型,在DELPHI设计中用
了datetimepick1和datetimepick2,在SQL SEVER中用
select * from datebase where cast(clrq as datetime) between datetimepick1 and
datetimepick2能够查询,
请问这个意思如何在DELPHI中实现
WITH ADOQUERY1 DO
BEGIN
SQL.TEXT:='SELECT * FROM DATEBASE WHERE ?????';
OPEN;
END;
100分献上
 
hehe, 搞错了一点点
WITH ADOQUERY1 DO
BEGIN
SQL.TEXT:='SELECT * FROM DATEBASE WHERE clrq between :clrq1 and :clrq2';
parameters.parambyname('clrq1').value:=datetimepick1.time;
parameters.parambyname('clrq2').value:=datetimepick2.time;
OPEN;
END;
 
真的可以吗?
都没有parameterbyname方法呀
Parameters.FindParam('')

Parameters[ParamIndex]
倒是可以的
只是前者虽然方便易读,记得好象以前用过一次,对于同名参数不能完成赋值
所以推荐后一种
 
你好好看看query 的用法,全部说得很清楚;
 
WITH ADOQUERY1 DO
BEGIN
sql.text:='SELECT * FROM DATEBASE WHERE clrq between :clrq1 and :clrq2';
parambyname('clrq1').asString:=Datetimetostr(datetimepick1.time);
parambyname('clrq2').asString:=Datetimetostr(datetimepick2.time);
prepare; open;
end; 这样就可以啦

 
WITH ADOQUERY1 DO
BEGIN
SQL.TEXT:='SELECT * FROM DATEBASE WHERE clrq between :clrq1 and :clrq2';
sql.parameterbyname('clrq1').value:=fromatdatetiem('hhmm'datetimepick1.time);
sql.parameterbyname('clrq2').value:=fromatdatetiem('datetimepick2.time');
OPEN;
END;
 
ADOQuery1.Parameters.ParamByName()
 
WITH ADOQUERY1 DO
BEGIN
Close;
SQL.Clear;
SQL.TEXT:='SELECT * FROM DATEBASE WHERE clrq between :clrq1 and :clrq2';
Parameters.ParamByName('clrq1').value:=fromatdatetiem('yyyy"-"mm"-"dd" "hh":"nn":"ss', datetimepick1.time);
Parameters.ParamByName('clrq2').value:=fromatdatetiem('yyyy"-"mm"-"dd" "hh":"nn":"ss', datetimepick2.time');
Open;
OPEN;
END;
 
都不行,这样的话,如果按日期排序会出现:
2002-12-10
2002-12-1
2002-12-2
我的是:
2002-12-1
2002-12-2
2002-12-10

 
如果按日期排序得到你要的效果
把系统日期格式该为“yyyy-mm-dd”!
 
我说过了,是字符型的,cast(clrq as datetime)就是要转换的,但不行。
希望大家看清问题。
 
select * from datebase where cast(clrq as datetime) between datetimepick1 and
datetimepick2

在上面把 datetimepick1 和 datetimepick2
改成具体的值。用字符串连接。
 
在SQL SEVER中用
select * from datebase where cast(clrq as datetime) between datetimepick1 and
datetimepick2能显示我需要检索的内容,但是如何在DELPHI中实现,clrq字段在数据库
设计的时候搞错了,用了字符型,但是又不能改数据库,请大家帮忙啊

 
select * from datebase where cast(clrq as datetime) between #datetimepick1# and
Edatetimepick2#
 
谢谢 !
问题已解决
 
多人接受答案了。
 
顶部