文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 国产软件 | 国外软件 | 汉化补丁 | 设为首页 | 加入收藏
网站首页 软件下载
数码学院 网络学院
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网站建设 | 技术开发 | 专栏
当前位置:abcdown网络学院办公软件AccessSQL Server和Access分别可取得随机记录
精品广告
推荐TOP10
·帮你防止Access数据库被下载的九种方法
·几种修复ACCESS数据库的实用方法
·两个未被公开Access数据库方法使用技巧
·整理:防止Access数据库被下载的9种方法
·Access中利用拆分后端数据库保存不同数据
·有关ACCESS的数据库安全问题解答
·保护Access 2000数据库的安全方法
·Excel和Access间复制、导入和导出数据
·保护Access 2000数据库的安全
·Microsoft Access技巧及陷阱讲解
·更改Excel数据导入源文件的快捷方法
·在 Access 中使用“存储过程”
阅读TOP10
·帮你防止Access数据库被下载的九种方法
·保护Access 2000数据库的安全方法
·安全的Microsoft的ACCESS数据库加密方法
·几种修复ACCESS数据库的实用方法
·ACCESS中如何使用SQL
·用SQL链接服务器访问远程Access数据库
·在Access数据库中使用SQL Server语句
·ACCESS如何打印窗体中当前显示的记录
·Access使用查询--1.2.用选择查询进行分组数据的计算
·Access使用宏控制程序
·巧用Access逐条输出Excel中的记录
·如何使用制表控制器简化Access对表操作
·Excel和Access间复制、导入和导出数据
·建立自由的会计日期的报表--1.4.让报表处理期初和期末之间的数据
·Access使用查询--1.1. 用选择查询建立计算字段
·关于Access数据库4种安全方式
·掌握部署 Access项目的方法
·设置在 Access项目中检索的记录数
·用ASP和SQL语句动态的创建Access表
·以前流行的4种Access数据库安全方式

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

日期:2007年7月14日 作者: 查看:[大字体 中字体 小字体]


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

一、在SQL Server2000中生成随机记录的最好办法:

withtk_querydo

begin

Close;

sql.clear;

sql.Add('selecttop'+inttostr
(st_count)+'tk.ID,标准答案from题库表tk');

sql.Add('wherepidisnullandtk.题型=
'+quotedstr(tx)+'andtk.知识点='+quotedstr(zsd));

sql.add('andtk.难易度='+quotedstr(nyd)+
'andtk.课程号='+quotedstr(kcdm)+'orderbynewid()');

Open;

end;

注:关键就是orderbynewid()这条语句,随机因子就是从这里产生。

二、数据库为Access2000时生成随机记录的最好办法:

由于Access中没有newid()这一随机函数,故要想在Access中直接由SQL语句生成我们所希望的随机记录不太可能,因此我们只好在开发语言中生成合适SQL语句,让Access执行了。

//获取题库表中的随机ID,组成一个字符串,类似这样(3,8,2,25,49,1,7,10,6,83....)

//kcdm:课程代码,tx:题型,zsd:知识点,nyd:难易度,t_count:某一题型某一知识点某一难度下的要抽取的题量

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

var

sl:TStrings;

i,ii,kk:integer;

begin

try

Result:='';

sl:=TStringList.Create;

withTADOQuery.Create(nil)do

begin

try

Connection:=Adoconnection1;

SQL.Text:='selectIDfrom题库表
wherepidisnulland题型='+quotedstr(tx)+

'and知识点='+quotedstr(zsd)+'and难易度='+quotedstr(nyd)+

'and课程号='+quotedstr(Kcdm);

Open;

whilenotEofdo

begin

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

Next;

end;

Close;

finally

Free;

end;

end;//endwith....

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);

[1] [2] 下一页 

上一篇:教你如何读取Excel数据并导入DB2数据库

下一篇:数据库中三大问题约束、CASE语句和文件


相关软件: 相关文章:
·美女你别跑 局域网QQ号随意监测
·MSN好友IP地址随便查
·鼠标跟随
·Word图片也能随意旋转
·警惕高危木马病毒 随意下载病毒窃密码
·q-zone紫色星星自然滚动跟随鼠标[代码]
·网络媒体公关随想:借势、共生、发展,及升华
·扑克牌的发牌程序(用伪随机数实现)
·authorware实现鼠标跟随
·用AS让MC做随机运动的具体解析

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
首页 | 本站声明 | 下载帮助 | 发布软件 |
中文版权所有:ABC学院 浙ICP备05000717号