在SQL SERVER中有两个表一题库表。表一:表名:question,字段为ques_no(题号)question(问题内容)
answer(答案),grade(问题难度等级)另一个表名:answer_record(用来记录用户答题记录)字段为:user_name(用户名)ques_no(用户以答题的题号)
如何实现对表question的随机访问有不能重复在用户已经答过的题??

解决方案 »

  1.   

    只提供思路建立一个数组。首先是随机抽取题目的问题:使用delphi的随机函数即可:
        Randomize;
        random(num:integer);将抽取的题号添加到一个集合中。当抽取到下一道题目的时候首先确认新的题号是否在集合中(使用in操作符),如果在则继续抽取。你最好应该单独建立一个用来保存试卷的表。而且为每一张试卷设置难度等级,和总分数。这样在随机抽取题目的时候增加几个条件用于确认是否将随机抽取到的题目添加到试卷中。这些条件是:1、不在已经抽取到的集合中  2、总分数小于试卷分数  3、难度符合要求。
      

  2.   

    随机访问记录的问题还没有回答,首先你可以得到总的题目的条数(这里你也可以按题型分别访问)。例如:我们以访问所有题目为例。我们首先设置一个集合比如为A
    首先获取题目的总数 select count(*) as tcount from 题库
    这样从tcount就能获得总的题目的数量了然后使用random(tcount)就能够随即抽取一个序号。例如为B,然后我们来判断B in A
    如果False ,则将B---- + >A 中。将数据集中的第B条记录(题目)保存到试卷中。
    然后循环调用random(tcount),直到抽取到要求的题目数量。可扩充话题:
    刚才是以所有题目为例,当你需要按题型抽取(或特定范围内)时,你只需要筛选数据集即可。
      

  3.   

    随机抽取的问题我不需在回答了,以上的兄弟已经说了。补充(可以用RecNo属性
    RecNo=random(Query.RecordCount)速度会快些)
    我想说“如何实现对表question的随机访问有不能重复在用户已经答过的题??“
    在多添一个字段usabled,默认值为0,表示该记录没有被抽取。
    当你随机抽取了某个记录后,将字段usabled赋为1,表示该记录已被抽取。下一次随机抽
    取时只要先把usabled=1的记录过滤出去在进行抽取,这样就不会重复抽取了
    有问题法邮件[email protected]
    如果说的有理别忘了给哥们加分
      

  4.   

    是呀!
    我打算用tquery。我的打算是在数据库中建一个拥护答题记录表。有两个字段:一:user_name
    二:ques_no,我的意思就是当用户答了此题以后。往该表中添加一条记录。可是,由于由于要随机
    出题。又要不重复,所以在出每道题前都必须与记录用户答题表的记录进行比较。可是如何取得随机
    数又是一个问题!!1