,要做个做数据库中随机抽奖的程序,抽出来的号码,每个号码只有一次抽奖机会,有没什么好的想法!希望大家支持下!
 多谢谢

解决方案 »

  1.   

    1. 建個臨時間, 存放已經抽取的no
    2. -- 隨機抽出5個no
      select top 5 _no from _table where _no not in (select no from temp)
      order by newid()
      // 並將這些no存入臨時表
      

  2.   

    你可以用随即数来实现啊!!
    unit SportUnit;
    interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics, 
    Controls, Forms, Dialogs,
    StdCtrls, Buttons, ExtCtrls;
    type
    TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;//以上用于放置七位号码
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Timer1: TTimer;
    Label8: TLabel;
    Timer2: TTimer;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var
    Form1: TForm1;
    implementation
    {$R *.DFM}
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    timer1.Enabled:=True;
    timer2.Enabled:=True;
    end;
    procedure TForm1.BitBtn2Click(Sender: TObject);
    begin
    timer1.Enabled:=false;
    timer2.Enabled:=false;
    end;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    Randomize;
    Label1.Caption:=IntToStr(Random(10));
    Label2.Caption:=IntToStr(Random(10));
    Label3.Caption:=IntToStr(Random(10));
    Label4.Caption:=IntToStr(Random(10));
    Label5.Caption:=IntToStr(Random(10));
    Label6.Caption:=IntToStr(Random(10));
    //随机产生0-9整数
    Label7.Caption:=IntToStr(Random(5));
    //随机产生0-4整数,第七位为特别号
    Application.ProcessMessages;
    //处理Windows消息,属简单多线程
    end;
    procedure TForm1.BitBtn3Click(Sender: TObject);
    begin
    close;
    end;
    procedure TForm1.Timer2Timer(Sender: TObject);
    begin
    Label8.Caption:=FormatDateTime('yyyy"年"m"月"d
    "日"dddd',date)+'   '+TimeToStr(time);
    end;