為什麼日期會亂掉? |
尚未結案
|
tea15
初階會員 ![]() ![]() 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
|
bestlong
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
看起來你的 ADOQuery1 是放假日資料, 不過用 Edit3 當查詢來源好像不對? 接著 Edit2 怪在哪裡最好說的詳細一些. 另外 Edit1 指定的日期要避開週六日與假日, 那麼繳款日與兌現日要不要避開呢? 雪龍
http://bestlong.no-ip.com/
學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
tea15
初階會員 ![]() ![]() 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
你好,我打錯了…不是EDIT3而是edit1當查詢資料。
我的意思是…根據edit1所輸入的日期在加一或減一後的日期要避開週末及我資料庫的日期即可。
但我是不是程式邏輯有錯呀?
當我要避開資料庫的日期就會有問題…怎麼辦咧?
|
bestlong
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
為什麼你會用 RadioButton1 與 RadioButton2 ?
看不到畫面所以 R 的計算會有些奇怪. 改成用 R1 作繳款日, R2 作兌現日 然後不需要用 RadioButton . 雪龍
http://bestlong.no-ip.com/
學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
tea15
初階會員 ![]() ![]() 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
RadioButton1=繳款日
RadioButton2=兌現日
這是不一樣的功能的,所以才會用這個元件。
如果分為R1、R2..
問題還是不能解決耶~
|
kartan_01
一般會員 ![]() ![]() 發表:42 回覆:60 積分:20 註冊:2004-12-08 發送簡訊給我 |
if not adoQuery1.Locate('holiday', Edit3.Text, []) then
if radiobutton1.Checked then //繳款日
begin
edit2.Text:=datetostr(myworkdate(datetimepicker1.Date-1))
end
else if radiobutton2.Checked then//兌現日
begin
edit2.Text:=datetostr(myworkdate(datetimepicker1.Date 1))
end
else
edit2.Text:=datetostr(myworkdate(datetimepicker1.Date))
end; 你好像是先判斷是否是假日,再去作周末的修正
這樣如果修正完後的日期是假日怎麼辦?
我想問題應該是在這裡吧
|
bestlong
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
|
bestlong
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
應該將
Case DOW of
6 : R := R -1; //變成本周星期五
7 : R := R -2; //變成本周星期五
1 : R := R -3; //變成本周星期五
else
R := R-1; //都向後推一天
end; 改成 Case DOW of
6 : R := R -1; //變成本周星期五
7 : R := R -2; //變成本周星期五
1 : R := R -3; //變成本周星期五
end; 另外 Case DOW of
5 : R := R 3; //變成下一周星期一
6 : R := R 2; //變成下一周星期一
7 : R := R 1; //變成下一周星期一
else
R := R 1; //都向前推一天
end; 改成 Case DOW of
5 : R := R 3; //變成下一周星期一
6 : R := R 2; //變成下一周星期一
7 : R := R 1; //變成下一周星期一
end; 雪龍
http://bestlong.no-ip.com/
學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
tea15
初階會員 ![]() ![]() 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
|
bestlong
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
隨手改成這樣我沒有編譯過, 請自己測試試看看
private { Private declarations } f, t: string; Function MyWorkDate_F(InDate : TDate) : TDate; // 取兌現日 Function MyWorkDate_B(InDate : TDate) : TDate; // 取繳款日 public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin datetimepicker1.Date := EncodeDate(strtoint(copy(edit1.Text,1,4)),strtoint(copy(edit1.Text,5,2)),strtoint(copy(edit1.Text,7,2))); if radiobutton1.Checked then //繳款日 begin edit2.Text := datetostr(MyWorkDate_F(datetimepicker1.Date - 1)) end else if radiobutton2.Checked then //兌現日 begin edit2.Text := datetostr(MyWorkDate_B(datetimepicker1.Date 1)) end else edit2.Text := datetostr(MyWorkDate_F(datetimepicker1.Date)); // 遇假日順延 end; Function Tform1.MyWorkDate_F(InDate : TDate) : TDate; var iUP :Word; R : TDate; begin R := InDate; iUP := DayOfTheWeek(R); while (adoQuery1.Locate('holiday', DateToStr(R), []) ) or (iUP = 5) or (iUP = 6) or (iUP = 7) do begin Case iUP of 5 : R := R 3; //變成下一周星期一 6 : R := R 2; //變成下一周星期一 7 : R := R 1; //變成下一周星期一 end; iUP := DayOfTheWeek(R); end; label1.caption := '星期' IntToStr(DayOfTheWeek(R)); Result := R; end; Function Tform1.MyWorkDate_B(InDate : TDate) : TDate; var sDate: string; iDOW :word; R : TDate; begin R := InDate; iDOW := DayOfTheWeek(R); while (not adoQuery1.Locate('holiday', DateToStr(R), []) ) or (iDOW = 6) or (iDOW = 7) or (iDOW = 1) do begin Case iDOW of 6 : R := R - 1; //變成本周星期五 7 : R := R - 2; //變成本周星期五 1 : R := R - 3; //變成本周星期五 end; iDOW := DayOfTheWeek(R); end; label1.caption := '星期' IntToStr(DayOfTheWeek(R)); Result := R; end;雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |