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

📄 employeeinfo.pas

📁 物流管理系统是一个典型的数据库应用程序
💻 PAS
字号:

unit employeeinfo;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, frame, DB, Grids, DBGrids, StdCtrls, Buttons,
  ExtCtrls, ComCtrls;

type
  Tf_employeeinfo = class(Tf_frame)
    Label6: TLabel;
    Panel2: TPanel;
    Label7: TLabel;
    Label8: TLabel;
    Add: TBitBtn;
    Cancel: TBitBtn;
    Update: TBitBtn;
    Delete: TBitBtn;
    Field: TComboBox;
    Query: TBitBtn;
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label9: TLabel;
    employeeSource: TDataSource;
    Sex: TComboBox;
    Knowledge: TComboBox;
    Label10: TLabel;
    EngageTime: TDateTimePicker;
    Label11: TLabel;
    Duty: TComboBox;
    Label12: TLabel;
    WorkerID: TEdit;
    Workername: TEdit;
    Phone: TEdit;
    Address: TEdit;
    Memo: TEdit;
    Value: TEdit;
    procedure CancelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure AddClick(Sender: TObject);
    procedure UpdateClick(Sender: TObject);
    procedure DeleteClick(Sender: TObject);
    procedure QueryClick(Sender: TObject);
    procedure WorkerIDKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure PhoneKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    Procedure ClearEdit;//清空编辑框中的文本
    Function TextIsNull: Boolean;//判断编辑框中的文本是否为空
    Procedure Editvalue;//将数据集中的数据显示在编辑框中
    { Public declarations }
  end;

var
  f_employeeinfo: Tf_employeeinfo;

implementation
  uses data;
{$R *.dfm}
//处理取消按钮的单击事件
procedure Tf_employeeinfo.CancelClick(Sender: TObject);
begin
  inherited;
  ClearEdit; //清空编辑框文本
  Field.ItemIndex := 0;
  Knowledge.ItemIndex := 0;
  Sex.ItemIndex := 0;
  Engagetime.DateTime := Now;//初始化聘用时间
  With t_data.Query1 do //将所有员工信息显示在表格中
  begin
    CLose;
    SQL.Clear;
    SQL.Add('Select * from tb_employeeinfo');
    Open;
  end;
  if t_data.Query1.RecordCount>0 then
    EmployeeSource.DataSet := t_data.Query1
  else
  begin
    t_data.Query1.Close;
    EmployeeSource.DataSet := Nil;
  end;
end;
//自定义过程,用于清空编辑框中的文本
procedure Tf_employeeinfo.ClearEdit;
var
  i: Integer;
begin
  For i := 0 to Panel1.ControlCount-1 do
    if Panel1.Controls[i]is TEdit then
      TEdit(Panel1.Controls[i]).Clear;
  Memo.Text := '空';
end;
//处理窗体的OnShow事件
procedure Tf_employeeinfo.FormShow(Sender: TObject);
begin
  inherited;
  With t_data.Query1 do //向职务组合框中添加职务信息
  begin
    CLose;
    SQL.Clear;
    SQL.Add('select dutyname from tb_dutyinfo');
    Open;
  end;
  if t_data.Query1.RecordCount>0 then
  begin
    while Not t_data.Query1.Eof do
    begin
      duty.Items.Add(Trim(t_data.Query1.FieldByName('dutyname').AsString));
      t_data.Query1.Next;
    end;
  end;
  Duty.ItemIndex := 0;
  Cancel.Click;
end;
//判断基础信息是否为空
function Tf_employeeinfo.TextIsNull: Boolean;
var
  i: Integer;
begin
  Result := False;
  For i := 0 to Panel1.ControlCount-1 do
    if Panel1.Controls[i] is TEdit then
    begin
      if Trim(TEdit(Panel1.Controls[i]).Text)='' then
      begin
        Result := True;
        Exit;
      end;
    end
    else if Panel1.Controls[i] is TComboBox then
    begin
      if Trim(TComboBox(Panel1.Controls[i]).Text)='' then
      begin
        Result := True;
        Exit;
      end;
    end;
