不知道你的数据库有多大?
我做过抽奖程序,DELPHI的ADO不支持GoTo(游标的跳转)。
如果,你第一个Random()产生的随机数是几,相对后一个是几千,那游标就会从第一个一个的往后移。慢的要死。在这里提醒你一下。
我当时解决的方法使用数组或结构。不知道,其他人有没有遇到这样的情况,怎么办的。

解决方案 »

  1.   

    你好,小妹也在做这样一个同类型的项目,我做的是一个考试系统。
    现在遇到的问题也是随机抽取形成记录集这个问题了。
    真的不知道该如何是好啊,,
    我的数据库结构很乱七八糟的,我把问题和答案都做成备注型的字段了。
    如果做选择题的话,我就设置五个答案字段,分别为answerA answerB answerC
    answerD Trueanswer 其中Trueanswer存放正确答案。不多说了,与我联系啊!
      

  2.   

    产生一个最大值为你要抽取的题数的随机数,用table的redno定位,每产生一个随机数就抽取了一条记录,注意不要抽区重复的。可以有很多方法,用一个数组记录抽取题目的唯一标识号,下次再抽取时判断抽取的题目是否已经在数组中,在,表示已重复,不在,表示没重复
    我是这样做的,速度还行
      

  3.   

    同意 wyj1974 的说法,建个主键自动编号,
    难度级别可在编号里设置。
      

  4.   

    非常同意wyj1974的说法,我也有这个问题,别人帮我解决了。
    代码如下:
    var
      I: Integer;
    begin
      Randomize;
      I := Random(ADOTable1.RecordCount);
      ADOTable1.RecNo := I; //得一题!
    end;