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

📄 gstthb.pas

📁 有需要的同仁载回去慢慢研究
💻 PAS
字号:
unit GSTTHB;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, Buttons, StdCtrls, ComCtrls;

type
  PMyRec = ^TMyRec;
  TMyRec = record
    FLbdm: integer;
    FFzdm: Integer;
end;

type
  TFrmTthb = class(TForm)
    Panel1: TPanel;
    LBMeber: TListBox;
    Label3: TLabel;
    Button3: TButton;
    BtnExit: TBitBtn;
    BtnAppend: TBitBtn;
    TVFZ: TTreeView;
    Label4: TLabel;
    CBDept: TComboBox;
    Label19: TLabel;
    CbGzxm: TComboBox;
    Label7: TLabel;
    Label8: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label5: TLabel;
    DTPDate: TDateTimePicker;
    EditBz: TEdit;
    EditGs: TEdit;
    Button1: TButton;
    Button2: TButton;
    ComboBox1: TComboBox;
    procedure FormShow(Sender: TObject);
    procedure BtnAppendClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button3Click(Sender: TObject);
    procedure TVFZChange(Sender: TObject; Node: TTreeNode);
    procedure CBDeptChange(Sender: TObject);
  private
    { Private declarations }
    MyGzxm : TStrings;
  public
    { Public declarations }
  end;

var
  FrmTthb: TFrmTthb;

implementation

uses DGSDM, MyCommon, GSXZRY, GSMAIN;

{$R *.DFM}

procedure TFrmTthb.FormShow(Sender: TObject);
var
  RootNode: TTreeNode;
  MyTreeNode: TTreeNode;
  MyRecPtr: PMyRec;
