首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi7 从1-200组中随机抽取六组数据,抽完了然后从又从1-194组中抽6组,并继续至抽完所有

2012-09-23 
delphi7 从1-200组中随机抽取6组数据,抽完了然后从又从1-194组中抽6组,并继续至抽完所有。delphi7 从1-200

delphi7 从1-200组中随机抽取6组数据,抽完了然后从又从1-194组中抽6组,并继续至抽完所有。
delphi7 从1-200组中随机抽取6组数据,抽完了然后从又从1-194组中抽6组,并继续至抽完所有。这个程序怎么写?

[解决办法]
新建一个工程、双击窗体后,用下列代码覆盖你的unit1:

Delphi(Pascal) code
unit Unit1;interfaceuses  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;implementationuses  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. 

热点排行