2,497
社区成员
发帖
与我相关
我的任务
分享
while (s1.Count div num)>=0 do //取出ispec为真前面的整num组
begin
for i:=0 to num-1 do
begin
SID:=Random(s1.Count);//位置1
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('delete from 客户信息表 where id=:ID');
ADOQuery1.Parameters.ParamByName('id').Value:=inttostr(SID);
ADOQuery1.Delete;//位置2
s1.Delete(SID);//位置3
end;
unit Unit1;
interface
uses
Windows, SysUtils, Classes, Controls, Forms, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure Button1Click(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses DB, ADODB;
var Button1: TButton;
Memo1: TMemo;
ADOQuery1: TADOQuery;
StatusBar1: TStatusBar;
{$R *.dfm}
//抽奖函数(参数为:数据集、显示的字段名、显示数据载体、每组个数)
function Lottery(ADOQuery: TADOQuery;Field_Name: string;ls: TStrings; Num: integer):boolean;
var i,j,Group:integer;
s:Tstringlist;
begin
Result:=false;
if ADOQuery.RecordCount<1 then exit;
ls.Clear;
s:=Tstringlist.Create;
try
Randomize;//初始化
//安排取数据的顺序:
for i:= 0 to ADOQuery.RecordCount-1 do
s.Insert(random(s.Count),inttostr(i));
Group:=ADOQuery.RecordCount div Num;
//满每组个数部分:
for i:= 0 to Group-1 do begin
ls.Append('第 '+inttostr(i+1)+' 组中奖的客户是:');
for j:= 0 to 6 do begin
ADOQuery.RecNo:=strtoint(s.Strings[i*6]);
ls.Append(ADOQuery.FieldByName(Field_Name).AsString);
end;
end;
//不足每组个数部分:
if ADOQuery.RecordCount mod Num >0 then begin
ls.Append('第 '+inttostr(Group*Num+1)+' 组中奖的客户是:');
for i:= 0 to ADOQuery.RecordCount mod Num -1 do begin
ADOQuery.RecNo:=strtoint(s.Strings[Group*Num+i]);
ls.Append(ADOQuery.FieldByName(Field_Name).AsString);
end;
end;
Result:=true;
finally
s.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const cp:array[0..2]of string=('连接串:','SQL串:','字段名:');
var Form:TForm;
edt:array[0..2]of TEdit;
lb:array[0..2]of TLabel;
i:integer;
Okbtn,Clbtn:TButton;
begin
Form:=TForm.Create(self);
try
Form.Position:=poScreenCenter;
Form.Caption:='连接设置';
Okbtn:=TButton.Create(Form);
with Okbtn do begin
Parent:=Form;
Left:=70;
Top:=150;
Caption:='确定';
ModalResult:=mrOk;
end;
Clbtn:=TButton.Create(Form);
with Clbtn do begin
Parent:=Form;
Left:=160;
Top:=150;
Caption:='取消';
ModalResult:=mrCancel;
end;
for i:=0 to 2 do begin
edt[i]:=TEdit.Create(Form);
with edt[i] do begin
Parent:=Form;
Top:=40+i*32;
Left:=120;
end;
lb[i]:=TLabel.Create(Form);
with lb[i] do begin
Parent:=Form;
Top:=43+i*32;
Left:=65;
Caption:=cp[i];
end;
end;
if form.ShowModal=mrOk then begin
ADOQuery1:=TADOQuery.Create(Form);
try
ADOQuery1.ConnectionString:=edt[0].Text;
ADOQuery1.Close;
ADOQuery1.SQL.Text:=edt[1].Text;
try
ADOQuery1.Open;
if Lottery(ADOQuery1,edt[2].Text,Memo1.Lines,6)then
StatusBar1.Panels[0].Text:='抽奖完毕'
else
StatusBar1.Panels[0].Text:='没数据提供抽奖';
except
StatusBar1.Panels[0].Text:='数据集参数设置错误,数据库无法打开';
end;
finally
ADOQuery1.Free;
end;
end;
finally
Form.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Height:=380;
Width:=345;
Position:=poScreenCenter;
Memo1:=TMemo.Create(self);
Memo1.Parent:=Form1;
Memo1.Align:=alLeft;
Button1:=TButton.Create(self);
with Button1 do begin
Parent:=Form1;
Top:=20;
Left:=230;
Caption:='抽奖';
OnClick:=Button1Click;
end;
StatusBar1:=TStatusBar.Create(self);
StatusBar1.Parent:=Form1;
StatusBar1.Panels.Add;
end;
end.
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
s:Tstringlist;
begin
s:=Tstringlist.Create;
try
Randomize;//初始化
//安排取数据的顺序:
for i:= 0 to 199 do
s.Insert(random(s.Count),inttostr(i));
//前33组数据:
for i:= 0 to 32 do begin
showmessage('第 '+inttostr(i+1)+' 组中奖的客户是:');
for j:= 0 to 5 do begin
ADOQuery1.RecNo:=strtoint(s.Strings[i*6+j]);
showmessage(ADOQuery1.FieldByName('客户名称').AsString);
end;
end;
//第34组数据:
showmessage('第 34 组中奖的客户是:');
ADOQuery1.RecNo:=strtoint(s.Strings[198]);
showmessage(ADOQuery1.FieldByName('客户名称').AsString);
ADOQuery1.RecNo:=strtoint(s.Strings[199]);
showmessage(ADOQuery1.FieldByName('客户名称').AsString);
finally
s.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
s:Tstringlist;
begin
s:=Tstringlist.Create;
try
Randomize;//初始化
//安排取数据的顺序:
for i:= 0 to 199 do
s.Insert(random(s.Count),inttostr(i));
//前33组数据:
for i:= 0 to 32 do begin
showmessage('第 '+inttostr(i+1)+' 组中奖的客户是:');
for j:= 0 to 6 do begin
ADOQuery1.RecNo:=strtoint(s.Strings[i*6]);
showmessage(ADOQuery1.FieldByName('客户名称').AsString);
end;
end;
//第34组数据:
showmessage('第 34 组中奖的客户是:');
ADOQuery1.RecNo:=strtoint(s.Strings[198]);
showmessage(ADOQuery1.FieldByName('客户名称').AsString);
ADOQuery1.RecNo:=strtoint(s.Strings[199]);
showmessage(ADOQuery1.FieldByName('客户名称').AsString);
finally
s.Free;
end;
end;
var data:array[0..199] of Variant;//存放着200组数据
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
s:Tstringlist;
begin
s:=Tstringlist.Create;
try
Randomize;//初始化
//安排取数据的顺序:
for i:= 0 to 199 do
s.Insert(random(s.Count),inttostr(i));
//前33组数据:
for i:= 0 to 32 do begin
{
data[strtoint(s.Strings[i*6])]);
data[strtoint(s.Strings[i*6+1])]);
data[strtoint(s.Strings[i*6+2])]);
data[strtoint(s.Strings[i*6+3])]);
data[strtoint(s.Strings[i*6+4])]);
data[strtoint(s.Strings[i*6+5])]);
}
showmessage('取出了第 '+inttostr(i+1)+' 组数据。');
end;
//第34组数据:
{
data[strtoint(s.Strings[198])]);
data[strtoint(s.Strings[199])]);
}
showmessage('取出了第 34 组数据,数据处理完毕。');
finally
s.Free;
end;
end;