end;
//处理添加按钮的单击事件
procedure Tf_employeeinfo.AddClick(Sender: TObject);
begin
  inherited;
  if TextIsNull = False then
  begin
    With t_data.Query2 do //判断员工姓名是否重复
    begin
      CLose;
      SQL.Clear;
      SQL.Add('Select * from tb_employeeinfo where workername = :name ');
      Parameters.ParamByName('name').Value := Trim(Workername.Text);
      Open;
    end;
    if t_data.Query2.RecordCount>0 then
    begin
      Application.MessageBox('员工姓名已经存在,请重新输入.','提示',64);
      Workername.SelectAll;
      Workername.SetFocus;
      Exit;
    end;
    With t_data.Query2 do //判断员工工号是否重复
    begin
      CLose;
      SQL.Clear;
      SQL.Add('Select * from tb_employeeinfo where workerId = :workerId ');
      Parameters.ParamByName('workerid').Value := Trim(WorkerId.Text);
      Open;
    end;
    if t_data.Query2.RecordCount>0 then
    begin
      Application.MessageBox('员工工号已经存在,请重新输入.','提示',64);
      WorkerId.SelectAll;
      WorkerId.SetFocus;
      Exit;
    end;
    Try
      //向员工信息表中插入数据
      with t_data.Add1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('Insert into tb_employeeinfo Values (:workerId,:workername,:sex,:Knowledge,:phone,:address,:duty,:engagetime,:memo)');
        Parameters.ParamByName('workerId').Value := Trim(workerId.Text);
        Parameters.ParamByName('workername').Value := Trim(workername.Text);
        Parameters.ParamByName('sex').Value := Trim(sex.Text);
        Parameters.ParamByName('Knowledge').Value := Trim(Knowledge.Text);
        Parameters.ParamByName('phone').Value := Trim(phone.Text);
        Parameters.ParamByName('address').Value := Trim(address.Text);
        Parameters.ParamByName('duty').Value := Trim(duty.Text);
        Parameters.ParamByName('engagetime').Value := engagetime.DateTime;
        Parameters.ParamByName('memo').Value := Trim(memo.Text);
        ExecSQL;
      end;
      Application.MessageBox('操作成功.','提示',64);
      Cancel.Click;
    Except
      On E: Exception do
        ShowMessage(E.Message);
    End;
  end
  else
  begin
    Application.MessageBox('员工信息不能为空.','提示',64);
  end;
end;
//处理修改按钮的单击事件
procedure Tf_employeeinfo.UpdateClick(Sender: TObject);
begin
  inherited;
  if t_data.Query1.Active then //判断是否有修改的数据
  begin
    if TextIsNull = False then
    begin
      //提示是否修改数据
      if Application.MessageBox(Pchar('确实要修改员工工号为: '+t_data.Query1.FieldByName('workerid').AsString+' 的员工信息吗?'),'提示',mb_YesNo)= ID_Yes then
      begin
        Try
          With t_data.update1 do
          begin
            CLose;
            SQL.Clear;
            SQL.Add('update tb_employeeinfo set workerid = :worderid,workername = :workername,sex =:sex,knowledge = :knowledge,phone = :phone,address = :address ,duty = :duty,engagetime = :engagetime,memo = :memo where workerId = :oldId');
            Parameters.ParamByName('worderid').Value := Trim(workerid.Text);
            Parameters.ParamByName('workername').Value := Trim(workername.Text);
            Parameters.ParamByName('sex').Value := Trim(sex.Text);
            Parameters.ParamByName('knowledge').Value := Trim(knowledge.Text);
            Parameters.ParamByName('phone').Value := Trim(phone.Text);
            Parameters.ParamByName('address').Value := Trim(address.Text);
            Parameters.ParamByName('duty').Value := Trim(duty.Text);
            Parameters.ParamByName('engagetime').Value := EngageTime.DateTime;
            Parameters.ParamByName('memo').Value := Trim(memo.Text);
            Parameters.ParamByName('oldid').Value := Trim(t_data.Query1.FieldByName('workerId').AsString);
            ExecSQL;
          end;
          Application.MessageBox('修改成功.','提示',64);
          Cancel.Click;
        Except
          On E: Exception do
            ShowMessage(E.Message);
        End;
      end;
    end
    else
      Application.MessageBox('员工信息不能为空.','提示',64);
  end
  else
    Application.MessageBox('当前没有可修改的数据.','提示',64);
