📄 gstthb.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 + -