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; 展开
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号。播放过的放到一个数组里做这个循环的剔除比较,播放完全部后重新开始
追答
正解
展开全部
既然是随机,“已经读取过的记录放到最后在读取”是什么意思?这次读取过这一条记录下一次就不能再取到这条了吗?如果是随机,是有可能两次取到同一条记录的。
你可以这样:生成不小于1且不大于Table_Local.RecordCount的一个随机数r,然后Table_Local.RecNo := r;记录下这个r值,第二次再随机生成一个数,如果这个数还是r,就再生成了一个,直到它不等于r.
你可以这样:生成不小于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;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询