数据库表字段为
employeeID   employeEno   employeeName  employeeStatus
1            0001          Finer        1
2            0002          Sammi        1
3            0003          Tom          0
...
1000         1000         Blake       1其中,employeeID是自动增长,employeeStatus在职状态,1为在职,0为离职我想弄个抽奖程序:
要求把离职的职员去掉不加入抽奖。
有个别人的程式:procedure TForm1.Timer1Timer(Sender: TObject);
var maxcount:integer;
begin
   button1.Caption:='Stop';
   maxcount:=random(N);//N中最大的employeeID
   adoquery1.Close;
   adoquery1.SQL.clear;
   adoquery1.SQL.add('select employeeno from employee where employeeid='+inttostr(maxcount)+'');
   adoquery1.Active:=true;
   label1.Caption:=adoquery1.fieldbyname('employeeno').AsString;
end;显然maxcount:=random(N);//N中最大的employeeID,在我的程序里是不能这样用的,否则会出现对应离职员工的employeeID.请问怎样处理为好?是弄个临时表么?谢谢!

解决方案 »

  1.   

    在你SQL语句里面加上
    where employeeStatus<>0 可以吗?
      

  2.   

    sql server
    select top 1 employeeno from employee 
    where employeeStatus<>0
    order by newid()
      

  3.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    var maxcount:integer;
    begin
       button1.Caption:='Stop';
       maxcount:=random(N);//N中最大的employeeID
       adoquery1.Close;
       adoquery1.SQL.clear;
       adoquery1.SQL.add('select employeeno from employee where employeeid='+inttostr(maxcount)+' and employeeStatus= 1 ');
       adoquery1.open;
       label1.Caption:=adoquery1.fieldbyname('employeeno').AsString;
    end;