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

📄 data.pas

📁 计算机房管理系统
💻 PAS
字号:
unit data;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables;

type
  Tds_data = class(TDataModule)
    DS_sbgl: TDataSource;
    Qu_sbsys: TQuery;
    Qu_sbgl: TQuery;
    Qu_yhgl: TQuery;
    DS_yhgl: TDataSource;
    Qu_yhsys: TQuery;
    Qu_temp_1: TQuery;
    Qu_zwb: TQuery;
    Qu_temp_2: TQuery;
    Qu_yhsj: TQuery;
    ds_yhsj: TDataSource;
    Qu_sjjl: TQuery;
    Qu_yhsj_ref: TQuery;
    Qu_sbzt: TQuery;
    Qu_yhzt: TQuery;
    Qu_jckj: TQuery;
    Qu_sjzt: TQuery;
    Qu_jlzt: TQuery;
    Qu_jlztx: TQuery;
    Qu_yhztx: TQuery;
    Qu_sjztx: TQuery;
    Qu_temp_3: TQuery;
    Qu_sbdp: TQuery;
    Qu_yhdp: TQuery;
    Qu_jckjx: TQuery;
    Qu_jlztx1: TQuery;
    Qu_yyse: TQuery;
    Qu_yysb: TQuery;
    Qu_yypd: TQuery;
    Qu_upf: TQuery;
    Qu_yyold: TQuery;
    Qu_sjold: TQuery;
    Qu_pass: TQuery;
    Qu_chpw: TQuery;
    Qu_chqx: TQuery;
    Qu_qxcount: TQuery;
    Qu_yyjlup: TQuery;
    Qu_yysbup: TQuery;
    Qu_yygetsjd: TQuery;
    Qu_getsjd: TQuery;
    Qu_sjgetsjd: TQuery;
    procedure Qu_sbglPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure Qu_yhglPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure Qu_sbglBeforeDelete(DataSet: TDataSet);
    procedure Qu_yhglBeforeDelete(DataSet: TDataSet);
    procedure Qu_sbglBeforeEdit(DataSet: TDataSet);
    procedure Qu_yhglBeforeEdit(DataSet: TDataSet);
    procedure Qu_sbglBeforePost(DataSet: TDataSet);
    function Get_sbgl_num : string;
    function Get_yhgl_num : string;
    function Get_sbgl_setnum : string;
    function Get_yhgl_sjnum : string;
    procedure Qu_yhglBeforePost(DataSet: TDataSet);
    Function search_old : Boolean;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ds_data: Tds_data;
  EditNum : string;  //编辑时的编号内容
  Editsetnum,Editsjnum : string;  //编辑时的座位号、上机证内容
  i : integer;

implementation

uses gbv, yhgl;

{$R *.DFM}

procedure Tds_data.Qu_sbglPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
  //编号重复错误
  Application.MessageBox('此编号已存在,请更改编号。', '错误', Mb_OK);
  Action:=daAbort;
end;

procedure Tds_data.Qu_yhglPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
  //学号重复错误
  Application.MessageBox('此学号已存在,请更改学号。', '错误', Mb_OK);
  Action:=daAbort;
end;

function Tds_data.Get_sbgl_num() : string;
begin  //得到设备字段num的显示名字
  with ds_data.Qu_temp_3 do
  begin
       close;
       sql.clear;
       sql.add('select ch2 From sbsys Where ch1=''num''');
       open;
       result:=FieldByName('ch2').AsString;
       close;
  end;
end;

function Tds_data.Get_sbgl_setnum() : string;
begin  //得到设备字段setnum的显示名字
  with ds_data.Qu_temp_3 do
  begin
       close;
       sql.clear;
       sql.add('select ch2 From sbsys Where ch1=''setnum''');
       open;
       result:=FieldByName('ch2').AsString;
       close;
  end;
end;

function Tds_data.Get_yhgl_sjnum() : string;
begin  //得到用户字段sjnum的显示名字
  with ds_data.Qu_temp_3 do
  begin
       close;
       sql.clear;
       sql.add('select ch2 From yhsys Where ch1=''sjnum''');
       open;
       result:=FieldByName('ch2').AsString;
       close;
  end;
end;

function Tds_data.Get_yhgl_num() : string;
begin  //得到用户字段num的显示名字
  with ds_data.Qu_temp_3 do
  begin
       close;
       sql.clear;
       sql.add('select ch2 From yhsys Where ch1=''num''');
       open;
       result:=FieldByName('ch2').AsString;
       close;
  end;
