線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2306
推到 Plurk!
推到 Facebook!

員工工號抽獎(急,馬上要廠慶啦!公司等用。)

尚未結案
guohua_fu
一般會員


發表:44
回覆:50
積分:18
註冊:2003-06-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-12 16:20:51 IP:211.96.xxx.xxx 未訂閱
各位前輩: 1、現有一數據表A001,主要有以下字段: 工號(4) 姓名(10) 部門(10) 職稱10() 2、現我想用這個表中的數據進行員工工號隨機抽獎,從而產生一個數據表中存在的4位工號,並且一個工號只能出現一次。 3、畫面一按[開始]所有數據開始跳動,一按[停]就取出一個工號; 不知道以上功能如何實現,請大家幫幫忙! ====================== ^_^ 相信自己,你是最棒的! jacky ====================== 發表人 - guohua_fu 於 2004/07/12 16:52:42
------
jacky
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-12 17:03:20 IP:210.65.xxx.xxx 未訂閱
Hi guohua_fu,    將再職員工連接至 ClientDataSet TTable(TQuery) --> DataSetProvider --> TClientDataSet 然後
procedure TForm1.Button5Click(Sender: TObject);
Var
  No : Integer;
begin
  Randomize;
  ClientDataSet1.First;
  No := Random(ClientDataSet1.RecordCount   1); //亂數產生號碼
  ClientDataSet1.MoveBy(No);
  ShowMessage(ClientDataSet1.FieldByName('ID').AsString); // Display 抽中者
  ClientDataSet1.Delete; //抽中刪除
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
guohua_fu
一般會員


發表:44
回覆:50
積分:18
註冊:2003-06-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-12 17:26:52 IP:211.96.xxx.xxx 未訂閱
dearFishman: 謝謝您的回答。 問題我想要讓數據不斷滾動,只要用戶按[停]時就產生了。有辦法嗎? ====================== ^_^ 相信自己,你是最棒的! jacky ======================
------
jacky
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-12 17:42:20 IP:211.76.xxx.xxx 未訂閱
guohua_fu 您好: 是否可以先將所有可抽獎的員工編號存在一個陣列中,再利用此陣列產生號碼滾動效果,抽中的員工再給予註記或刪除。 不知是否幫的上忙?提供參考。 RichTop 敬上
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-12 17:56:06 IP:202.39.xxx.xxx 未訂閱
試試如下行不行? 假設 DBGrid1 顯示 ClientDataset1 的資料 按下 Button2 開始抽 按下 Button1 表要停止 此時DBGrid1 上 Cursor 停的那一筆就是中獎那筆
var
  IsStop: Boolean = False;    procedure TForm1.Button1Click(Sender: TObject);
begin
  IsStop := True;
end;    procedure TForm1.Button2Click(Sender: TObject); // 開始抽
begin
  while True do
  begin
    ClientDataSet1.Next;
    Application.Processmessages;
    Sleep(10);
    if IsStop then Exit;
    if ClientDataset1.Eof then
      ClientDataset1.First;
  end;
end;
-- 西瓜生食能解渴生津、利尿、降血壓,有「天生白虎湯」之稱。
guohua_fu
一般會員


發表:44
回覆:50
積分:18
註冊:2003-06-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-12 20:43:54 IP:211.96.xxx.xxx 未訂閱
各位大大: 好像都不太理想,沒有達到要求,能否再幫忙想想,實在是太急啦! 感激啊!!! ====================== ^_^ 相信自己,你是最棒的! jacky ======================
------
jacky
cxh17895
初階會員


發表:13
回覆:37
積分:25
註冊:2003-03-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-13 09:51:19 IP:210.68.xxx.xxx 未訂閱
你好,提供個方法你參考一下! 之前曾作過樂透開獎的小程式,每個位數有十個號(0-9),不停的換,就有類以效果出現,    用timer來達成不停的換圖, 程式內部,再用一些技巧去完成每一個位數的亂數產生,或是產生之後,再去拆解四位數
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-07-13 09:51:51 IP:210.65.xxx.xxx 未訂閱
Hi guohua_fu,    將 hagar 版大的程式碼加上以下紅色字體分,即可達到數據跳動功能
procedure TForm1.Button2Click(Sender: TObject); // 開始抽
begin
  while True do
  begin
    ClientDataSet1.Next;
    Application.Processmessages;
    Edit1.Text := ClientDataSet1.FieldByName('id').AsString;
    Sleep(10);
    if IsStop then Exit;
    if ClientDataset1.Eof then
      ClientDataset1.First;
  end;
end;
另一種方法,與 richtop 大大所言類似,範例如下 http://delphi.ktop.com.tw/loadfile.php?TOPICID=16630955&CC=371945 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-03-29 20:26:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!