datetimepicker的取值 |
尚未結案
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
我想让程序开始时的默认日期为昨天,
在form1.show时写入
datetimepicker1.date:=date()-1;
但在程序查询时我要随时更改date的值,
在button按下之前读datetimepicker1的值,
发现取得的date不是我更改之后的,
而是昨天的日期,难道是我手工改的日期不会随即写入datetimepicker1.date吗?
要怎么才认我手工改的日期呢?
我让label1.text:=formatdatetime('YYYYMMDD',datetimepicker1.date)
这样没错,是我改的日期,
可我在数据库里取数据时,就不是新的日期,
各位大虾试试看,是不是也同样的错误?
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
我想让程序开始时的默认日期为昨天,
在form1.show时写入
datetimepicker1.date:=date()-1;
但在程序查询时我要随时更改date的值,
在button按下之前读datetimepicker1的值,
发现取得的date不是我更改之后的,
而是昨天的日期,难道是我手工改的日期不会随即写入datetimepicker1.date吗?
要怎么才认我手工改的日期呢?
我让label1.text:=formatdatetime('YYYYMMDD',datetimepicker1.date)
这样没错,是我改的日期,
可我在数据库里取数据时,就不是新的日期,
各位大虾试试看,是不是也同样的错误?
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
procedure TForm3.FormShow(Sender: TObject);
var
a,b:string;
begin
a:=formatdatetime('YYYYMMDD',datetimepicker1.date);
b:=formatdatetime('YYYYMMDD',datetimepicker2.date);
sql1:='select sas.rundate,sas.art_no,a.descr,sas.sales,sas.sales_amnt';
sql1:=sql1 ' ' 'from st_art_sales_daily sas,article a';
sql1:=sql1 ' ' 'where sas.art_no=a.art_no and sas.store_no=4 and sas.sales>0';
// sql1:=sql1 ' ' 'and to_char(sas.rundate,' '''YYYYMMDD''' ') between ' formatdatetime('YYYYMMDD',datetimepicker1.date) ' and ' formatdatetime('YYYYMMDD',datetimepicker2.date);
sql1:=sql1 ' ' 'and to_char(sas.rundate,' '''YYYYMMDD''' ') between ' a ' and ' b;//这里我是想试两种方法 sql3:='select a.descr,a.suppl_no,s.name,a.stock,a.mmail_no,a.sell_pr*(1 tax.vat_perc/100.00) sell_pr,a.dms,a.on_order';
sql3:=sql3 ' ' 'from article a,supplier s,tax';
sql3:=sql3 ' ' 'where a.suppl_no=s.suppl_no and a.vat_no=tax.vat_no';
end; procedure TForm3.epEfRndBtn1Click(Sender: TObject);
begin if flatedit1.Text<>'' then
sql2:=' and sas.art_no=' flatedit1.Text;
sql4:=' and a.art_no=' flatedit1.Text; adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sql1 sql2);
adoquery1.Open; adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add(sql3 sql4);
adoquery2.Open; end; procedure TForm3.DateTimePicker1Change(Sender: TObject);
begin
if datetimepicker1.date>=Date() then
showmessage('最大日期为昨天,请重新输入');
if datetimepicker1.date<=Date()-40 then
showmessage('最小日期有误,最长为40天'); end; procedure TForm3.DateTimePicker2Change(Sender: TObject);
begin
if datetimepicker2.date>=Date() then
showmessage('最大日期为昨天,请重新输入');
if datetimepicker2.date<=Date()-40 then
showmessage('最小日期有误,最长为40天');
end; procedure TForm3.FormCreate(Sender: TObject);
begin
datetimepicker1.date:=Date()-1;
datetimepicker2.date:=date()-1;
end; end. 有的地方是多余的,例如var a,b:string;等,我主要是想看看date的值,
发现那样没错,可是sql 中读取就有问题!
请版主帮忙看看!
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
你在FormShow 裡使用 : sql1:=sql1 ' ' 'and to_char(sas.rundate,' '''YYYYMMDD''' ') between ' a ' and ' b;//这里我是想试两种方法 那時 a 和 b 的值是昨天的值
即使你在 DateTimePiacker 改了值, a 和 b 的值都不會變的, sql1 的值更加不會變了。
建議你將這一行加在 sql2 裡,在
procedure TForm3.epEfRndBtn1Click(Sender: TObject);
才即時從 DateTimePicker 取出最新的值。
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |