procedure TForm1.Button1Click(Sender: TObject);
var
sql:string;
begin
sql:='select count(*) as gs from 学生信息 where (注册时间>=:begintime) and (注册时间<=:endtime)';
adoquery1.Close ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add(sql); adoquery1.Parameters.ParamByName('begintime').Value :=DateTimePicker1.DateTime;
adoquery1.Parameters.ParamByName('endtime').Value :=DateTimePicker2.DateTime;
adoquery1.Prepared ;
adoquery1.Open;
statusbar1.Panels [1].Text :=adoquery1.fieldbyname('gs').AsString ;
sql:='select * from 学生信息 where (注册时间>=:begintime) and (注册时间<=:endtime)';
adoquery1.Close ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add(sql);
adoquery1.Parameters.ParamByName('begintime').Value :=DateTimePicker1.DateTime;
adoquery1.Parameters.ParamByName('endtime').Value :=DateTimePicker2.DateTime;
adoquery1.Prepared ;
adoquery1.Open;end;
access数据库,DateTimePicker1的format 为 yyyy-MM-dd HH:mm:ss 我的意思是查询一天中任意两个时间之间的数据
var
sql:string;
begin
sql:='select count(*) as gs from 学生信息 where (注册时间>=:begintime) and (注册时间<=:endtime)';
adoquery1.Close ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add(sql); adoquery1.Parameters.ParamByName('begintime').Value :=DateTimePicker1.DateTime;
adoquery1.Parameters.ParamByName('endtime').Value :=DateTimePicker2.DateTime;
adoquery1.Prepared ;
adoquery1.Open;
statusbar1.Panels [1].Text :=adoquery1.fieldbyname('gs').AsString ;
sql:='select * from 学生信息 where (注册时间>=:begintime) and (注册时间<=:endtime)';
adoquery1.Close ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add(sql);
adoquery1.Parameters.ParamByName('begintime').Value :=DateTimePicker1.DateTime;
adoquery1.Parameters.ParamByName('endtime').Value :=DateTimePicker2.DateTime;
adoquery1.Prepared ;
adoquery1.Open;end;
access数据库,DateTimePicker1的format 为 yyyy-MM-dd HH:mm:ss 我的意思是查询一天中任意两个时间之间的数据
select *
from
table
where date > #2006-01-01#
然后
where 注册时间 between #开始时间# and #结束时间#
试试
中间多了个空格
写成(注册时间>=:begintime)就可以了。有两处都是这个问题。
var
sql:string;
begin
adoquery1.Close;
sql:='select count(*) as gs from 学生信息 where (注册时间>=:begintime) and (注册时间<=:endtime)';
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sql); adoquery1.Parameters.ParamByName('begintime').Value:=DateTimePicker1.DateTime;
adoquery1.Parameters.ParamByName('endtime').Value:=DateTimePicker2.DateTime;
adoquery1.Prepared ;
showmessage(sql);
adoquery1.Open;
statusbar1.Panels [1].Text :=adoquery1.fieldbyname('gs').AsString ;
sql:='select * from 学生信息 where (注册时间>=:begintime) and (注册时间<=:endtime)';
adoquery1.Close ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add(sql);
adoquery1.Parameters.ParamByName('begintime').Value:=DateTimePicker1.DateTime;
adoquery1.Parameters.ParamByName('endtime').Value:=DateTimePicker2.DateTime;
adoquery1.Prepared ;
showmessage(sql);
adoquery1.Open;
end;
以上是我我测试过的代码,除了空格那里,其他都是对的,也有数据出来。你试试看.
表名:test
字段1 aa 文本
字段2 borndate 日期/时间 with adoquery1 do
begin
close;
SQL.Text := ' select count(*) as gs from test where borndate>=:begintime';
Parameters.ParamByName('begintime').Value :=datetimePicker1.DateTime;
Open;
label1.Caption := Fields[0].AsString;
close;
SQL.Text := ' select * from test where borndate>=:begintime and borndate<=:endtime';
Parameters.ParamByName('begintime').Value :=datetimePicker1.DateTime;
Parameters.ParamByName('endtime').Value :=datetimePicker2.DateTime;
Open;
while not eof do
begin
Memo1.Lines.Add(fields[0].AsString+' '+Fields[1].AsString);
Next;
end;
end;
一个label,一个memo 你试一下,
"我试了程序我也测试过!每错,但就是读不出数据" ---看一下你的表中的字段是否为日期型的
var
sql:string;
begin
adoquery1.Close;
sql:='select count(*) as gs from 学生信息 where (注册时间>=:begintime) and (注 册时间<=:endtime)';
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sql);
adoquery1.Parameters.ParamByName('begintime').Value:=formatdatetime('yyyy-mm-dd hh:mm:ss',DateTimePicker1.DateTime);
adoquery1.Parameters.ParamByName('endtime').Value:=formatdatetime('yyyy-mm-dd hh:mm:ss',DateTimePicker2.DateTime);
adoquery1.Prepared ;
adoquery1.Open;
statusbar1.Panels[1].Text :=adoquery1.fieldbyname('gs').AsString ;
sql:='select * from 学生信息 where (注册时间>=:begintime) and (注册时间<=:endtime)';
adoquery1.Close ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add(sql);
adoquery1.Parameters.ParamByName('begintime').Value:=formatdatetime('yyyy-mm-dd hh:mm:ss',DateTimePicker1.DateTime);
adoquery1.Parameters.ParamByName('endtime').Value:=formatdatetime('yyyy-mm-dd hh:mm:ss',DateTimePicker2.DateTime);
adoquery1.Prepared ;
adoquery1.Open;
end;需要把日期格式化就可以了.
sql:='select count(*) as gs from 学生信息 where (注册时间> =:begintime) and (注册时间 <=:endtime)';
adoquery1.Close ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add(sql);
DateTimePicker2.Date:=DateTimePicker1.Date
adoquery1.Parameters.ParamByName('begintime').Value :=DateTimePicker1.Date;
adoquery1.Parameters.ParamByName('endtime').Value :=DateTimePicker3.DateTime; adoquery1.Parameters.ParamByName('begintime').Value :=DateTimePicker2.DateTmie;
adoquery1.Parameters.ParamByName('endtime').Value :=DateTimePicker4.DateTime;
adoquery1.Prepared ;
adoquery1.Open;
statusbar1.Panels [1].Text :=adoquery1.fieldbyname('gs').AsString ;
sql:='select * from 学生信息 where (注册时间> =:begintime) and (注册时间 <=:endtime)';
adoquery1.Close ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add(sql);
adoquery1.Parameters.ParamByName('begintime').Value :=DateTimePicker1.DateTime;
adoquery1.Parameters.ParamByName('endtime').Value :=DateTimePicker2.DateTime;
adoquery1.Prepared ;
adoquery1.Open;