ACCESS中如何实现提取记录总数的方法
发布网友
发布时间:2022-04-12 14:58
我来回答
共3个回答
热心网友
时间:2022-04-12 16:28
随机提取access数据库记录的几种方法
前天有人在QQ群里问如何从Access数据库里随机抽取几条记录。这个问题如果放在SQL Server上就比较容易解决,比如随机抽取10条记录,采用的T-SQL语句是:
Select Top 10 * From [SomeTable] Order By NewID()
可以获得很好的效果,但是对于Access数据库而言就没有这么方便了。
在以前我也遇到过这样的问题,当时写一篇整理文字来讨论这个问题。这两天找到了这篇文字重新整理一下放在这里。 采用的Access数据库。总结了几种办法
方法一:有人用如下代码以记录总数为极大值来首先提取出指定数量的随机数,然后以这些随机数做为记录ID。
VBScript代码:
dim n,j
dim su()
dim a,b,k
b=myrs.RecordCount
Randomize
redim su(index_N)
su(1)=Int((b * Rnd) + 1)
for n=2 to index_N
a=Int((b * Rnd) + 1)
for j=1 to n
do while a=su(j)
a=Int((b* Rnd) + 1)
j=1
loop
next
su(n)=a
next
这种方式有一些问题,就是当主键ID不连续的话,有可能某些随机数不存在ID序列当中。另外ID的最大值与总的记录值不一定相等,这样有些记录ID会永远被忽略。
方法二:有人采用一条SQL语句解决此问题
select top 5 * From Table1 order by Rnd()*5
这条语句可以随机从Access数据库中摄取5条记录。但是实际操作中,其生成的记录结果是固定的,失去了随机摄取记录的意义。
方法三:有这样一种方法。
利用随机数生成主键的记录ID
yourstr="*1*3*4*6*12*...."
然后用
sql="select top 10 * form yourdb where instr('*'&id&'*','"&yourstr&"')<>0"
yourstr
可以生成随机数多一点大于所限定抽取的随机数为好。这样可以排除记录不足的情况。
此方法也不太好,而且采用InStr语句,不能利用索引优化,对资源有一定的消耗。
方法四:
代码实现如下:
<%
n=10 ''取任意10条记录
set rs = server.CreateObject ("adodb.recordset")
sql = "select * from table"
rs.open sql,conn,1,1
count=rs.recordcount ''记录总数
IF Count<>empty Then
Randomize
for i = 1 to n ''循环n次
num=Fix(Rnd*count) ''num便是随机产生的记录行数,用Fix(),使其不会大于count值。
rs.move num ''移到改随机行
Response.write rs(0) ''出该条记录
rs.movefirst ''别忘了再把指针移到第一条
next
End IF
rs.close
set rs = nothing
%>
这个方式感觉上比较好些。
方法五:
此方法应该算是比较接近于SQL Server的用法了。
代码:
randomize '得到随机的种子,9999根据你的记录数量级调整,具体调到你出来的记录集随机序列均化
seed=round(rnd*9999)
'以下两种方法都可以,id是主键自增字段
Sql="select id,分值 from table where order by rnd(-"&seed&"-id-"&seed&")"
……
如果还有更好的方法也可以提出来。
热心网友
时间:2022-04-12 17:46
做一个数据关联,就像SQL一样,还有种方法就是有做一个界面,例如用VB做,把不同的TEXT连接到不同表,显示出来的效果完全可以达到你的要求。最简单的还是做数据关联。
热心网友
时间:2022-04-12 19:20
Select Top 8 * From table order by Rnd(numb),numb是数字型的,一般是序号。得到的记录是随机的,每次都不一样,这个很适用于做考试系统,从题库里选题
ACCESS中如何实现提取记录总数的方法
这个方式感觉上比较好些。方法五:此方法应该算是比较接近于SQL Server的用法了。代码:randomize '得到随机的种子,9999根据你的记录数量级调整,具体调到你出来的记录集随机序列均化 seed=round(rnd*9999)'以下两种方法都可以,id是主键自增字段 Sql="select id,分值 from table where order by rnd(...
如何在Access查询中获取表的总记录数?
方法2:使用查询向导-简单查询向导-选定计数字段-汇总-汇总选项-汇总
access数据库入门教程如何合计汇总数据
1. 启动Access软件,并打开您希望进行数据汇总的表格。以“学生期末成绩”表为例,我们将计算语文成绩的总分、数学成绩的平均分以及英语成绩的最低分。2. 点击菜单栏中的【开始】选项,然后选择记录中的【汇总】。3. 此时,表格最下方将显示汇总行。在姓名栏下的空白单元格处点击,将出现图标,点击该...
access在查询表里统计符合条件的记录数?
select count(字段名) as 总记录数 from 表名 新建个查询,改动一下相关内容就行了。
用vb怎么样能获取一个access表里面的记录总数?
先用记录集打开此表 然后用记录集的recordcount属性获取记录条数 1.dim s as long rs.open "select * from table",con s=rs.recordcount-1 2.dim s as long rs.open "select count(*) from table",con s=rs.fields(0)
php access 如何获得记录条数
recordCount的结果并不一定准确,建议先执行一个SELECT COUNT(*)的查询语句获取数据总数
access数据库随机显示问题
方法一:有人用如下代码以记录总数为极大值来首先提取出指定数量的随机数,然后以这些随机数做为记录ID。dim n,j dim su()dim a,b,k b=myrs.RecordCount Randomize redim su(index_N)su(1)=Int((b * Rnd) + 1)for n=2 to index_N a=Int((b * Rnd) + 1)for j=1 to n do ...
DELPHI ADOQUERY连接ACCESS,查询记录总数问题
应该是 FieldByName('日期').AsString := DateTimeToStr(Date());SQL.Add('select * from DIPBCT where 日期=date()这两句的原因 ACCESS 数据库对日期的查找应该加 而且 DateTimeToStr(Date()的格式与 where 日期=date() 的日期格式不同。第一句换成 FieldByName('日期').AsString := format...
vbAccess数据库A字段存题,B字段存答案,随机抽取20个内容,A输出到text1...
来个笨方法:1、打开记录集 2、记录集MOVEFIRST 3、rnd * 记录总数 后 取整 4、do until 循环记录集 ,循环次数由随机数确定,达到循环次数后,取出问题后再重复步骤2,直到达到20条。注意如有重复记录,也终止循环而重复步骤2
在access中的立即窗口中string sum avg count max min这些函数怎么用...
sum:就和函数 avg:求平均值 count:统计记录总数 max:求最大值 min:求最小值