📄 yaojiangunit.~pas
字号:
begin
Showmessage('该奖项没有待抽奖的人员啦,请重新导入人员资料!');
Exit;
end;
end;
with JiangQry do //取得六等奖的奖品
begin
Active:=False;
SQL.Clear;
SQL.Add('select * from jiang where J_type=6 and J_Sum>J_Kai_Num ');
Active:=True;
if RecordCount<1 then
begin
showmessage('对不起,游戏奖已经抽完了,不能再抽!');
Button19.Enabled :=True;
Button20.Enabled :=False;
Button21.Enabled :=True;
Exit;
end;
end;
with J_FlagQry do
begin
J_FlagQry.Active :=False;
J_FlagQry.SQL.Clear;
J_FlagQry.SQL.Add('select * from Jiang where J_type=6 ');
J_FlagQry.Active :=True;
First;
while not eof do
begin
if J_FlagQry.FieldByName('J_Kai_Num').AsInteger <>J_FlagQry.FieldByName('J_sum').AsInteger then
begin
J_Flag:=1;
end;
Next;
end;
if J_Flag<>1 then
Begin
showmessage('对不起,游戏奖已经抽完了,不能再抽!');
Button19.Enabled :=True;
Button20.Enabled :=False;
Button21.Enabled :=True;
Exit;
end;
Active:=False;
end;
I6:=1;
while I6<>0 do
begin
Edit30.Text := TeQry.fieldbyname('Name_id').asString;
Edit31.Text := TeQry.FieldByname('Name_code').AsString;
Edit30.Refresh;
edit31.Refresh;
Application.ProcessMessages;
if I6=0 then
Break;
I6:=I6+1;
TeQry.Next;//取得未抽中奖的人员
if TeQry.Eof then
TeQry.First;
end;
end;
procedure TForm1.Button20Click(Sender: TObject);
Var
J_Rkey:integer;
Y_Rkey:integer;
SQLStr:String;
I:integer;
KaiNum,NoKaiNum:integer;
begin
I6:=0;
Button19.Enabled :=True;
Button20.Enabled :=False;
Button21.Enabled :=True;
Button36.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=6 and Rkey=:Rkey' );
sql.Add(' select * from Jiang where J_type=6');
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=6');
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;
Edit39.Text :=IntToStr(KaiNum)+'名';
Edit41.Text :=IntToStr(NoKaiNum)+'名';
JiangNumQry.Active :=False;
end;
end;
procedure TForm1.Button22Click(Sender: TObject);
Var
J_type:integer;
begin
J_Type:=RadioGroup1.ItemIndex;
if J_type<>7 then
begin
with J_FlagQry do
begin
Active:=False;
Sql.Clear;
SQL.Add('select Yuan.Name_id,Yuan.Name_code,Yuan.J_name from Yuan ');
SQL.add(' where Yuan.J_Flag=1 and Yuan.J_Type='+''''+IntToStr(J_Type)+''''+' order by J_name' );
Active:=True;
if RecordCount>0 then
begin
Fieldbyname('Name_id').DisplayLabel:='工号';
FieldByName('Name_code').DisplayLabel:='姓名';
FieldByName('J_name').DisplayLabel :='奖品';
end else
Begin
Active:=False;
Showmessage('还没有该项的人得奖!');
end;
end;
end else
begin
with J_FlagQry do
begin
Active:=False;
Sql.Clear;
SQL.Add('select Yuan.Name_id,Yuan.Name_code from Yuan ');
SQL.add(' where Yuan.J_EW_Flag=1 order by Yuan.J_name' );
Active:=True;
if RecordCount>0 then
begin
Fieldbyname('Name_id').DisplayLabel:='工号';
FieldByName('Name_code').DisplayLabel:='姓名';
end else
Begin
Active:=False;
Showmessage('还没有该项的人得奖!');
end;
end;
end;
end;
procedure TForm1.Button23Click(Sender: TObject);
var
VarExcel: variant;//定义一个EXCEL变量;
Vari,Varj:integer; //控制for循环的两个变量即Excel中的行数和列数
VarFilePath:String;//存储本程序导出数据文件的路径
begin
if J_FlagQry.Active = False then
begin
Showmessage('没有数据可供您输出!');
Exit;
end;
VarExcel := CreateOleObject( 'Excel.Application' );
VarExcel.Workbooks.Add;
VarExcel.Cells[1,1].Value:='工号';
VarExcel.Cells[1,2].Value:='姓名';
VarExcel.Cells[1,3].Value:='奖品';
with J_FlagQry do
begin
First;
DisableControls;
FrmProgress :=TFrmProgress.Create(nil);
FrmProgress.Show;
FrmProgress.ProgressBar1.Max :=J_FlagQry.RecordCount ;
if RadioGroup1.ItemIndex <> 7 then
begin
for VarI:=1 to (RecordCount) do
begin
for VarJ:=0 to 2 do
begin
VarExcel.Cells[VarI+1,VarJ+1].Value := Fields[VarJ].Text;
end;
Next;
FrmProgress.ProgressBar1.StepBy(1);
end;
end else
begin
for VarI:=1 to (RecordCount) do
begin
for VarJ:=0 to 1 do
begin
VarExcel.Cells[VarI+1,VarJ+1].Value := Fields[VarJ].Text;
end;
VarExcel.CElls[VarI+1,VarJ+1].Value:='额外奖';
Next;
FrmProgress.ProgressBar1.StepBy(1);
end;
end;
end;
FrmProgress.Free;
if RadioGroup1.ItemIndex=0 then
VarFilePath:='C:\特等奖.xls';
if RadioGroup1.ItemIndex=1 then
VarFilePath:='C:\一等奖.xls';
if RadioGroup1.ItemIndex=2 then
VarFilePath:='C:\二等奖.xls';
if RadioGroup1.ItemIndex=3 then
VarFilePath:='C:\三等奖.xls';
if RadioGroup1.ItemIndex=4 then
VarFilePath:='C:\四等奖.xls';
if RadioGroup1.ItemIndex=5 then
VarFilePath:='C:\五等奖.xls';
if RadioGroup1.ItemIndex=6 then
VarFilePath:='C:\六等奖.xls';
if RadioGroup1.ItemIndex=7 then
VarFilePath:='C:\额外奖.xls';
if FileExists(VarFilePath) then
DeleteFile(VarFilePath);
VarExcel.ActiveSheet.SaveAs(VarFilePath);
VarExcel.ActiveWorkBook.Close;
VarExcel.Quit;
ShowMessage(VarFilePath+',数据导出成功!');
J_FlagQry.EnableControls;
end;
procedure TForm1.Button16Click(Sender: TObject);
var
Z_J_N:integer;//用来存储中奖的管理人员数量
I:integer;//用来取得随机数的控制变量
X:integer;//循环变量
K:integer;//控制循环10次
J_Flag:integer;//标记抽奖是否完成.
begin //开五等奖
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-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=5 and J_Sum>J_Kai_Num ');
Active:=True;
if RecordCount<1 then
begin
showmessage('对不起,五等奖已经抽完了,不能再抽!');
Exit;
end;
end;
Button16.Enabled :=False;
Button17.Enabled :=True; //停止按扭
Button18.Enabled :=False; //退出按扭
I5:=1;
while I5<>0 do
begin
K:=0;
while K<10 do
begin
//if JiangQry.FieldByName('J_sum').AsInteger
X:=0;
TLabel(FindComponent('Label'+intToStr(100+k*3))).Caption := TeQry.fieldbyname('Name_id').asString;
TLabel(FindComponent('Label'+intToStr(101+k*3))).Caption := TeQry.FieldByname('Name_code').AsString;
TLabel(FindComponent('Label'+intToStr(102+k*3))).Caption :=Jiangqry.fieldbyname('J_name').AsString;
TLabel(FindComponent('Label'+intToStr(100+k*3))).Refresh;
TLabel(FindComponent('Label'+intToStr(101+k*3))).Refresh;
TLabel(FindComponent('Label'+intToStr(102+k*3))).Refresh;
Key[k]:=JiangQry.fieldByName('Rkey').AsInteger ;
YKey[k]:=TeQry.fieldByName('Rkey').AsInteger ;
application.ProcessMessages;
if I5=0 then
Break;
I5:=I5+1;
I:=Random(20);
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.Button17Click(Sender: TObject);
Var
J_Rkey:integer;
Y_Rkey:integer;
SQLStr:String;
I:integer;
KaiNum,NoKaiNum:integer;
begin
I5:=0;
Button16.Enabled :=True;
Button17.Enabled :=False; //停止按扭
Button18.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=5 and Rkey=:key';
SQl.Add(SQLStr);
sql.Add(' select * from Jiang where J_type=5');
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=5');
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;
Edit22.Text :=IntToStr(KaiNum)+'名';
Edit24.Text :=IntToStr(NoKaiNum)+'名';
JiangNumQry.Active :=False;
end;
end;
procedure TForm1.Button13Click(Sender: TObject);
var
Z_J_N:integer;//用来存储中奖的管理人员数量
I:integer;//用来取得随机数的控制变量
X:integer;//循环变量
K:integer;//控制循环10次
J_Flag:integer;//标记抽奖是否完成.
begin //开四等奖
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-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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -