⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_data.pas

📁 以多个信息系统为例
💻 PAS
字号:
unit u_data;interfaceuses  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  Db, DBTables, Series, TeeProcs, Chart;type  TDM_main = class(TDataModule)    Database: TDatabase;    T_code: TTable;    DS_code: TDataSource;    T_operator: TTable;    DS_operator: TDataSource;    T_add_room: TTable;    DS_add_room: TDataSource;    T_room_level: TTable;    DS_room_level: TDataSource;    T_room_state: TTable;    DS_room_state: TDataSource;    DS_modify: TDataSource;    T_room_modify: TTable;    T_room_level2: TTable;    DS_room_level2: TDataSource;    T_room_state2: TTable;    DS_room_state2: TDataSource;    Q_roommate: TQuery;    DS_roommate: TDataSource;    Q_room_level: TQuery;    Q_turnover: TQuery;    Q_used_room: TQuery;    procedure T_operatorNewRecord(DataSet: TDataSet);    procedure T_room_modifyAfterScroll(DataSet: TDataSet);  private    { Private declarations }  public    procedure SetCodeTable(TableName:String);    procedure OpenOperator(State:Boolean);    procedure SetOperatorPassword(password:String);    procedure OpenAddRoom(State:Boolean);    procedure OpenModifyRoom(State:Boolean);    procedure SetModifyFilter(RoomID:String);    procedure GetRoomLevel(RoomLevel:TStrings);    procedure GetRoomStat(StartDate,EndDate:TDate;      TimeStep, StatType:Boolean;RoomLevel:Integer;      BarSeries:TBarSeries);    function SumTurnover(StartDate, EndDate:TDate):Integer;    function SumUsedRoom(StartDate, EndDate:TDate;RoomLevel:Integer):Integer;    function GetNextDate(StartDate:TDate; TimeStep:Boolean):TDate;  end;var  DM_main: TDM_main;implementationuses crypt;{$R *.DFM}procedure TDM_main.SetCodeTable(TableName:String);begin  T_code.Close;  if TableName<>'Close' then  begin    T_code.TableName:=TableName;    T_code.Open;  end;end;procedure TDM_main.OpenOperator(State:Boolean);begin  T_operator.Active:=State;end;procedure TDM_main.SetOperatorPassword(password:String);begin  password:=Copy(password+password, 1, 10);  password:=Encrypt(password, 111);  with T_operator do  begin    Edit;    FieldValues['PASSWD']:=password;  end;end;procedure TDM_main.T_operatorNewRecord(DataSet: TDataSet);begin  SetOperatorPassword('');end;procedure TDM_main.OpenAddRoom(State:Boolean);begin  T_add_room.Active:=State;  T_room_level.Active:=State;  T_room_state.Active:=State;end;procedure TDM_main.OpenModifyRoom(State:Boolean);begin  T_room_modify.Active:=State;  T_room_level2.Active:=State;  T_room_state2.Active:=State;  if State then    T_room_modifyAfterScroll(nil)  else    Q_roommate.Close;end;procedure TDM_main.SetModifyFilter(RoomID:String);begin  with T_room_modify do  begin    Close;    if length(RoomID)>0 then    begin      Filter:='ID='''+RoomID+'''';      Filtered:=True;    end    else      Filtered:=False;    Open;  end;end;procedure TDM_main.T_room_modifyAfterScroll(DataSet: TDataSet);begin  with Q_roommate do  begin    Close;    Prepare;    Open;  end;end;procedure TDM_main.GetRoomLevel(RoomLevel:TStrings);begin  RoomLevel.Clear;  RoomLevel.Add('全部级别');  with Q_room_level do  begin    Open;    First;    while not Eof do    begin      RoomLevel.Add(FieldValues['DESCRIPT']);      Next;    end;    Close;  end;end;procedure TDM_main.GetRoomStat(StartDate,EndDate:TDate;  TimeStep, StatType:Boolean;RoomLevel:Integer;  BarSeries:TBarSeries);var  StatResult:integer;  MidDate:TDate;  StatLabel:String;begin  BarSeries.Clear;  while StartDate<EndDate do  begin    MidDate:=GetNextDate(StartDate, TimeStep);    if StatType then      StatResult:=SumTurnover(StartDate, MidDate)    else      StatResult:=SumUsedRoom(StartDate, MidDate, RoomLevel);    if TimeStep then      StatLabel:=FormatDateTime('dd', StartDate)+'日'    else      StatLabel:=FormatDateTime('mm', StartDate)+'月';    BarSeries.AddY(StatResult,StatLabel);    StartDate:=MidDate;  end;end;function TDM_main.SumTurnover(StartDate, EndDate:TDate):Integer;begin  with Q_turnover do  begin    Params.ParamValues['START_TIME']:=StartDate;    Params.ParamValues['END_TIME']:=EndDate;    Open;    if not FieldByName('SUM').IsNull then      SumTurnover:=FieldValues['SUM']    else      SumTurnover:=0;    Close;  end;end;function TDM_main.SumUsedRoom(StartDate, EndDate:TDate; RoomLevel:Integer):Integer;var  TotalCount:Integer;  LevelStr:String;begin  TotalCount:=0;  with Q_used_room do  begin    if RoomLevel=0 then      LevelStr:='%'    else      LevelStr:=IntToStr(RoomLevel-1);    Params.ParamValues['LEVEL']:=LevelStr;    while StartDate<EndDate do    begin      Params.ParamValues['DAY']:=StartDate;      Open;      TotalCount:=TotalCount+FieldValues['COUNT'];      Close;      StartDate:=StartDate+1;    end;  end;  Result:=TotalCount;end;function TDM_main.GetNextDate(StartDate:TDate;TimeStep:Boolean):TDate;var  TimeYear,TimeMonth:String;begin  if TimeStep then    Result:=StartDate+1  else  begin    TimeYear:=FormatDateTime('yyyy', StartDate);    TimeMonth:=FormatDateTime('mm', StartDate);    if TimeMonth='12' then    begin      TimeYear:=IntToStr(StrToInt(TimeYear)+1);      TimeMonth:='01';    end    else      TimeMonth:=IntToStr(StrToInt(TimeMonth)+1);    Result:=StrToDate(TimeYear+'-'+TimeMonth+'-01');  end;end;end.

⌨️ 快捷键说明

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