begin
  ComboBox1.ItemIndex:=0;
  CbDept.Items.Assign(MyGsNo);
  CbDept.ItemIndex:=0;
  MyGzxm:=TstringList.Create;
  CbGzxm.Items.Clear;
  with DM_GSGL do
  begin
    if QryGzxmByBm.Active=true then
      QryGzxmByBm.Close;
    QryGzxmByBm.Prepare;
    if CbDept.Items.Count=0 then
      QryGzxmByBm.ParamByName('pbmbh').AsString:='NoBm'
    else
      QryGzxmByBm.ParamByName('pbmbh').AsString:=Copy(MyGsBm[CbDept.ItemIndex],1,2);
    QryGzxmByBm.Open;
    while (not QryGzxmByBm.Eof) do
    begin
      CbGzxm.Items.Add(QryGzxmByBm.FieldByName('部门工作项目名称').AsString);
      MyGzxm.Add(QryGzxmByBm.FieldByName('部门工作项目编号').AsString);
      QryGzxmByBm.Next;
    end;
  end;
  if CbGzxm.Items.Count>0 Then
    CbGzxm.ItemIndex := 0;
  with DM_GSGL do
  begin
    if QryTemp.Active=true then
      QryTemp.Close;
    QryTemp.SQL.Clear;
    QryTemp.SQL.Add('select * from 轮班信息');
    QryTemp.Open;

    if QryTemp1.Active=true then
      QryTemp1.Close;
    QryTemp1.SQL.Clear;
    QryTemp1.SQL.Add('select * from 轮班分组信息');
    QryTemp1.SQL.Add('where 分组管理员工号 like '+''''+'%'+userName+'%'+'''');
    QryTemp1.Open;
  end;
  with TVFz.Items do
  begin
    Clear; { remove any existing nodes }
    New(MyRecPtr);
    MyRecPtr^.FLbdm := -1;
    MyRecPtr^.FFzdm := -1;
    RootNode := AddObject(nil,'所有轮班',MyRecPtr); { Add a root node }
    while (not DM_GSGL.QryTemp.Eof) do
    begin
      New(MyRecPtr);
      MyRecPtr^.FLbdm := DM_GSGL.QryTemp.FieldByName('轮班编号').AsInteger;
      MyRecPtr^.FFzdm := 0;
      MyTreeNode := AddChildObject(RootNode,DM_GSGL.QryTemp.FieldByName('轮班名称').AsString,MyRecPtr);
      DM_GSGL.QryTemp1.First;
      while (not DM_GSGL.QryTemp1.Eof) do
      begin
        if (DM_GSGL.QryTemp.FieldByName('轮班编号').AsString = DM_GSGL.QryTemp1.FieldByName('轮班编号').AsString) Then
        begin
          New(MyRecPtr);
          MyRecPtr^.FLbdm := DM_GSGL.QryTemp1.FieldByName('轮班编号').AsInteger;
          MyRecPtr^.FFzdm := DM_GSGL.QryTemp1.FieldByName('分组编号').AsInteger;
          AddChildObject(MyTreeNode,DM_GSGL.QryTemp1.FieldByName('分组名称').AsString,MyRecPtr);
        end;
        DM_GSGL.QryTemp1.Next;
      end;
      DM_GSGL.QryTemp.Next;
    end;
  end;
  TVFz.Selected := TVFz.Items.GetFirstNode;
  DateSeparator := '-';
  DTPDate.DateTime := Now;
end;

procedure TFrmTthb.BtnAppendClick(Sender: TObject);
var
  I:Integer;
begin
//合法性判断
  if LbMeber.Items.Count=0 Then
  begin
    MessageDlg('请先选择人员。',mtError, [mbYes],0);
    exit;
  end;
  if CbGzxm.Items.Count=0 then
  begin
    MessageDlg('请先维护本部门工作项目。',mtError, [mbYes],0);
    exit;
  end;
  if MessageDlg('此操作将不能回复,确认增加团体工时汇报吗?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    DM_GSGL.GsDb.StartTransaction;  //开始一个事务
    TRY
      for I:=0 to LbMeber.Items.Count-1 do
        with DM_GSGL do
        begin
          if QryTemp.Active=true then
            QryTemp.Close;
          QryTemp.SQL.Clear;
          QryTemp.SQL.Add('INSERT 每日工时 (日期,工号,部门工作项目编号,上班类型,工时,备注)');
          QryTemp.SQL.Add('VALUES (:MCYDATE,:MCYGH,:MCYGZXMDM,:MCYSBLX,:MCYTIME,:MCYBZ)');
          QryTemp.Params.ParamByName('MCYDATE').AsString := FormatDateTime('yyyymmdd',DtpDate.Date);
          QryTemp.Params.ParamByName('MCYGH').AsString := Copy(LbMeber.Items[I],19,4);
          QryTemp.Params.ParamByName('MCYGZXMDM').AsString := MyGzxm[CbGzxm.ItemIndex];
          QryTemp.Params.ParamByName('MCYSBLX').AsInteger := ComboBox1.ItemIndex+1;
          QryTemp.Params.ParamByName('MCYTIME').AsFloat := StrToFloat(EditGs.Text);
          QryTemp.Params.ParamByName('MCYBZ').AsString := EditBz.Text;
          QryTemp.ExecSql;  //执行
        end;
      DM_GSGL.GsDb.Commit; //成功,提交到服务器
      MessageDlg('操作成功,共汇报'+IntTOStr(LbMeber.Items.Count)+'人工时。',mtInformation, [mbYes],0);
    except
      DM_GSGL.GsDb.Rollback; //失败,回滚
      MessageDlg('操作失败',mtInformation, [mbYes],0);
    end;
  end;
end;

procedure TFrmTthb.Button1Click(Sender: TObject);
begin
  EditGs.Text:=FloatToStr(StrToFloat(EditGs.Text)+0.5);
end;

procedure TFrmTthb.Button2Click(Sender: TObject);
begin
  EditGs.Text:=FloatToStr(StrToFloat(EditGs.Text)-0.5);
end;

procedure TFrmTthb.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i:integer;
begin
  for i:=0 to TVFz.Items.Count-1 do
    Dispose(PMyRec(TVFz.Items[i].Data));
  with DM_GSGL do
  begin
    if QryGzxmByBm.Active=True then
      QryGzxmByBm.Close;
    if QryTemp.Active=True then
      QryTemp.Close;
  end;
end;

procedure TFrmTthb.Button3Click(Sender: TObject);
var
  I:Integer;
begin
  if (TVFz.Selected.Level <> 2) then
  begin
    MessageDlg('请先在分组浏览器中选择分组。',mtError, [mbYes],0);
    exit;
  end;
  FrmXzry := TFrmXzry.Create(Application);
  FrmXzry.LBMeber.Items.Clear;
  with DM_GSGL do
  begin
    QryMeber.First;
    while not QryMeber.Eof do
    begin
      if copy(QryMeber.FieldByName('部门编号').AsString,1,2)=MyGsBm[cbdept.ItemIndex] then
        FrmXzry.LBMeber.Items.Add(QryMeber.FieldByName('姓名').AsString+
                        StringOfChar(' ', 18-Length(QryMeber.FieldByName('姓名').AsString))+
                        QryMeber.FieldByName('工号').AsString);
      QryMeber.Next;
    end;
  end;
  for I:=0 to FrmXzry.LbMeber.Items.Count-1 do
    if LbMeber.Items.IndexOf(FrmXzry.LbMeber.Items[i])>-1 then
      FrmXzry.LbMeber.Selected[i]:=True
    else
      FrmXzry.LbMeber.Selected[i]:=False;
  if FrmXzry.ShowModal=mrOk then
  begin
    LBMeber.Items.Clear;
    for I:=0 to FrmXzry.LbMeber.Items.Count-1 do
      if FrmXzry.LbMeber.Selected[i] Then
        LBMeber.Items.Add(FrmXzry.LbMeber.Items[i]);
  end;
  FrmXzry.Release;
end;

procedure TFrmTthb.TVFZChange(Sender: TObject; Node: TTreeNode);
begin
  With DM_GSGL do
  begin
    if (QryMeber.Active = True) Then
      QryMeber.Close;
    QryMeber.Params[0].AsInteger := PMyRec(TVFz.Selected.Data)^.FFzdm;
    QryMeber.Open;
  end;
end;

procedure TFrmTthb.CBDeptChange(Sender: TObject);
begin
  LbMeber.Items.Clear;
  CbGzxm.Items.Clear;
  MyGzxm:=TstringList.Create;
  with DM_GSGL do
  begin
    if QryGzxmByBm.Active=true then
      QryGzxmByBm.Close;
    QryGzxmByBm.Prepare;
    if CbDept.Items.Count=0 then
      QryGzxmByBm.ParamByName('pbmbh').AsString:='nobm'
    else
      QryGzxmByBm.ParamByName('pbmbh').AsString:=Copy(MyGsBm[CbDept.ItemIndex],1,2);
    QryGzxmByBm.Open;
    while (not QryGzxmByBm.Eof) do
    begin
      CbGzxm.Items.Add(QryGzxmByBm.FieldByName('部门工作项目名称').AsString);
      MyGzxm.add(QryGzxmByBm.FieldByName('部门工作项目编号').AsString);
      QryGzxmByBm.Next;
    end;
  end;
  if CbGzxm.Items.Count>0 Then
    CbGzxm.ItemIndex := 0;
end;

end.

⌨️ 快捷键说明

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