精品免费在线观看-精品欧美-精品欧美成人bd高清在线观看-精品欧美高清不卡在线-精品欧美日韩一区二区

17站長網

17站長網 首頁 數據庫 Access 查看內容

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

2023-3-16 16:46| 查看: 1580 |來源: 互聯網

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

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

一、在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;

本文最后更新于 2023-3-16 16:46,某些文章具有時效性,若有錯誤或已失效,請在網站留言或聯系站長:[email protected]
·END·
站長網微信號:w17tui,關注站長、創業、關注互聯網人 - 互聯網創業者營銷服務中心

免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!

17站長網微信二維碼

始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!

掃一掃,關注站長網微信

大家都在看

熱門排行

最近更新

返回頂部
主站蜘蛛池模板: 成人黄网18免费观看的网站 | 欧美国产精品一区二区免费 | 欧美一做特黄毛片 | 国产99福利视频在线 | 888午夜不卡理论久久 | 国外精品视频在线观看免费 | 国产精品国产欧美综合一区 | 欧美精品黄页免费高清在线 | 国产好大好爽久久久久久久 | 在线精品日韩一区二区三区 | 国产女主播在线播放 | 国产一级黄色毛片 | 免费看污又色又爽又黄视频 | 国产一二三区在线 | 日产国产欧美视频一区精品 | 国产一区二区丁香婷婷 | 黄色三级a | 精品特级一级毛片免费观看 | 五月婷婷六月丁香综合 | 日本aaaa毛片在线看 | 1769国内精品视频在线观看 | 黄色片一级 | 国产精品久久久久久久久免费 | 免费黄色网址在线播放 | 毛片让我看一下毛片 | 99久久精品免费观看国产 | 国产美女视频一区二区二三区 | 18hd xxxx国产在线| 中文字幕三级久久久久久 | 黄色国产在线视频 | 国产成人高清亚洲一区91 | 黄色片网站大全 | 日韩国产成人 | 影音先锋男人在线资源 | 色一色在线观看视频网站 | 国产欧美日韩精品高清二区综合区 | 西西人体www303sw大胆高清 | 女人被狂躁的视频免费动图 | 3至13呦女毛片| 国产精品第1页在线观看 | 欧美日韩乱码毛片免费观看 |