📄 yaojiangunit.~pas
字号:
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 + -