a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數(shù)據(jù)庫 > Access > 正文

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

2024-09-07 19:05:18
字體:
供稿:網(wǎng)友

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

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

with tk_query do

begin

Close;

sql.clear;

sql.Add('select top '+inttostr(st_count)+' tk.ID,標(biāo)準(zhǔn)答案 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;

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

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

由于Access中沒有newid()這一隨機函數(shù),故要想在Access中直接由SQL語句生成我們所希望的隨機記錄不太可能,因此我們只好在開發(fā)語言中生成合適SQL語句,讓Access執(zhí)行了(博主的開發(fā)工具為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); //取得隨機數(shù)

if Result='' then

Result := sl.Strings[ii]

else

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

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

if sl.Count=0 then //如果無題可抽了退出循環(huán)

Break;

end;

Result := '('+Result+')'; //給結(jié)果串前后加上(......),最終形成(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,標(biāo)準(zhǔn)答案 from 題庫表 tk where id in '+Result

else

Result := ' select top '+t_count+' tk.ID,標(biāo)準(zhǔn)答案 from 題庫表 tk where 1=1 ';

end;

//以下為調(diào)用上述函數(shù)生成隨機抽題的代碼片斷

.......

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;

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美成人免费在线观看 | 国产精品中文字幕在线观看 | 1区2区视频 | 日本理论片好看理论片 | 欧美一区二区三区四区不卡 | 成全视频免费观看在线看黑人 | 中文字幕一区二区三区日韩精品 | 国产伦理片在线免费观看 | 中文 日韩 欧美 | 秋霞在线一区 | 久久亚洲精品国产精品紫薇 | 日韩av电影观看 | 国产精品理论电影 | 一区二区日韩欧美 | 三级成人在线 | 日韩福利视频 | 亚洲精品a | 色网站在线免费观看 | 欧美日本成人 | 亚洲精品三级 | 91中文字幕一区 | 精品视频| 国产精品一区二区久久精品爱微奶 | 69久久夜色精品国产7777 | 欧美在线一二三 | 四虎影院最新网址 | 中文av电影 | 国产激情偷乱视频一区二区三区 | 色丁香婷婷 | 欧美与黑人午夜性猛交久久久 | 日韩精品一区二 | 欧美激情伊人 | 香蕉av777xxx色综合一区 | 国内自拍视频在线观看 | 国产精品免费观看 | av大片在线观看 | 羞视频在线观看 | 亚洲国产精品一区 | 色婷婷综合久久久久中文一区二 | 午夜精品久久久久久99热软件 | 青草视频免费 |