end;
//处理删除按钮的单击事件
procedure Tf_employeeinfo.DeleteClick(Sender: TObject);
begin
  inherited;
  if t_data.Query1.Active then //判断是否有可删除的数据
  begin
    //提示是否删除数据
    if Application.MessageBox(Pchar('确实要删除员工工号为: ' + Trim(t_data.Query1.FieldByName('Workerid').AsString)+' 的员工信息吗?'),'提示',mb_YesNo)= ID_Yes then
    begin
      Try
        t_data.Query1.Delete;
        Cancel.Click;
      Except
        On E: Exception do
          ShowMessage(E.Message);
      End;
    end
  end
  else
    Application.MessageBox('当前没有可删除的信息.','提示',64);
end;
//处理查询按钮的单击事件
procedure Tf_employeeinfo.QueryClick(Sender: TObject);
begin
  inherited;
  if t_data.Query1.Active then
  begin
    With t_data.Query1 do
    begin
      CLose;
      SQL.Clear;
      SQL.Add('select * from tb_employeeinfo where ');
      if Field.ItemIndex = 0 then
      begin
        SQL.Add('workername Like :Value');
        Parameters.ParamByName('value').Value := '%'+Trim(Value.Text)+'%';
      end
      else
      begin
        if Field.ItemIndex = 1 then
          SQL.Add('workerid =')
        else
          SQL.Add('knowledge =');
        SQL.Add('  :Value');
        Parameters.ParamByName('value').Value := Trim(Value.Text);
      end;
      Open;
    end;
    if t_data.Query1.RecordCount<1 then
    begin
      Cancel.Click;
      Application.MessageBox('没有找到符合条件的记录.','提示',64);
    end;
  end
  else
    Application.MessageBox('当前没有可查询的数据.','提示',64);
end;
//将当前记录信息显示在编辑框中
procedure Tf_employeeinfo.Editvalue;
begin
  with t_data.Query1 do
  begin
    WorkerId.Text :=  Trim(FieldByName('workerid').AsString);
    Workername.Text := Trim(FieldByName('workername').AsString);
    EngageTime.DateTime := FieldByName('engagetime').AsDateTime;
    Sex.ItemIndex := Sex.Items.IndexOf(Trim(FieldByName('sex').AsString));
    Knowledge.ItemIndex := Knowledge.Items.IndexOf(Trim(FieldByName('knowledge').AsString));
    Duty.ItemIndex := Duty.Items.IndexOf(Trim(FieldByName('duty').AsString));
    Phone.Text := Trim(FieldByName('phone').AsString);
    Address.Text := Trim(FieldByName('Address').AsString);
    Memo.Text := Trim(FieldByName('memo').AsString);
  end;
end;

procedure Tf_employeeinfo.WorkerIDKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if Key = vk_Return then
    FindNext(True);
end;

procedure Tf_employeeinfo.DBGrid1DblClick(Sender: TObject);
begin
  inherited;
  if t_data.Query1.Active then
    Editvalue;
end;
//防止输入非法字符
procedure Tf_employeeinfo.PhoneKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if Not(Key in ['0'..'9','-',#8])then
    Key := #0;
end;

end.

⌨️ 快捷键说明

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