datamoduleunit.pas

来自「Delphi 应用举例」· PAS 代码 · 共 87 行

PAS
87
字号
unit DatamoduleUnit;

interface

uses
  {$IFDEF Linux}QForms, {$ELSE}Forms, {$ENDIF}
  SysUtils, Classes, DB, DBTables, DBClient, Provider;

type
  TDataModule1 = class(TDataModule)
    Qry_search: TQuery;
    Qry_tmp: TQuery;
    Qry_inf: TQuery;
    DataSetProvider1: TDataSetProvider;
    ClientDataSet_edit: TClientDataSet;
    DataSourceSearch: TDataSource;
    Qry_searchUserID: TStringField;
    Qry_searchFYear: TFloatField;
    Qry_searchFMonth: TFloatField;
    Qry_searchFDay: TFloatField;
    Qry_searchCaption: TStringField;
    Qry_searchFMessage: TMemoField;
    TableUser: TTable;
    DataSourceuser: TDataSource;
    DataSource_edit: TDataSource;
    TableUserUserID: TStringField;
    TableUserPWD: TStringField;
    TableUserActor: TFloatField;
    TableUserMail: TStringField;
    Qry_searchrowID: TIntegerField;
    procedure ClientDataSet_editAfterInsert(DataSet: TDataSet);
    procedure ClientDataSet_editAfterPost(DataSet: TDataSet);
    procedure Qry_searchCalcFields(DataSet: TDataSet);
  private
  public
  end;

// Procs
  function DataModule1: TDataModule1;

implementation
{$R *.dfm}

uses
  IWInit,
  ServerController;

// Since we are threaded we cannot use global variables to store form / datamodule references
// so we store them in WebApplication.Data and we could reference that each time, but by creating
// a function like this our other code looks "normal" almost as if its referencing a global.
// This function is not necessary but it makes the code in the main form which references this
// datamodule a lot neater.
// Without this function ever time we would reference this datamodule we would use:
//   TDataModule1(WebApplication.Data).Datamodule.<method / component>
// By creating this procedure it becomes:
//   TDataModule1.<method / component>
// Which is just like normal Delphi code.
function DataModule1: TDataModule1;
begin
  Result := TUserSession(RWebApplication.Data).Datamodule1;
end;

procedure TDataModule1.ClientDataSet_editAfterInsert(DataSet: TDataSet);
var y,m,d:word;
begin
   decodedate(now,y,m,d);
   with  DataSet do begin
       Fieldbyname('fyear').asInteger:=y;
       Fieldbyname('fMonth').asInteger:=m;
       Fieldbyname('fday').asInteger:=d;
       Fieldbyname('UserID').asString:=UserSession.userID;
   end;

end;

procedure TDataModule1.ClientDataSet_editAfterPost(DataSet: TDataSet);
begin
   ClientDataSet_edit.ApplyUpdates(0);
end;

procedure TDataModule1.Qry_searchCalcFields(DataSet: TDataSet);
begin
    dataset.fieldByName('rowID').asInteger:=dataset.RecNo;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?