線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4050
推到 Plurk!
推到 Facebook!

DateTimePicker的疑問??

尚未結案
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-18 18:23:18 IP:61.59.xxx.xxx 未訂閱
請問一下: 假設我有一個DateTimePicker, 在存入資料庫時是允許未輸人, 我在formactive時有給他datetimepicker.Format:=' '讓他為空白 但我在存檔時,若沒輸入資料,卻會自動存入今天的日期, 請問有辦法讓他在未輸入資料時可以不會自動存今天日期嗎? 另外,當我在資料庫裡沒資料時,他卻會自已顯示值為1899/12/30 該怎麼避免掉呢?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-18 21:41:39 IP:219.129.xxx.xxx 未訂閱
引言: 請問一下: 假設我有一個DateTimePicker, 在存入資料庫時是允許未輸人, 我在formactive時有給他datetimepicker.Format:=' '讓他為空白 但我在存檔時,若沒輸入資料,卻會自動存入今天的日期, 請問有辦法讓他在未輸入資料時可以不會自動存今天日期嗎? miga您好:不知道有无理解错您的意思: 是不是说当datetimepicker为空时,则将保存一个空值至资料库中,您可以参考下面: procedure TForm1.Button1Click(Sender: TObject); begin with query1 do begin close; sql.Clear; sql.Add('select * from yourtablename'); open; append; if datetimepicker1.Format=' ' then fieldbyname('dat').Value:=null else fieldbyname('dat').AsDateTime:=datetimepicker1.Datetime; post; open; end; end; 另外,當我在資料庫裡沒資料時,他卻會自已顯示值為1899/12/30 实测时没发现有这个错误,可否PO多代码看看 該怎麼避免掉呢?
——行径窄处,留一步与人行—— ——Never give up, never surrender——
mine
中階會員


發表:28
回覆:129
積分:56
註冊:2004-03-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-18 22:34:35 IP:220.141.xxx.xxx 未訂閱
剛試了一下DataTimepicker.Format D5沒這用法D7才有嗎?? DataTimepicker好像不能設為空值nil,null都不行 DataTimepicker會預設今天日期為目前資料如果你設 DataTimepicker1.DataTime:=0; 就會出現1899/12/30 所以我想的解決之道是在存之前指定給另一個字串 例如 temp:sring; begin temp:=DataTimeToStr(DataTimePicker1.DataTime); 設一旗標在DataTimePicker的onclick上 如果使用者有去觸發則flag:=True; if flag=false then temp:='';存的時侯請留心你的資料庫型態為字串而不是日期否則沒去幫你試 日期並不接受'00/00/00'這樣的型態存在 或者採用Deity大大的建議存fieldbyname('dat').VALUE:=NULL; 再加一判斷 if temp<>'' then fieldbyname('dat').AsDateTime:=StrToDateTime(temp);直接存日期 不然就不要存了如果你是只要存dtae 請把time去掉 希望對你有幫助 -------------------------------------- 搞不懂!搞不懂!永遠都搞不懂!! 發表人 - mine 於 2004/06/18 22:38:27
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-20 13:11:53 IP:61.229.xxx.xxx 未訂閱
hi,miga: 如果你要以TDateTimePicker來做為日期時間的輸入界面的話,那麼建議你可以另外用個TEdit或TDBEdit元件直接放在TDateTimePicker上面,把TDateTimePicker整個遮住,只讓TDateTimePicker右邊的下接式按鈕露出.然後在TDateTimePicker的OnChange事件裡控制.當user操作TDateTimePicker時,就把TDateTimePicker裡user指定的時間帶入到TDBEdit裡;當user未指定時間時,TDBEdit裡的資料就是空值. 理由是TDateTimePicker是一個讓user輸入TDateTime型態的資料.TDateTime就像是Integer一樣,不管你有沒有指定,裡面一定有一個值.這樣的情形無法表示出資料庫裡欄位內容為null的狀態.所以,你只能用另外的TDBEdit元件來搭配.
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-21 12:08:28 IP:61.59.xxx.xxx 未訂閱
cc,我是希望他在我沒輸入的時後可以不要存值下去 在資料庫中沒有值時可以顯示空白,而不是1899/12/30^^ 不過你的答案也給我很大的提示哦
引言:
引言: 請問一下: 假設我有一個DateTimePicker, 在存入資料庫時是允許未輸人, 我在formactive時有給他datetimepicker.Format:=' '讓他為空白 但我在存檔時,若沒輸入資料,卻會自動存入今天的日期, 請問有辦法讓他在未輸入資料時可以不會自動存今天日期嗎? miga您好:不知道有无理解错您的意思: 是不是说当datetimepicker为空时,则将保存一个空值至资料库中,您可以参考下面: procedure TForm1.Button1Click(Sender: TObject); begin with query1 do begin close; sql.Clear; sql.Add('select * from yourtablename'); open; append; if datetimepicker1.Format=' ' then fieldbyname('dat').Value:=null else fieldbyname('dat').AsDateTime:=datetimepicker1.Datetime; post; open; end; end; 另外,當我在資料庫裡沒資料時,他卻會自已顯示值為1899/12/30 实测时没发现有这个错误,可否PO多代码看看 該怎麼避免掉呢?
——行径窄处,留一步与人行—— ——Never give up, never surrender——
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-21 17:10:44 IP:218.15.xxx.xxx 未訂閱
miga您好: 原来是误解了您的意思 试试下面写法,是不是您所要的 当资料库中没有值,也让 > ——行径窄处,留一步与人行—— ——
whatman
一般會員


發表:3
回覆:10
積分:2
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-21 18:08:51 IP:61.63.xxx.xxx 未訂閱
您好 我的印象中這個好像是資料庫的問題 有關時間的欄位,如果不要有任何值得時候 在insert或是update的sql中,那個欄位的部分要填入null才行 不然就會有一個很奇怪的日期在裡面
james_yu
一般會員


發表:33
回覆:19
積分:10
註冊:2003-07-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-06-23 10:44:43 IP:210.208.xxx.xxx 未訂閱
至于’1899/12/30‘我也遇到過,是因為你的庫為版本比較舊的一種,但是在調用時,他還是為空,我用的數據庫為ORACLE7,用sqlexplorer,delphi7的,不過沒有關系,看到的為’1899/12/30而已。至于日期存入空的哪個處理,再加個條件就可,上面已經有例子,就不一說
系統時間:2024-07-03 4:39:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!