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

請問要如何將Tdatatimepicker的日期存到資料庫裡以及日期可以作加減嗎????

尚未結案
miller680523
一般會員


發表:47
回覆:49
積分:19
註冊:2002-10-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-27 16:51:10 IP:61.218.xxx.xxx 未訂閱
如題,謝謝.................
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-27 16:59:33 IP:211.21.xxx.xxx 未訂閱
將TDateTimePicker的日期存到資料庫如下: qry.FieldByName('xxDate').AsDateTime := DateTimePicker.Date; 日期當然可以作加減,DateTimePicker.Date 1或DateTimePicker.Date-1均可。 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-27 17:02:28 IP:147.8.xxx.xxx 未訂閱
TDateTime is in fact double, you can add/subtract to/from it.    AField.AsDateTime := DateTimePicker1.Date;    or... there are many data aware datetime picker, here is one (forget the source):    
unit DBDateTimePicker;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, DbCtrls, Db;    type
  TDBDateTimePicker = class(TDateTimePicker)
  private
    { private declarations }        // ...
    FDataLink: TFieldDataLink;        procedure dataChange(Sender: TObject);
    procedure updateData(Sender: TObject);        // datasource property
    procedure setDataSource(Value: TDataSource);
    function  getDataSource: TDataSource;        // datafield property
    procedure setDataField(const value : string);
    function  getDataField : string;        // field linked to the control
    function  getField : TField;        // enter & exit
    procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
    procedure CMExit(var Message: TCMExit); message CM_EXIT;      protected
    { protected declarations }      public
    { public declarations }        // constructor & distructor
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;        // change
    procedure Change; override;        // field linked to the control
    property Field      : TField      read getField;      published
    { published declarations }        // data field
    property DataField  : string      read getDataField  write setDataField;
    // data source
    property DataSource : TDataSource read getDataSource write setDataSource;
  end;    procedure Register;    implementation    constructor TDBDateTimePicker.create(AOwner: TComponent);
begin
  inherited Create(AOwner);      FDataLink                 := TFieldDataLink.Create;
  FDataLink.Control         := Self;
  FDataLink.OnDataChange    := DataChange;
  FDataLink.OnUpdateData    := UpdateData;
end;    destructor TDBDateTimePicker.destroy;
begin
  FDataLink.free;
  FDataLink := nil;      inherited destroy;
end;    procedure TDBDateTimePicker.dataChange(Sender: TObject);
begin
  // is it a valid field ?
  if fDataLink.field <> nil then begin
    // set database date time
    dateTime := fDataLink.field.asDateTime;
  end;
end;    procedure TDBDateTimePicker.UpdateData(Sender: TObject);
begin
  // is it a valid field ?
  if fDataLink.field <> nil then begin
    // set current date to the database field 
    fDataLink.field.asDateTime := dateTime;
  end;
end;    function TDBDateTimePicker.GetDataSource: TDataSource;
begin
  Result := FDataLink.DataSource;
end;    procedure TDBDateTimePicker.SetDataSource(Value: TDataSource);
begin
  if not (FDataLink.DataSourceFixed and (csLoading in ComponentState)) then
    FDataLink.DataSource := Value;
  if Value <> nil then Value.FreeNotification(Self);
end;    function TDBDateTimePicker.GetDataField: string;
begin
  result := fDataLink.FieldName;
end;    procedure TDBDateTimePicker.SetDataField(const Value: string);
begin
  fDataLink.FieldName := Value;
end;    function TDBDateTimePicker.getField : TField;
begin
  result := FDataLink.field;
end;    // change
procedure TDBDateTimePicker.change;
begin
  // a change as been done to the field on database
  if fDataLink.edit then begin
    // call inherited change
    inherited Change;        // set modifed status on data link
    fDataLink.modified;
  end;
end;    procedure TDBDateTimePicker.CMEnter(var Message: TCMEnter);
begin
  // ...
  inherited;      // ...
  FDataLink.CanModify;
end;    procedure TDBDateTimePicker.CMExit(var Message: TCMExit);
begin
  try
    FDataLink.UpdateRecord;
  except
    SetFocus;
    raise;
  end;      inherited;
end;    procedure Register;
begin
  RegisterComponents('Data Controls', [TDBDateTimePicker]);
end;    end.
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-27 17:05:38 IP:61.30.xxx.xxx 未訂閱
你好: 慢了一步,那我補充一下 TDateTime 的小知識好了 在 >算數運算。如下面的例子
miller680523
一般會員


發表:47
回覆:49
積分:19
註冊:2002-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-27 17:09:38 IP:61.218.xxx.xxx 未訂閱
那兩個日期,相減呢????
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-27 17:22:18 IP:211.21.xxx.xxx 未訂閱
引言: 那兩個日期,相減呢????
您作個測試就知道了 日期相減得到一個浮點數的數值
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  aDay: Double;
begin
  aDay := StrToDate('2003/6/27') - StrToDate('2003/6/25');
  ShowMessage(FloatToStr(aDay));//答案是2
end;
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
miller680523
一般會員


發表:47
回覆:49
積分:19
註冊:2002-10-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-30 10:02:53 IP:61.218.xxx.xxx 未訂閱
引言:
引言: 那兩個日期,相減呢????
您作個測試就知道了 日期相減得到一個浮點數的數值
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  aDay: Double;
begin
  aDay := StrToDate('2003/6/27') - StrToDate('2003/6/25');
  ShowMessage(FloatToStr(aDay));//答案是2
end;
~小弟淺見,參考看看~ 謝謝你的說明,我還有個問題:那我要讓兩個tdatetimepicker的日期相減,然後在顯示在dbtext1,要如何作呢????因為我試過,但date屬性沒有跳出來,所以不知到可不可以用.
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-06-30 11:04:35 IP:211.21.xxx.xxx 未訂閱
引言: 謝謝你的說明,我還有個問題:那我要讓兩個tdatetimepicker的日期相減,然後在顯示在dbtext1,要如何作呢????因為我試過,但date屬性沒有跳出來,所以不知到可不可以用.
您要將兩個tdatetimepicker的日期相減顯示在dbtext1,小弟覺得有點不妥,建議您顯示在TLabel中比較好,因為dbtext1主要是用來顯示資料庫欄位的資料。
uses Math;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  //Ceil是將小數點無條件進位,必須uses Math才可使用
  Label1.Caption := IntToStr(Ceil(DateTimePicker1.Date - DateTimePicker2.Date));
end;
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
系統時間:2024-05-04 1:21:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!