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

📄 yaojiangunit.~pas

📁 过年过节公司或单位都会举行抽奖的活动。 我这个程序就是用来电脑自动随机抽奖的。
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
  end;
  with JiangQry do   //取得四等奖的奖品
  begin
    Active:=False;
    SQL.Clear;
    SQL.Add('select * from jiang where J_type=4 and J_Sum>J_Kai_Num ');
    Active:=True;
    if RecordCount<1 then
    begin
      showmessage('对不起,四等奖已经抽完了,不能再抽!');
      Exit;
    end;
  end;
  Button13.Enabled :=False;
  Button14.Enabled :=True; //停止按扭
  Button15.Enabled :=False; //退出按扭
  I4:=1;        //全局变量用来控制停止的
  while I4<>0 do
  begin
    K:=0;
    while K<10 do
    begin
      //if JiangQry.FieldByName('J_sum').AsInteger
      X:=0;
      TLabel(FindComponent('Label'+intToStr(130+k*3))).Caption := TeQry.fieldbyname('Name_id').asString;
      TLabel(FindComponent('Label'+intToStr(131+k*3))).Caption := TeQry.FieldByname('Name_code').AsString;
      TLabel(FindComponent('Label'+intToStr(132+k*3))).Caption :=Jiangqry.fieldbyname('J_name').AsString;
      TLabel(FindComponent('Label'+intToStr(130+k*3))).Refresh;//给中奖人的资料刷新显示,避免中奖时显示迟钝
      TLabel(FindComponent('Label'+intToStr(131+k*3))).Refresh;
      TLabel(FindComponent('Label'+intToStr(132+k*3))).Refresh;
      Key[k]:=JiangQry.fieldByName('Rkey').AsInteger ;
      YKey[k]:=TeQry.fieldByName('Rkey').AsInteger ;
      application.ProcessMessages;
      if I4=0 then
        Break;
      I4:=I4+1;
      I:=Random(2);
      while x<(I+1) do
      begin
        X:=X+1;
        TeQry.Next;
      //  JiangQry.Next;
        if TeQry.Eof then
          TeQry.First;
      //  if JiangQry.Eof then
      //    Jiangqry.First;
      end;
      K:=K+1;
    end;
  end;
end;

procedure TForm1.Button14Click(Sender: TObject);
Var
  J_Rkey:integer;
  Y_Rkey:integer;
  SQLStr:String;
  I:integer;
