科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SQL Server和Access分别可取得随机记录(2)

SQL Server和Access分别可取得随机记录(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

此段代码无论是速度、均衡性,还是随机度都非常好,也不会出现抽到重复记录的可能。

作者:010032 来源:赛迪网 2007年8月29日

关键字: Access SQL Server SQL Server 各版本 数据库

  • 评论
  • 分享微博
  • 分享邮件
ifsl.Count=0then

Exit;

fori:=0toStrToIntDef(t_count,0)-1do

begin

kk:=sl.Count;//随机因子

Randomize;

ii:=Random(kk);//取得随机数

ifResult=''then

Result:=sl.Strings[ii]

else

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

sl.Delete(ii);
//为了避免有可能出现的重复,此ID被抽取过后把它删了

ifsl.Count=0then
//如果无题可抽了退出循环

Break;

end;

Result:='('+Result+')';
//给结果串前后加上(......),最终形成(24,36,5,89,72,3,6,1....)的串样

finally

sl.Free;



end;

end;

//=================课程号,题型,知识点,难易度,题量

functionTTest_Srv_RDataForm.Get_Random_Sql
(constkcdm,tx,zsd,nyd,t_count:string):string;

begin

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

ifResult<>''then

Result:='selecttop'+t_count+'tk.ID,
标准答案from题库表tkwhereidin'+Result

else

Result:='selecttop'+t_count+'tk.ID,
标准答案from题库表tkwhere1=1';

end;

//以下为调用上述函数生成随机抽题的代码片断

.......

withtk_querydo

begin

Close;

sql.Clear;

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

Open;
end;
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章