全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1729
推到 Plurk!
推到 Facebook!

DBGrid 的日期欄位顯示及存取

答題得分者是:AnnieKuo
CoolJeff
一般會員


發表:12
回覆:5
積分:3
註冊:2002-11-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-07 09:00:07 IP:203.69.xxx.xxx 未訂閱
各位大大此有何解法? 我的table日期欄位是以string的方式 如 20021108 來存放 那在DBGrid顯示時如何以2002/11/08的方式來展現 以及新增或修改後 如改為 2002/12/28 後 如何 以20021228 的string 存回database
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-07 09:26:54 IP:211.21.xxx.xxx 未訂閱
1.在TABLE元件按兩下~出現欄位視窗 2.按右鍵~選 New Field~會出現 New Field 視窗 3.Field properties 隨你填~Field Type 選 Calculated 4.在DBGRID按兩下~會出現 Columns 視窗 5.在Columns 視窗選擇你的日期欄位~並在屬性視窗將FieldName屬性改成你剛成新增的欄位 6.在 TABLE 的 OnCalcFields 裡撰寫程式 DataSet['你新增的欄位名稱'] := 你想要的日期格式 7.OK 完成 -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
AnnieKuo
一般會員


發表:5
回覆:6
積分:7
註冊:2002-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-07 09:45:37 IP:61.231.xxx.xxx 未訂閱
只要將欄位add fileds進該Table,於Object inspector中針對此TStringField之EditMask設成!9999/99/99;0;_,即可在DBgrid顯示出來,並且可修改資料,不需做任何程式控制,仍然存成yyyymmdd。
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-07 09:48:21 IP:61.220.xxx.xxx 未訂閱
你可以自己寫一個日期轉換的Function來轉換    給你參考
//自訂輸出字串格式______________________________________________________________
function _MyStr(sDate : String ; iFlg : Integer):String;    begin
//iFlg = 1 : 20010102    ->  01/02/2001
//       2 : 01/02/2001  ->  20010102
//       3 : 20010102    ->  2001/01/02
//       4 : 20020102    ->  01/02/2001   else '  /  /    '
//       5 : 01/02/2001  ->  20010102     else ''
  Case iFlg of
    1:begin
        if Length(Trim(sDate)) <> 8 then Result := '??/??/????'
        else Result := Copy(sDate,5,2) '/' Copy(sDate,7,2) '/' Copy(sDate,1,4);
      end;
    2:begin
        if Length(Trim(sDate)) <> 10 then
        begin
          Result := '????????'; //<-8 個 ?
          Exit;
        end else Result := Trim(Copy(sDate,7,4)) Trim(Copy(sDate,1,2)) Trim(Copy(sDate,4,2));
        if Length(Result) <> 8 then
        begin
          Result := '????????';
          Exit;
        end;
        if not frmP0Main.g_isDebugHead then  //Debug Mode 時不做(發行時才做)
        begin
            try
              StrToInt(Result);  //<-用以檢查是否有空值或非數字
            except
              Result := '????????';
              Application.MessageBox(PChar('輸入日期格式不合法!!'),'警告訊息',MB_ICONWARNING);
            end;
        end;//if
      end;
    3:begin
        if Length(Trim(sDate)) <> 8 then Result := '??/??/????'
        else Result := Copy(sDate,1,4) '/' Copy(sDate,5,2) '/' Copy(sDate,7,2);
      end;
    4:begin
        if Length(Trim(sDate)) <> 8 then Result := '  /  /    '
        else Result := Copy(sDate,5,2) '/' Copy(sDate,7,2) '/' Copy(sDate,1,4);
      end;
    5:begin
        if Length(Trim(sDate)) <> 10 then Result := ''
        else Result := Copy(sDate,7,4) Copy(sDate,1,2) Cop(sDate,4,2);
      end;
  end;//Case
end;
ps:假設你的日期欄位長度為8 找你需要的段落 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
系統時間:2024-05-19 0:08:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!