不知是否真是一个疑难问题,下面是简单把试题表Exam中的4个记录写了出来,只列出关键字段。
做的是一个自动出题系统,其他题型都好解决,关键是填空题,是根据空记分。
    假如想向当前试卷加入的填空题数目是10,则应从试题表Exam中随机查询出几条记录,保证这几条记录中的下划线个数总数是10,即10分的填空题。为了编程方便,我增加了underline字段,用于在试题录入时,自动存储当前填空题中的划线个数。
    问题是如何书写这段SQL语句,随机查询出underline字段总和是10的N条记录。
请高手给出简单的Select实例Exam表:
试题编号  试题内容                                              试题解答        下划线个数
examid    content                                                answer          underline
1  存储器的1MB相当于_____________KB。                     1204            1
2  在计算机中通常以_____为单位传送信息。                  字           1
3  按组合键_____或______可以打开"开始"菜单。           <Ctrl>+<Esc>  2
4         信息技术是指____的技术,技术是____信息技术的核心。     传输信息,计算机   2'**************************
下面是原来未考虑填空题特殊情况时,随机查询N条试题的关键语句。
str=str+" select top "+cstr(rs2("ExamStyleNum"))+"  "
str=str+" "+nowPaperID+",Exam.ID,ExamJIID,ExamGroupID,ExamStyle.ID ExamStyleID,PaperExamStyle.ExamStyleScore,Content,A,B,C,D,E,F,Answer,AnswerDetail,picURL,BlankRow "
str=str+" from Exam,ExamStyle,PaperExamStyle  " 
str=str+" where Exam.ExamStyle=ExamStyle.ExamStyle   " 
str=str+" and ExamStyle.id=PaperExamStyle.ExamStyleID   " 
str=str+" and Exam.ExamJIID= "+ request.QueryString("examji")
str=str+" and Exam.ExamGroupID= "+ request.QueryString("examgroup")
str=str+" and ExamStyle.ID= "+ cstr(rs2("ExamStyleID"))
str=str+" order by NewID() "  '随机选择试题

解决方案 »

  1.   

    比如我的一张试卷显示的填空题是这样(共10个空):1、填空题  (每空1分,共10分)  1.存储器的1MB相当于_____KB。  
     2.标准的Windows窗口由标题栏、菜单栏、工具栏和_______等组成.
     3.信息技术是指_______的技术,其中______技术是信息技术的核心。  
     4.Word是文字处理软件的一种,新建一个Word文档,它的默认文件扩展名为______。  
     5.用光电技术制成的CD-ROM一张能存储______MB信息;DVD一张能存储______GB信息。 
     6.工资计算公式定义中各项栏目的类型,凡是参与计算的都应是______。  
     7.在计算机中信息储存的最小单位是_________。  
     8.计算机中的所有数据都是由__________进制数码表示。 
     
    2、单选题  (每小题2分,共20分) 
     1.在Windows98中,可以启动多个应用程序,通过( )在应用程序之间切换。 
      A:资源管理器 B:我的电脑   
      C:程序菜单 D:任务栏   
     2.对一个文件夹来说,必须有( )。   
      A:文件主名 B:文件扩展名   
      C:文件连接符 D:文件分隔符 
      ……………………