麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Access > 正文

MS SQL Server和Access分別取得隨機記錄

2024-09-07 19:05:18
字體:
來源:轉載
供稿:網友

這是博主用在一個項目上的源碼片斷,無論是速度、均衡性,還是隨機度都非常好,當然這更不可能抽到重復記錄了。

一、在MS SQL Server 2000中生成隨機記錄的最好辦法:

with tk_query do

begin

Close;

sql.clear;

sql.Add('select top '+inttostr(st_count)+' tk.ID,標準答案 from 題庫表 tk');

sql.Add('where pid is null and tk.題型='+quotedstr(tx)+' and tk.知識點='+quotedstr(zsd));

sql.add('and tk.難易度='+quotedstr(nyd)+' and tk.課程號='+quotedstr(kcdm)+' order by newid()');

Open;

end;

注:關鍵就是 order by newid() 這條語句!隨機因子就是從這里產生的。

二、數據庫為Access2000時生成隨機記錄的最好辦法:

由于Access中沒有newid()這一隨機函數,故要想在Access中直接由SQL語句生成我們所希望的隨機記錄不太可能,因此我們只好在開發語言中生成合適SQL語句,讓Access執行了(博主的開發工具為Delphi)。

//獲取題庫表中的隨機ID,組成一個字符串,類似這樣 (3,8,2,25,49,1,7,10,6,83....)

//kcdm:課程代碼,tx:題型,zsd:知識點,nyd:難易度,t_count:某一題型某一知識點某一難度下的要抽取的題量

function TTest_Srv_RDataForm.Get_Random_ID(const kcdm,tx,zsd,nyd,t_count:string):string;

var

sl: TStrings;

i,ii,kk: integer;

begin

try

Result := '';

sl := TStringList.Create;

with TADOQuery.Create(nil) do

begin

try

Connection := Adoconnection1;

SQL.Text := ' select ID from 題庫表 where pid is null and 題型='+quotedstr(tx)+

' and 知識點='+quotedstr(zsd)+' and 難易度='+quotedstr(nyd)+

' and 課程號='+quotedstr(Kcdm);

Open;

while not Eof do

begin

sl.Add(Fields[0].AsString);

Next;

end;

Close;

finally

Free;

end;

end; //end with ....

if sl.Count=0 then

Exit;

for i := 0 to StrToIntDef(t_count,0)-1 do

begin

kk := sl.Count;//隨機因子

Randomize;

ii := Random(kk); //取得隨機數

if Result='' then

Result := sl.Strings[ii]

else

Result := Result+','+sl.Strings[ii];

sl.Delete(ii); //為了避免有可能出現的重復,此ID被抽取過后把它刪了

if sl.Count=0 then //如果無題可抽了退出循環

Break;

end;

Result := '('+Result+')'; //給結果串前后加上(......),最終形成(24,36,5,89,72,3,6,1....)的串樣

finally

sl.Free;

end;

end;

//=============================================== 課程號,題型,知識點,難易度,題量

function TTest_Srv_RDataForm.Get_Random_Sql(const kcdm,tx,zsd,nyd,t_count:string):string;

begin

Result := Get_Random_ID(kcdm,tx,zsd,nyd,t_count);

if Result <> '' then

Result := ' select top '+t_count+' tk.ID,標準答案 from 題庫表 tk where id in '+Result

else

Result := ' select top '+t_count+' tk.ID,標準答案 from 題庫表 tk where 1=1 ';

end;

//以下為調用上述函數生成隨機抽題的代碼片斷

.......

with tk_query do

begin

Close;

sql.Clear;

sql.Text := Get_Random_Sql(Kcdm,tx_str,zsd_str,nyd_str,txzsd_count_str);

Open;

end;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 97久久精品一区二区三区观看 | 欧美性a视频 | 成人福利网 | 欧美精品一区二区性色 | 色妹子久久 | 国产色视频免费 | 久久看免费视频 | 天天草夜夜爽 | 日本道中文字幕 | 欧美成人精品一级 | 蜜桃久久一区二区三区 | 国产午夜精品久久久久 | 国产精选电影免费在线观看网站 | 欧美色另类 | 亚洲一区在线免费视频 | 精品一区二区免费视频视频 | 免费一级欧美 | 看全色黄大色黄大片女图片 | 依依成人综合 | 久久久麻豆 | 国产日本在线播放 | 免费在线观看亚洲 | 国产69精品久久久久久野外 | 高清国产免费 | www69xxxxx| 色视频一区二区 | 日美黄色片 | 欧美日韩在线看片 | 羞羞视频入口 | h视频免费看| 一级免费黄色 | 成人一级在线 | 精品亚洲午夜久久久久91 | 成人一级免费视频 | 黄在线观看在线播放720p | 亚洲精品久久久久久下一站 | 国产女同玩人妖 | 亚洲国产色婷婷 | 在线看小早川怜子av | jizzjizzjizz少妇 | 看免费的毛片 |