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

📄 yaojiangunit.~pas

📁 过年过节公司或单位都会举行抽奖的活动。 我这个程序就是用来电脑自动随机抽奖的。
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
  end;
  with JiangQry do
  begin
    Active :=False;
    SQL.Clear;
    SQL.Add('select * from Jiang where J_type=0 and J_Sum>J_Kai_NUm ');
    Active :=True;
    if RecordCount<1 then
    begin
      showmessage('对不起,特等奖已经开完了,不能再开!');
      Exit;
    end;
  end;
  button1.Enabled :=False;
  Button3.Enabled := False;
  Button2.Enabled := True;
  I0:=1;
  while I0<>0 do
  begin
    label6.Caption := TeQry.fieldbyname('Name_id').asString;
    Label7.Caption := TeQry.FieldByname('Name_code').AsString;
    Label8.Caption :=JiangQry.fieldbyname('J_name').AsString;
    label6.Refresh;
    Label7.Refresh;
    Label8.Refresh;
    application.ProcessMessages;
    if I0=0 then
    Break;
    I0:=I0+1;
    TeQry.Next;
    JiangQry.Next;
    if TeQry.Eof then
     TeQry.First;
     if JiangQry.Eof then
       JiangQry.First;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var
  J_Rkey:integer;
  Y_Rkey:integer;
  KaiNum,NoKaiNum:integer;
begin
  I0:=0;
  Button1.Enabled :=True;
  Button2.Enabled :=False;
  Button3.Enabled :=True;
  Button31.Enabled :=True;
  with J_FlagQry do
  begin             //如果中奖了则奖中奖数字段值加1
    Active:=False;
    Sql.Clear;
    Sql.Add('update Jiang set J_Kai_num=J_Kai_num+1 ');
    SQl.Add(' where J_Type=0 and Rkey=:J_Rkey' );
    sql.Add(' select * from Jiang where J_type=1');
    //if J_Ding<>0 then
    //   Parameters.ParamByName('J_Rkey').Value :=J_Ding
    //else
    Parameters.ParamByName('J_Rkey').Value :=JiangQry.fieldbyname('rkey').AsInteger ;
    Active:=true;
    Active:=False;
  end;
  J_Rkey:=JiangQry.fieldbyname('rkey').AsInteger ;
  Y_Rkey:=TeQry.fieldbyname('rkey').asInteger;
  with J_FlagQry do
  begin            //将中奖的奖品赋值给中奖之人,并标记该人已中过奖了
    Active:=False;
    Sql.Clear;
    Sql.Add('update yuan set Yuan.J_code=Jiang.J_code,Yuan.J_name=Jiang.J_name,Yuan.J_type=Jiang.J_type,Yuan.J_Flag=1 from yuan ,Jiang ' );
    Sql.Add('where Jiang.Rkey=:J_key and Yuan.Rkey=:Y_key ');
    J_FlagQry.Parameters.ParamByName('J_key').Value :=J_Rkey;
    J_FlagQry.Parameters.ParamByName('Y_key').Value :=Y_Rkey;
    Sql.Add(' select * from Yuan ');
    Active:=true;
  end;
  with JiangNumQry do   //取得当前中奖的情况
  begin
    Active:=False;
    Sql.Clear;
    Sql.Add('select J_Kai_Num,(J_Sum-J_Kai_Num) Wei from Jiang where J_type=0');
    Active:=True;
    First;
    KaiNum:=0;
    NoKaiNum:=0;
    while not eof do
    begin
      KaiNum:=KaiNum+fieldbyName('J_Kai_Num').AsInteger;//已经中奖数
      NoKaiNum:=NoKaiNum+fieldbyName('Wei').AsInteger;//还没有中奖之数
      Next;
    end;
    Label69.Caption :=IntToStr(KaiNum)+'名';
    Label70.Caption :=IntToStr(NoKaiNum)+'名';
    Active:=False;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
Var
  VarSetIni :TiniFile;
  VarStr:String;
  I:integer;