end;

procedure Tds_data.Qu_sbglBeforeEdit(DataSet: TDataSet);
var used,fused : string;
begin  //修改判断
  //保存编号内容
  EditNum:=ds_data.Qu_sbgl.FieldByName(Get_sbgl_num).AsString;

  //得到used和fused的内容
  with ds_data.Qu_temp_1 do
  begin
       Close;
       Sql.Clear;
       Sql.Add('Select used,fused From sbgl Where num=:delnum');
       ParamByName('delnum').value:=EditNum;
       Open;
       used:=FieldByName('used').AsString;
       fused:=FieldByName('fused').AsString;
       Close;
  end;

  //判断是否使用
  if used='True' then
     Application.MessageBox('该设备正在使用,不能修改。', '提示', Mb_Ok)
  else
     if fused='True' then
        Application.MessageBox('该设备将被使用,不能修改。', '提示', Mb_Ok);
  if (used='True') or (fused='True') then Abort;  //放弃修改
end;

procedure Tds_data.Qu_yhglBeforeEdit(DataSet: TDataSet);
var used,fused : string;
begin  //修改判断
  //保存学号内容
  EditNum:=ds_data.Qu_yhgl.FieldByName(Get_yhgl_num).AsString;

  //得到used和fused的内容
  with ds_data.Qu_temp_2 do
  begin
       Close;
       Sql.Clear;
       Sql.Add('Select used,fused From yhgl Where num=:delnum');
       ParamByName('delnum').value:=EditNum;
       Open;
       used:=FieldByName('used').AsString;
       fused:=FieldByName('fused').AsString;
       Close;
  end;

  //判断是否使用
  if used='True' then
     Application.MessageBox('该用户正在使用设备,不能修改。', '提示', Mb_Ok)
  else
     if fused='True' then
        Application.MessageBox('该用户将使用设备,不能修改。', '提示', Mb_Ok);
  if (used='True') or (fused='True') then Abort;  //放弃修改
end;

procedure Tds_data.Qu_sbglBeforeDelete(DataSet: TDataSet);
var used,fused : string;
begin  //删除判断
  if Application.MessageBox('删除该设备?', '询问', Mb_OKCancel)=Id_Ok then
  begin
       //得到used和fused的内容
       with ds_data.Qu_temp_1 do
       begin
            Close;
            Sql.Clear;
            Sql.Add('Select used,fused From sbgl Where num=:delnum');
            ParamByName('delnum').value:=ds_data.Qu_sbgl.FieldByName(Get_sbgl_num).AsString;
            Open;
            used:=FieldByName('used').AsString;
            fused:=FieldByName('fused').AsString;
            Close;
       end;

       //判断是否使用
       if used='True' then
          Application.MessageBox('该设备正在使用,不能删除。', '提示', Mb_Ok)
       else
          if fused='True' then
             Application.MessageBox('该设备将被使用,不能删除。', '提示', Mb_Ok);
       if (used='True') or (fused='True') then Abort;  //放弃删除
  end
  else
     Abort;  //放弃删除
end;

procedure Tds_data.Qu_yhglBeforeDelete(DataSet: TDataSet);
var used,fused : string;
begin  //删除判断
  if Application.MessageBox('删除该用户?', '询问', Mb_OKCancel)=Id_Ok then
  begin
       //得到used和fused的内容
       with ds_data.Qu_temp_2 do
       begin
            Close;
            Sql.Clear;
            Sql.Add('Select used,fused From yhgl Where num=:delnum');
            ParamByName('delnum').value:=ds_data.Qu_yhgl.FieldByName(Get_yhgl_num).AsString;
            Open;
            used:=FieldByName('used').AsString;
            fused:=FieldByName('fused').AsString;
            Close;
       end;

       //判断是否使用
       if used='True' then
          Application.MessageBox('该用户正在使用设备,不能删除。', '提示', Mb_Ok)
       else
          if fused='True' then
             Application.MessageBox('该用户将使用设备,不能删除。', '提示', Mb_Ok);
       if (used='True') or (fused='True') then Abort;  //放弃删除
  end
  else
     Abort;  //放弃删除
end;