begin
  I4:=0;  //四等奖的停止控制开关
  Button13.Enabled :=True;
  Button14.Enabled :=False;          //停止按扭
  Button15.Enabled :=True; //退出按扭
  I:=0;
  while I<10 do
  begin
    with J_FlagQry do
    begin             //如果中奖了则奖中奖数字段值加1
      Active:=False;
      Sql.Clear;
      SQLStr:=' update Jiang set J_Kai_num=J_Kai_num+1  where J_Type=4 and Rkey=:key';
      SQl.Add(SQLStr);
      sql.Add(' select * from Jiang where J_type=4');
      Parameters.ParamByName('Key').Value := Key[i];
      Active:=true;
      Active:=False;
    end;
    I:=I+1;
  end;
  I:=0;
  while I<10 do
  begin
    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 :=key[i];
      J_FlagQry.Parameters.ParamByName('Y_key').Value :=YKey[i];
      Sql.Add(' select * from Yuan ');
      Active:=true;
    end;
    I:=I+1;
  end;
  J_FlagQry.Active :=False;
  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=4');
    Active:=True;
    Edit20.Text :=IntToStr(JiangNumQry.fieldbyName('J_Kai_Num').AsInteger)+'名';
    Edit21.Text :=IntToStr(JiangNumQry.fieldbyName('Wei').AsInteger)+'名';
    JiangNumQry.Active :=False;
  end;

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  Button32.Enabled :=False;
  with TeQry do
  begin     //取得用来抽一等奖的管理人员
    active:=False;
    Sql.Clear;
    Sql.Add('select * from yuan where id_type='+''''+'A'+''''+' and J_Flag=0 and J_EW_Flag=0 ');
    Sql.Add('order by NewId()');    //NewId()在一个数据表中随机地选取出数据来
    Active:=True;
    if Recordcount<1 then
    begin
      Showmessage('该奖项没有待抽奖的人员啦,请重新导入人员资料!');
      Exit;
    end;
  end;
  with JiangQry do
  begin             //取得一等奖的奖品
    Active:=False;
    SQL.Clear;
    SQL.Add('select * from jiang where J_type=1 and J_Sum>J_Kai_Num ');
    Active:=True;
    if RecordCount<1 then
    begin
      showmessage('对不起,一等奖已经开完了,不能再开!');
      Exit;
    end;
  end;
  Button4.Enabled :=False;
  Button6.Enabled :=False;//退出按扭
  Button5.Enabled :=True; //停止按扭
  I1:=1;
  while I1<>0 do
  begin
    label163.Caption := TeQry.fieldbyname('Name_id').asString;
    Label164.Caption := TeQry.FieldByname('Name_code').AsString;
    Label165.Caption :=Jiangqry.fieldbyname('J_name').AsString;
    label163.Refresh;
    Label164.Refresh;
    Label165.Refresh;
    application.ProcessMessages;
    if I1=0 then
    begin
      Break;
    end;
    I1:=I1+1;
    TeQry.Next;
    JiangQry.Next;
   // sleep(1000);
    if TeQry.Eof then
     TeQry.First;
     if JiangQry.Eof then
       Jiangqry.First;
  end;
end;

procedure TForm1.Button5Click(Sender: TObject);
Var
  J_Rkey:integer;
  Y_Rkey:integer;
  KaiNum,NoKaiNum:integer;
  //J_Ding,Y_Ding:integer;//记录内定奖品和人员的Rkey
  J_Ding_Num:integer;
begin
  Button32.Enabled :=True;
 // J_Ding:=0;
 // Y_Ding:=0;
  I1:=0;
 { if Edit3.Text<>'1名' then
  begin
    with DingQry do
    begin
      Active:=False;
      Sql.Clear;
      Sql.Add('select * from Jiang where J_Ding_Num=1 ');
      Active:=True;
      if RecordCount>0 then
      begin
        if Label165.Caption = FieldByName('J_Name').AsString then
        begin                                 //如果奖品转到了内定的奖品时重新选取不是内定的奖品
          JiangQry.Active:=False;
          JiangQry.Sql.Clear;
          JiangQry.SQl.Add('select * from Jiang where J_Type=1 and J_Sum>J_Kai_num and J_Ding_Num=0');
          JiangQry.Active:=True;
          Label165.Caption :=JiangQry.fieldbyname('J_name').AsString ;
        end;
      end;
    end;
  end;
  if Edit3.Text='1名' then
  Begin
    with DingQry do
    begin
      Active:=False;
      Sql.Clear;
      Sql.Add('select * from Jiang where J_Ding_Num=1 ' );
      Active:=True;
    end;
    if DingQry.RecordCount>0 then //如果有内定则执行下列代码
    Begin
       J_Ding:=DingQry.fieldbyname('Rkey').AsInteger ;//取得内定奖品的Rkey;
       Label165.Caption := DingQry.FieldByName('J_Name').AsString ;
       with DingQry do
       begin
         Active:=False;
         Sql.Clear;
         Sql.Add('select * from Yuan where Ding_Code='+''''+'1'+'''');
         Active:=True;
         Y_Ding:=FieldByName('Rkey').AsInteger ;
         Label163.Caption :=DingQry.FieldByName('Name_id').AsString ;
         Label164.Caption :=DingQry.fieldByName('Name_Code').AsString ;
       end;
    end;
  end;  }
  Button4.Enabled :=True;
  Button5.Enabled :=False;//停止按扭
  Button6.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=1 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 ');
   // if J_ding<>0 then
   // begin
   //   J_FlagQry.Parameters.ParamByName('J_key').Value :=J_Ding;
   //   J_FlagQry.Parameters.ParamByName('Y_key').Value :=Y_Ding;
   // end else
   // begin
    J_FlagQry.Parameters.ParamByName('J_key').Value :=J_Rkey;
    J_FlagQry.Parameters.ParamByName('Y_key').Value :=Y_Rkey;
    //end;
    Sql.Add(' select * from Yuan ');
    Active:=true;
    Active:=False;
  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=1');
    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;
    Edit2.Text :=IntToStr(KaiNum)+'名';
    Edit3.Text :=IntToStr(NoKaiNum)+'名';
    Active:=False;
  end;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  Button33.Enabled :=False;       
  with TeQry do     //取得未抽中奖的人员
  begin
    active:=False;
    Sql.Clear;
    SQL.Add('select * from Yuan where J_Flag=0 and J_EW_Flag=0 and ID_type='+''''+'A'+'''');
    SQL.Add(' order by NewId() ');//NewId()在一个数据表中随机地选取出数据来
    Active:=True;
    if Recordcount<1 then
    begin
      Showmessage('该奖项没有待抽奖的人员啦,请重新导入人员资料!');
      Exit;
    end;    
  end;
  with JiangQry do
  begin             //取得二等奖的奖品
    Active:=False;
    SQL.Clear;
    SQL.Add('select * from jiang where J_type=2 and J_Sum>J_Kai_Num');
    Active:=True;
    if RecordCount<1 then
    begin
      showmessage('对不起,二等奖已经开完了,不能再开!');
      Exit;
    end;
  end;
  Button7.Enabled :=False;
  Button9.Enabled :=False;//退出按扭
  Button8.Enabled :=True; //停止按扭
  I2:=1;
  while I2<>0 do
  begin
    label166.Caption := TeQry.fieldbyname('Name_id').asString;
    Label167.Caption := TeQry.FieldByname('Name_code').AsString;
    Label168.Caption :=Jiangqry.fieldbyname('J_name').AsString;
    label166.Refresh;
    Label167.Refresh;
    Label168.Refresh;
    application.ProcessMessages;
    if I2=0 then
    Break;
    I2:=I2+1;
    TeQry.Next;
    JiangQry.Next;
    if TeQry.Eof then
     TeQry.First;
    if JiangQry.Eof then
      Jiangqry.First;
  end;
end;

procedure TForm1.Button8Click(Sender: TObject);
Var
  J_Rkey:integer;
  Y_Rkey:integer;
  KaiNum,NoKaiNum:integer;
begin
  I2:=0;
  Button7.Enabled :=True;  
  Button8.Enabled :=False;//停止按扭
  Button9.Enabled :=True;  //退出按扭
  Button33.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=2 and Rkey=:Rkey' );
    sql.Add('select * from Jiang where J_type=2');
    Parameters.ParamByName('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;
    Active:=False;
  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=2');
    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;
    Edit8.Text :=IntToStr(KaiNum)+'名';
    Edit7.Text :=IntToStr(NoKaiNum)+'名';
    JiangNumQry.Active :=False;
  end;
end;

procedure TForm1.Button10Click(Sender: TObject);
Var
  Z_J_N:integer;
begin
  Button34.Enabled :=False;
  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-20) then//如果管理人员的中奖人数还剩20个则不准抽三等奖了
    begin
      SQL.Add('select * from Yuan where J_Flag=0 and J_EW_Flag=0 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
    begin
      Showmessage('该奖项没有待抽奖的人员啦,请重新导入人员资料!');
      Exit;
    end;    
  end;
  with JiangQry do
  begin             //取得三等奖的奖品
    Active:=False;
    SQL.Clear;
    SQL.Add('select * from jiang where J_type=3 and J_Sum>J_Kai_NUm');
    Active:=True;
    if RecordCount<1 then
    begin
      showmessage('对不起,三等奖已经开完了,不能再开!');

⌨️ 快捷键说明

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