begin
  VarHRASum:=0;
  VarSetIni := TiniFile.Create(ExtractFilePath(Application.ExeName)
            +'Database.ini');
  VarStr:=VarSetIni.ReadString('Common','UseLink','');
  Self.ADOConnection1.Connected := False;
  Self.ADOConnection1.ConnectionString:='';
  Self.ADOConnection1.ConnectionString:=VarStr;
  Try
     Self.ADOConnection1.Connected :=True;
  Except
    MessageDlg('数据库连接失败!请您检查数据库连接!',mtError,[mbOK],0);
    Halt;
  end;
  with ConnNumQry do
  begin
    Active:=False;
    Sql.Clear;
    Sql.Add('select Rkey from ConnectNum');
    Active:=True;
    First;
    if self.ConnNumQry.FieldByName('rkey').AsInteger>0 then
    begin
      Showmessage('温馨提示:'+#13#10#13#10+'  对不起,本程序已经有人在另外一台电脑上运行!'+
      '需要等对方退出后,您才可以运行!');
      Halt;
    end;
  end;
  with self.ConnNumQry do
  begin
    Active:=False;
    SQL.Clear;
    SqL.Add('update connectNum set rkey=Rkey+1');
    SQL.Add('select * from connectNum');
    Active:=True;
    Active:=False;
  end;
  VarSetIni.Free;
  Button2.Enabled :=False;
  Button5.Enabled :=False;
  Button8.Enabled :=False;
  //Button20.Enabled :=False;
  Button11.Enabled :=False;
  Button14.Enabled :=False;
  Button17.Enabled :=False;
  TeQry.Active :=False;
  TeQry.Active :=False;
  I:=0;
  while I<30 do
  begin
    TLabel(FindComponent('Label'+intToStr(100+3*i))).Caption :='';
    TLabel(FindComponent('Label'+intToStr(101+3*i))).Caption :='';
    TLabel(FindComponent('Label'+intToStr(102+3*i))).Caption :='';
    I:=I+1;
  end;
  with JiangNumQry do
  begin
    Active:=False;
    SQl.Clear;
    Sql.Add('select Sum(J_Kai_Num) J_Kai_Num,Sum(J_Sum-J_Kai_Num) Wei from Jiang where J_type=0 ');
    Active:=True;
  end;
  Label69.Caption :=IntToStr(JiangNumQry.fieldbyName('J_Kai_Num').AsInteger)+'名';
  Label70.Caption :=IntToStr(JiangNumQry.fieldbyName('Wei').AsInteger)+'名';
  JiangNumQry.Active :=False;
  with self.TeQry do
  begin
    Active:=False;
    SQL.Clear;
    SQL.Add(' select Rkey from yuan where id_type='+''''+'A'+'''');
    Active:=True;
    VarHRASum:=TeQry.RecordCount;
  end;  
end;

procedure TForm1.PageControl1Change(Sender: TObject);
Var
  I:integer;
  J_Sum,KaiNum,NoKaiNum:integer;
begin
  for i:=1 to 6 do
  begin
    TButton(FindComponent('button3'+IntToStr(i))).Enabled := False;
  end;
  Button20.Enabled :=False;
  Button29.Enabled :=False;
  Edit36.Text:='';
  Edit37.Text:='';
  I0:=0;
  I1:=0;
  I2:=0;
  I3:=0;
  I4:=0;
  I5:=0;
  I6:=0;
  IEW:=0;
  I:=0;
  while I<10 do
  begin
    Key[i]:=0;
    YKey[i]:=0;
    I:=I+1;
  end;
  TeQry.Active :=False;
  J_FlagQry.Active :=False;
  JiangQry.Active :=False;
  JiangNumQry.Active :=False;
  for I:=0 to 9 do
  begin   //给各TabSheet控件中的工号,姓名,奖品的Label.caption赋空值
    TLabel(FindComponent('Label'+intToStr(39+i*3))).Caption := '';
    TLabel(FindComponent('Label'+intToStr(40+i*3))).Caption := '';
    TLabel(FindComponent('Label'+intToStr(41+i*3))).Caption := '';
    TLabel(FindComponent('Label'+intToStr(100+i*3))).Caption := '';
    TLabel(FindComponent('Label'+intToStr(101+i*3))).Caption := '';
    TLabel(FindComponent('Label'+intToStr(102+i*3))).Caption := '';
    TLabel(FindComponent('Label'+intToStr(130+i*3))).Caption := '';
    TLabel(FindComponent('Label'+intToStr(131+i*3))).Caption := '';
    TLabel(FindComponent('Label'+intToStr(132+i*3))).Caption := '';
    label160.Caption := '';
    Label161.Caption := '';
    Label162.Caption := '';
    label166.Caption := '';
    Label167.Caption := '';
    Label168.Caption := '';
    label163.Caption := '';
    Label164.Caption := '';
    Label165.Caption := '';
    label6.Caption := '';
    Label7.Caption := '';
    Label8.Caption := '';
    EDIT30.Text :='';
    eDIT31.Text:='';
    Edit36.Text :='';
    Edit37.Text:='';
  end;  
  if PageControl1.ActivePage = Tabsheet2 then
  begin
    with JiangNumQry do   //取得当前中奖的情况
    begin
      Active:=False;
      Sql.Clear;
      Sql.Add('select J_Sum,J_Kai_Num,(J_Sum-J_Kai_Num) Wei from Jiang where J_type=1');
      Active:=True;
      First;
      J_Sum:=0;
      KaiNum:=0;
      NoKaiNum:=0;
      while not eof do
      begin
        J_Sum:=J_Sum+fieldbyName('J_Sum').AsInteger;
        KaiNum:=KaiNum+fieldbyName('J_Kai_Num').AsInteger;//已经中奖数
        NoKaiNum:=NoKaiNum+fieldbyName('Wei').AsInteger;//还没有中奖之数
        Next;
      end;
      Edit1.Text :=IntToStr(J_Sum)+'名';
      Edit2.Text :=IntToStr(KaiNum)+'名';
      Edit3.Text :=IntToStr(NoKaiNum)+'名';
      Active:=False;
    end;
  end;
  if PageControl1.ActivePage = TabSheet1 then
  begin
    with JiangNumQry do
    begin
      Active:=False;
      SQl.Clear;
      Sql.Add('select Sum(J_Sum) J_sum,Sum(J_Kai_Num) J_Kai_Num,Sum(J_Sum-J_Kai_Num) Wei from Jiang where J_type=0');
      Active:=True;
    end;
    Label22.Caption :=IntTostr(JiangNumQry.fieldByname('J_Sum').AsInteger)+'名';
    Label69.Caption :=IntToStr(JiangNumQry.fieldbyName('J_Kai_Num').AsInteger)+'名';
    Label70.Caption :=IntToStr(JiangNumQry.fieldbyName('Wei').AsInteger)+'名';
    JiangNumQry.Active :=False;
  end;
  if PageControl1.ActivePage = TabSheet3 then
  begin
    with JiangNumQry do
    begin
      Active:=False;
      SQl.Clear;
      Sql.Add('select J_Sum,J_Kai_Num,(J_Sum-J_Kai_Num) Wei from Jiang where J_type=2');
      Active:=True;
      First;
      J_Sum:=0;
      KaiNum:=0;
      NoKaiNum:=0;
      while not eof do
      begin
        J_Sum:=J_Sum+fieldbyName('J_Sum').AsInteger;
        KaiNum:=KaiNum+fieldbyName('J_Kai_Num').AsInteger;
        NoKaiNum:=NoKaiNum+fieldbyName('Wei').AsInteger;
        Next;
      end;
    end;
    Edit9.Text :=IntToStr(J_Sum)+'名';
    Edit8.Text :=IntToStr(KaiNum)+'名';
    Edit7.Text :=IntToStr(NoKaiNum)+'名';
    JiangNumQry.Active :=False;
  end;
  if PageControl1.ActivePage = TabSheet4 then
  begin
    with JiangNumQry do
    begin
      Active:=False;
      SQl.Clear;
      Sql.Add('select J_Sum,J_Kai_Num,(J_Sum-J_Kai_Num) Wei from Jiang where J_type=3');
      Active:=True;
      First;
      J_Sum:=0;
      KaiNum:=0;
      NoKaiNum:=0;
      while not eof do
      begin
        J_Sum:=J_Sum+fieldbyName('J_Sum').AsInteger;
        KaiNum:=KaiNum+fieldbyName('J_Kai_Num').AsInteger;
        NoKaiNum:=NoKaiNum+fieldbyName('Wei').AsInteger;
        Next;
      end;
    end;
    Edit15.Text:=IntToStr(J_Sum)+'名';
    Edit14.Text :=IntToStr(KaiNum)+'名';
    Edit13.Text :=IntToStr(NoKaiNum)+'名';
    JiangNumQry.Active :=False;
  end;
  if PageControl1.ActivePage = TabSheet5 then
  begin
    with JiangNumQry do
    begin
      Active:=False;
      SQl.Clear;
      Sql.Add('select J_Sum,J_Kai_Num,(J_Sum-J_Kai_Num) Wei from Jiang where J_type=4');
      Active:=True;
    end;
    Edit19.Text:=IntToStr(JiangNumQry.fieldByName('J_Sum').AsInteger )+'名';
    Edit20.Text :=IntToStr(JiangNumQry.fieldbyName('J_Kai_Num').AsInteger)+'名';
    Edit21.Text :=IntToStr(JiangNumQry.fieldbyName('Wei').AsInteger)+'名';
    JiangNumQry.Active :=False;
  end;
  if PageControl1.ActivePage = TabSheet6 then
  begin
    with JiangNumQry do
    begin
      Active:=False;
      SQl.Clear;
      Sql.Add('select J_Sum,J_Kai_Num,(J_Sum-J_Kai_Num) Wei from Jiang where J_type=5');
      Active:=True;
      First;
      J_Sum:=0;
      KaiNum:=0;
      NoKaiNum:=0;
      while not eof do
      begin
        J_Sum:=J_Sum+fieldbyName('J_Sum').AsInteger;
        KaiNum:=KaiNum+fieldbyName('J_Kai_Num').AsInteger;
        NoKaiNum:=NoKaiNum+fieldbyName('Wei').AsInteger;
        Next;
      end;
    end;
    Edit25.Text:=IntToStr(J_Sum)+'名';
    Edit22.Text :=IntToStr(KaiNum)+'名';
    Edit24.Text :=IntToStr(NoKaiNum)+'名';
    JiangNumQry.Active :=False;
  end;
  if PageControl1.ActivePage = TabSheet7 then
  begin
    Button19.SetFocus;
    with JiangNumQry do
    begin
      Active:=False;
      SQl.Clear;
      Sql.Add('select J_Sum,J_Kai_Num,(J_Sum-J_Kai_Num) Wei from Jiang where J_type=6');
      Active:=True;
      First;
      J_Sum:=0;
      KaiNum:=0;
      NoKaiNum:=0;
      while not eof do
      begin
        J_Sum:=J_Sum+fieldbyName('J_Sum').AsInteger;
        KaiNum:=KaiNum+fieldbyName('J_Kai_Num').AsInteger;
        NoKaiNum:=NoKaiNum+fieldbyName('Wei').AsInteger;
        Next;
      end;
    end;
    Edit33.Text:=IntToStr(J_Sum)+'名';
    Edit39.Text :=IntToStr(KaiNum)+'名';
    Edit41.Text :=IntToStr(NoKaiNum)+'名';
    JiangNumQry.Active :=False;
  end;
end;

procedure TForm1.Button19Click(Sender: TObject);
var
   Z_J_N:integer;//用来存储中奖的管理人员数量
   I:integer;//用来取得随机数的控制变量
   X:integer;//循环变量
   K:integer;//控制循环10次
   J_Flag:integer;//标记抽奖是否完成.
begin      //开六等奖
  Button19.Enabled :=False;
  Button20.Enabled :=True;
  Button21.Enabled :=False;
  Button36.Enabled :=False;
  J_Flag:=0;
  Z_J_N:=0;
  with TeQry do
  begin  //取得已中奖的管理人员数量
    Active:=False;
    Sql.Clear;
    Sql.Add('select * from yuan where J_Flag=1 and ID_TYPE='+''''+'A'+'''');
    Active:=True;
    Z_J_N:=RecordCount;
  end;
  with TeQry do     //取得未抽中奖的人员
  begin
    active:=False;
    Sql.Clear;
    if Z_J_N>(VarHRASum-30) then//还剩30个A类人不准拿六等奖   B表示一般员工
    begin
      SQL.Add('select * from Yuan where J_Flag=0 and J_EW_Flag=0  and  and ID_type='+''''+'B'+'''');
      SQL.Add(' order by NewId() ');//NewId()在一个数据表中随机地选取出数据来
    end
    else             //
    begin
      Sql.Add('select * from yuan where  J_Flag=0 and J_EW_Flag=0  ');
      SQL.Add(' order by NewId() ');//NewId()在一个数据表中随机地选取出数据来
    end;
    Active:=True;
    if Recordcount<1 then

⌨️ 快捷键说明

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