procedure Tds_data.Qu_sbglBeforePost(DataSet: TDataSet);
var sncount : integer;
begin
  if f_gbv.setnum.Checked then
  begin  //若setnum显示则
       Editsetnum:=ds_data.Qu_sbgl.FieldByName(Get_sbgl_setnum).AsString;
       //寻找相同内容的setnum
       if EditSetnum<>'' then
       begin
            //得到记录数
            with ds_data.Qu_temp_1 do
            begin
                 Close;
                 Sql.Clear;
                 Sql.Add('Select num,setnum From sbgl Where setnum=:postsetnum and num<>:postnum');
                 ParamByName('postnum').value:=EditNum;
                 ParamByName('postsetnum').value:=Editsetnum;
                 Open;
                 sncount:=RecordCount;
                 Close;
            end;

            if sncount>0 then  //有冲突
            begin
                 Application.MessageBox('此座位号已存在,请更改座位号。', '错误', Mb_OK);
                 Abort;
            end;
       end;
  end;
end;

procedure Tds_data.Qu_yhglBeforePost(DataSet: TDataSet);
var sncount : integer;
begin
  if f_gbv.sjnum.Checked then
  begin  //若sjnum显示则
       Editsjnum:=ds_data.Qu_yhgl.FieldByName(Get_yhgl_sjnum).AsString;
       //寻找相同内容的sjnum
       if EditSjnum<>'' then
       begin
            //得到记录数
            with ds_data.Qu_temp_2 do
            begin
                 Close;
                 Sql.Clear;
                 Sql.Add('Select num,sjnum From yhgl Where sjnum=:postsjnum and num<>:postnum');
                 ParamByName('postnum').value:=EditNum;
                 ParamByName('postsjnum').value:=Editsjnum;
                 Open;
                 sncount:=RecordCount;
                 Close;
            end;

            if sncount>0 then  //有冲突
            begin
                 Application.MessageBox('此上机证号已存在,请更改上机证号。', '错误', Mb_OK);
                 Abort;
            end;
       end;
  end;
end;

Function Tds_data.search_old() : Boolean;
var wdate,wtime : TDateTime;
    sjd : string;  //时间段
    setnum,sjnum,sjname : string;  //座位号、上机证号、上机姓名
begin
  Result:=False;
  //得到时间
  wdate:=Date;
  wtime:=Time;
  //得到当前时间段
  with ds_data.Qu_getsjd do
  begin
       Close;
       ParamByName('dqtime').AsTime:=Time;
       Open;
       sjd:=IntToStr(4-RecordCount);
       Close;
  end;

  //检测预约过期
  with Qu_yyold do
  begin
       Close;
       ParamByName('sjdate').value:=wdate;
       ParamByName('sjd').value:=sjd;
       Open;
       for i:=1 to RecordCount do
       begin
            //更改上机记录
            Result:=True;
            Application.MessageBox(PChar('第'+FieldByName('setnum').AsString+'号座位预约过期,'+#13+#10+'被强制取消预约。'),'过期', Mb_OK);
            edit;
            FieldByName('xjdate').AsString:=DateToStr(wdate);
            FieldByName('xjtime').AsString:=TimeToStr(wtime);
            FieldByName('qzxj').AsBoolean:=True;
            Post;

            //下一条预约过期记录
            Next;
       end;
       Close;
  end;

  //检测上机过期
  with Qu_sjold do
  begin
       Close;
       ParamByName('sjdate').value:=wdate;
       ParamByName('sjd').value:=sjd;
       Open;
       for i:=1 to RecordCount do
       begin
            Result:=True;
            setnum:=FieldByName('setnum').AsString;
            sjnum:=FieldByName('sjnum').AsString;
            sjname:=FieldByName('name').AsString;
            Application.MessageBox(PChar(sjname+'用户在第'+setnum+'号座位上机过期,'+#13+#10+'被强制下机。'),'过期', Mb_OK);

            //更改设备
            with Qu_sbzt do
            begin
                 Close;
                 ParamByName('setnum').value:=setnum;
                 Open;
                 Edit;
                 FieldByName('used').AsString:='False';
                 Post;
                 Close;
            end;

            //更改用户
            with Qu_yhzt do
            begin
                 Close;
                 ParamByName('sjnum').value:=sjnum;
                 Open;
                 Edit;
                 FieldByName('used').AsString:='False';
                 Post;
                 Close;
            end;

            //更改上机记录
            edit;
            FieldByName('xjdate').AsString:=DateToStr(wdate);
            FieldByName('xjtime').AsString:=TimeToStr(wtime);
            FieldByName('qzxj').AsBoolean:=True;
            Post;

            //下一条上机过期记录
            Next;
       end;
       Close;  //关闭上机过期数据库
  end;
end;

end.

⌨️ 快捷键说明

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