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

📄 unit5.pas

📁 < SQL SERVER 2000 案例教程>>,冶金工业出版社,这本书的代码
💻 PAS
字号:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, DBCtrls;

type
  TForm5 = class(TForm)
    Addstuff: TButton;
    Label1: TLabel;
    code: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    address: TEdit;
    Label6: TLabel;
    mobile: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    stuffname: TEdit;
    Label9: TLabel;
    age: TEdit;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    telephone: TEdit;
    Label13: TLabel;
    mail: TEdit;
    Label14: TLabel;
    Button2: TButton;
    clear: TButton;
    man: TRadioButton;
    woman: TRadioButton;
    partment: TComboBox;
    starttime: TDateTimePicker;
    endtime: TDateTimePicker;
    remark: TMemo;
    job: TComboBox;
    jobstate: TComboBox;
    procedure AddstuffClick(Sender: TObject);
    procedure oninit();
    procedure clearClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}
uses Unit2;
procedure TForm5.oninit();
var temp:string;
begin
  man.Checked:=true;  //初始选择男
  //选择query_depart用来读取部门资料表内容,
  //选择Query组件可以是任意的,只要不影响其他操作
  with mydata.query_depart do
  begin
    close;//执行操作时先关闭查询组件
    with sql do //设置SQL属性内容
    begin
      clear; //先清除SQL内容
      add('select 部门名称 from 部门资料表');
    end;
    open;//打开数据集
    first; //移到第一条记录
    partment.Clear; //部门组合框内容清空
    while (eof=false) do  //启启遍历所有数据,eof表示Query组件表示的数据集结束
    begin
      //调用fieldbyname函数读取数集记录中某字段内容
      temp:=fieldbyname('部门名称').AsString;
      //住部门组合框中添加新的数据项
      partment.Items.Append(temp);
      next; //移动到下一条记示
    end;
  end;
  with mydata.query_job do
  begin
    close;
    with sql do
    begin
      clear;
      add('select * from 职务类别表');
    end;
    open;
    first;
    job.Clear;  //职务组合框清空
    while (eof=false) do
    begin
      //读取职务记录
      temp:=fieldbyname('职务').AsString;
      job.Items.Append(temp);
      next;
    end;
  end;
end;
procedure TForm5.AddstuffClick(Sender: TObject);
var temp:string;
begin
  //判断输入资料是否完整 ,如果不完整则要求用户输入完整后再执行下一步操作
  if ((trim(code.Text)='') or (trim(stuffname.Text)='') or (trim(age.Text)='') or (trim(partment.Text)='') or (trim(job.Text)='') or (trim(address.Text)='') or (trim(telephone.Text)='') or (trim(mobile.Text)='')or (trim(mail.Text)='') or (trim(jobstate.Text)='')) then
  begin
    showmessage('请输入完整资料');
  end else
  begin
    //如果输入完整,则看输入的工号有没有人使用,因为工号唯一的,这样可以减少出错
    with mydata.query_stuff do
    begin
      close;
      with SQL do
      begin
        clear;
        add('select * from 员工资料表 where 员工号=:stuffcode');
        ParamByName('stuffcode').AsString:=trim(code.Text);
      end;
      open;
      //假设该工号已经存在,则发出提示信息同时重表书写SQL语句,以保持DBGrid中的数据
      if(findlast()) then
      begin
        showmessage('该工号已经有人使用,请重新输入工号');
        with sql do
        begin
          clear;
          add('select * from 员工资料表');
        end;
        open;
      end else
      //当输入无误时,执行插入操作
      begin
        close;
        with SQL do
        begin
          clear;
          //使用参数化方法书写SQL语句,参数较多,书写比较麻烦
          Add('insert into 员工资料表 values(:code,:name,:sex,:age,:partment,:job,:start,:end,:state,:address,:telephone,:mobile,:email,:remark)');
          ParamByName('code').AsString:=trim(code.Text);  //工号
          ParamByName('name').AsString:=trim(stuffname.Text);  //员工名
          if man.Checked then  //判断选择的是男还是女
          begin
            ParamByName('sex').AsInteger:=1;
          end else begin
            ParamByName('sex').AsInteger:=0;
          end;
          ParamByName('age').AsInteger:=strtoint(trim(age.Text));//年龄
          ParamByName('partment').AsString:=trim(partment.Text);//部门
          paramByName('job').AsString:=trim(job.Text);//职务
          //获取合同开始的日期 ,
          paramByName('start').AsString:=datetostr(starttime.Date);
          ParamByName('end').AsString:=datetostr(endtime.Date);//合同结束日期
          ParamByName('address').AsString:=trim(address.Text);//地址
          ParamByName('telephone').AsString:=trim(telephone.Text); //电话
          ParamByName('mobile').AsString:=trim(mobile.Text); //手机
          ParamByName('email').AsString:=trim(mail.Text);  //电子邮箱
          ParamByName('state').AsString:=trim(jobstate.Text); //工作状态
          ParamByName('remark').AsString:=trim(remark.Text);  //备注
        end;
        //执行插入操作,触发器操作使用ExecSQL语句
        try
        ExecSQL;
        except
          showmessage('unsuccess');
        end;
        close;
        //重写SQL,让所有数据显示在DBGrid组件中
        with sql do
        begin
          clear;
          add('select * from 员工资料表');
        end;
        open;
      end;
    end;
  end;
end;
procedure TForm5.clearClick(Sender: TObject);
var temp:string;
begin
  code.Text:='';
  stuffname.Text:='';
  man.Checked:=true;
  age.Text:='0';
  address.Text:='';
  telephone.Text:='';
  mobile.Text:='';
  mail.Text:='';
  jobstate.Text:='';
  remark.Text:='';
end;

procedure TForm5.Button2Click(Sender: TObject);
begin
  close;
end;

end.

⌨️ 快捷键说明

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