【高分】aecss 如何随机查询,急问,在线等....
acess 如何利用SQl语句随机查询一条记录,而在每一次查询结果都不一样???
差了很多资料,都只能查询一次,以后都一样了。。。。。
请问谁有好的办法??先谢过了!
急问,有答案即结贴!
[解决办法]
最简单的办法:表中增加一个自动编号字段,然后用Hour、Minute、Second函数分别获得查询时间的数字,分钟*60,小时*3600,然后相加。目的是要得到当前查询时间是当天的哪一秒,然后查找和当前秒数对应的自动编号就行了。如果记录非常多也可以把日期转化成数字加起来查询。
这样只要不是在同一秒查询结果就不一样。
[解决办法]
很简单..
你如果使用 ADO 技术读取 过记录集,那么问题就不难了.
你所谓的随机查询,就是下一次出现的记录 与当前已经显示的一条记录不同(也可能相同,相比之下机率要小得多).
//////////////////////////////////////////////
ADO 有一个对于你来讲很有用的方法,即 标记记录位置的移动方法 "Move 方法" 或 "MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法"
简单说明:
使用 MoveFirst 方法将当前记录位置移动到 Recordset 中的第一个记录.
使用 MoveLast 方法将当前记录位置移动到 Recordset 中的最后一个记录。
使用 MoveNext 方法将当前记录位置向前移动一个记录(向 Recordset 的底部移动)
使用 MovePrevious 方法将当前记录位置向后移动一个记录(向 Recordset 的顶部移动)
使用 Move 方法 在 Recordset 对象中移动当前记录的位置。
语法:
recordset.Move NumRecords, Start
如果 NumRecords 参数大于零,当前记录位置向前移动(向 Recordset 的结尾移动)。如果 NumRecords 小于零,当前记录位置向后移动(向 Recordset 的开始移动)。
Start 代表 开始位置
/////////////////////////////////////////////////
上面只是给出了相关的提示,并没有给出 具体的实现方法.
并且涉及到 随机问题 必然会使用 随机种子的函数, 都是弄程序的人这个就不用我再说了.
总体思想就 打开记录集 用循环语句开始循环移动当前记录所在记录集中的位置,当位置与随机的种子计算表达式的值相等时,跳出循环并显示当前的记录......
[解决办法]
select top 1 * from yourTable order by rnd(字段1)
[解决办法]
怎么还顶,试过我的办法不行吗?
[解决办法]
SELECT TOP 5 * FROM TB ORDER BY NEWID()
[解决办法]
还没结吗????
[解决办法]
http://topic.csdn.net/u/20090705/12/ec85d3f3-5e34-4168-a8ec-5e17f9d313af.html
去 看 看 ~~ 我 前几天 也遇到这个问题~~!
[解决办法]
可以随机产生一个数字,然后查询这个数字的记录
[解决办法]
支持设置时间来解决
[解决办法]
路过 顶一下
[解决办法]
咋?? 还没有结贴??
如果只用 SQL 语句, 那么 ACMAIN_CHM 给出的语句最经典!!
select top 1 * from yourTable order by rnd(字段1)
ACMAIN_CHM 在上面只是给出了一个 语句 模板,你可自己套用就行了;例如我们随机查询的是 采购订单表中的一条记录,套用上述语句模板后如下所示:
SELECT top 1 采购订单.*
FROM 采购订单
order by rnd(序号);
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
当然你如果对VB 或 VC 等比较熟悉,也可以使用我说过的采用 ADO 技术移动记录指针随机指向任意记录位置的办法;不过需要写一段代码,但也不难.
如果对比所付出劳动时间,不难看出 ACMAIN_CHM 给出的 SQL 语句 容易接受.....
-.- 我写了这么多 你若还是理解不了....我只能挂掉了...
你还可以登录 http://www.accessbbs.cn 论坛 ,上传实例来交流,那里会有很多热心的朋友帮助你.
[解决办法]
SELECT TOP 5 * FROM TB ORDER BY NEWID()
[解决办法]
1. 随机查询,就是下一次出现的记录 与当前已经显示的一条记录不同
2. select top 3* from tablename where field
3. 把这个写进一个简单的操作中就可以了
[解决办法]
SELECT TOP 1 *FROM [yourtablename]ORDER BY rnd([Primary Key]);
[解决办法]
你要是用程序查询,ado有缓存,所以你需要这么实现,参见例子
http://dotnet.aspx.cc/article/1a54941d-94cc-4a3e-9b67-3e72af16c49a/read.aspx
其他语言做法类似