delphi中SQL如何随机读取一条记录,如果读取的记录重复,则排列最后,以此循环!

大家好,这是一个播放软件,目前软件的随机播放只能一条一条按顺序从头到位反复播放,如何改成随机读取记录播放,如果已经读取过的记录放到最后在读取!谢谢!beginForm_M... 大家好,这是一个播放软件,目前软件的随机播放只能一条一条按顺序从头到位反复播放,如何改成随机读取记录播放,如果已经读取过的记录放到最后在读取!谢谢!
begin
Form_Main.ShowSong;
if havelocalsong then
begin
if (table_local.Active) and ((timenum mod 3)=0) then
begin
AppendLocalSong;
Table_Local.Next;
if Table_Local.Eof then Table_Local.First;
end;
end;
展开
 我来答
匿名用户
2015-02-21
展开全部
先弄一个顺序id字段,然后你的程序里根据数据记录范围置随机数后播放随机到的这个id号。播放过的放到一个数组里做这个循环的剔除比较,播放完全部后重新开始
追答
正解
zhl_529
2015-01-25 · TA获得超过151个赞
知道小有建树答主
回答量:387
采纳率:72%
帮助的人:95.8万
展开全部
既然是随机,“已经读取过的记录放到最后在读取”是什么意思?这次读取过这一条记录下一次就不能再取到这条了吗?如果是随机,是有可能两次取到同一条记录的。

你可以这样:生成不小于1且不大于Table_Local.RecordCount的一个随机数r,然后Table_Local.RecNo := r;记录下这个r值,第二次再随机生成一个数,如果这个数还是r,就再生成了一个,直到它不等于r.
追问
谢谢!完全赞同你的方法,你是否能帮我写在上面的程序里面。万分感谢!
追答
//定义全局变量,记录上一首
var
LastIndex: Integer;

function GetNextSong: Integer;
begin
repeat

Randomize;
Result := Random(Table_Local.RecordCount);
Result := Result + 1;

until Result LastIndex;

LastIndex := Result;

end;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式