初学者的关于用DateTimePicker查询的问题!!!(送80分可以吗)(80分)

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

mytouching

Unregistered / Unconfirmed
GUEST, unregistred user!
各位富翁好,在下是一名delphi的初学者,也是一位爱好者。
我昨天碰到了一个这样的问题,我想用DateTimePicker控件来直接选择查询的
日期,然后通过点击“查询”按钮来实现查询功能。但始终未能成功,以下是我写
的代码,可能错误太多,望富翁莫耻笑!(我用的d6和paradox)

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
DateTimePicker1.Date:=query1.fieldbyname('riqi').Value;
end;

procedure TForm1.DataSource1UpdateData(Sender: TObject);
begin
DateTimePicker1.Date:=query1.fieldbyname('riqi').Value;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
sdate:string;
begin
sdate:='';
query1.Close;
query1.SQL.Clear;
query1.FieldByName('riqi').Asstring:=datetostr(DateTimePicker1.Date);
sdate:=query1.FieldByName('riqi').Asstring;
query1.SQl.Add('Select'+sdate);
query1.SQl.Add('select * FROM shiyan');
query1.Prepare;
query1.Open;
end;

procedure TForm1.DateTimePicker1Click(Sender: TObject);
begin
DataSource1.OnDataChange:=nil;
query1.Edit;
end;
 
query1.SQl.Add('Select'+sdate);
query1.SQl.Add('select * FROM shiyan');
这两句的作用是
query1.SQl.Add('Select'+sdate + 'select * FROM shiyan');
不知这样组合起来的SQL语名如何用
是不是这样写呢
不知你的riqi是何种类型的字段如果是string的就可以用
query1.SQl.Add('select * FROM shiyan where riqi='''+sdate +'''');

 
在query中用参数吧
 
procedure TForm1.Button1Click(Sender: TObject);
begin
query1.Close;
query1.SQL.Clear;
query1.sql.add('select * from shiyan where riqi=#'+datetostr(datetimepicker1.date)+'#'
query1.Prepare;
query1.Open;
end;
 
因为考虑到各数据库的不同,所以用到日期查询时最好还是用参数.
qry.active:=False;
qry.sql.clear;
qry.sql.add:='select * from youtable where yourdate=:thedate'
qry.ParamByName('thedate').AsDateTime:=DateTimePicker1.datetime;
qry.active:=True;
你试试看.只查日期可以用TDATE类型.
 
procedure TForm1.Button1Click(Sender: TObject);
var
sdate:string;
begin
sdate:='';
query1.Close;
query1.SQL.Clear;
query1.FieldByName('riqi').Asstring:=datetostr(DateTimePicker1.Date);
//错的!!你要做查询,而不是给查询的字段赋值
sdate:=query1.FieldByName('riqi').Asstring;
query1.SQl.Add('Select'+sdate);
//SELECT 日期值?什么意思?搞错吧!
query1.SQl.Add('select * FROM shiyan');
//SELECT 2001-10-31 SELECT * FROM SHIYAN——有这样的SQL语句吗?
//应该是——SELECT * FROM SHIYAN WHERE RIQI=#2001-10-31#
//记得日期值前后要加#
query1.Prepare;
query1.Open;
end;
 
谢谢,以后还请多帮助!
 

Similar threads

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