100分,请高手指教,可以吗。(100分)

  • 主题发起人 主题发起人 mytouching
  • 开始时间 开始时间
M

mytouching

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现一个日期时间的范围查询。我用了两个DateTimePicker控件,但是我查询的时候系统也不
报错,也能显示出DBGRID的字段,但就是显示不出值啊,这到底是怎么回事啊,难道是paradox的错???
代码如下
procedure TForm1.Button1Click(Sender: TObject);
BEGIN
IF DTP1.DATE<DTP2.DATE THEN
BEGIN
SHOwMESSAGE('起始日期应小于终止日期!');
EXIT;
END;
QUERY1.CLOSE;
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD('SELECT * FROM reservat WHERE card_exp>=:RQ1 AND card_exp<=:RQ2');
QUERY1.PARAMBYNAME('RQ1').AsDate:=DTP1.DATE;
QUERY1.PARAMBYNAME('RQ2').AsDate:=DTP2.DATE;
query1.Prepare;
QUERY1.OPEN;
end;

我用的是(D6+PARADOX)
 
估计是字段的问题吧。
你把字段改成其他类型再试试。
 
很明显,你把起始和终止日期弄翻了
你可以看看你第一句比较的时候
再看看你的where条件...
对了,你是不是butone?
 
不是啊。
 
是不是字段的属性有问题,
要不你跟踪看看问题在那
 
不用参数传递,直接构造 SQL 语句试试
 
try
QUERY1.PARAMBYNAME('RQ1').AsDateTime:=DTP1.DATE;
QUERY1.PARAMBYNAME('RQ2').AsDateTime:=DTP2.DATE;
 
估计有两个原因:
1、象“轩辕散光”所说的,你的if条件有误,应该是:
IF DTP1.DATE>DTP2.DATE THEN
....
2、如果上面原因不成立,可能是你的字段card_exp的类型不是日期类型或值不在你所
查询的范围内,要不你改一下where条件语句如下:
where card_exp between :RQ1 AND :QR2
 
不顯示值只能說明你的條件不符合。你最好是用DataTime﹐然后將最后的SQL抓出來看看有
沒有什么問題。
 
肯定是起始和终止日期弄反了
 
我贊成 snake 的說話﹐
改成這樣在sql-server下通過
QUERY1.PARAMBYNAME('RQ1').AsDateTime:=DTP1.DATE;
QUERY1.PARAMBYNAME('RQ2').AsDateTime:=DTP2.DATE;

因為card_exp在表中定義的類型是TDataTime而不是TDate.
 
这个问题我以前也出现过。

QUERY1.PARAMBYNAME('RQ1').AsDate:=DTP1.DATE;
QUERY1.PARAMBYNAME('RQ2').AsDate:=DTP2.DATE;

这两句可能有问题!DateTimePicker.Date 有时候会把时间一起去出来!
 
谢谢大家的帮忙,小弟分数不多了。抱歉啊。呵呵。
 
接受答案了.
 
后退
顶部