回 帖 发 新 帖 刷新版面

主题:retrieve()中的参数失效

其实我只是学了pb半个月,而我看的书都只是蜻蜓点水地提及最基本的知识,有很多的操作我是不会的。我只是在做数据库的课程设计,一个近乎弱智的课程设计。
我在数据库中建立了三个表(我建表是用英文的,这里方便叙述才用中文)
学生表:学生学号,学生姓名,班别(学号是主键)
学科表:学科号,学科名,学分(学科号是主键)
选修成绩表:学生学号,选修的学科号,成绩(学生学号与选修的学科号组成主键,并且它们分别是对应的表的外键)
我简述一下我的操作
1 建立一个数据窗口,从三个表中分别选择学生姓名,选修学科名,成绩相应的列组成一个数据窗口视图。这时候预览数据是有数据,那是我全部的数据。
2 按下sql,在design中设置参数,参数名我设了学科名,类型为string。当我按确定是,它出现了这样的提示:
The(course_name)argument defined for the SELECT statement was not referenced.Do you want to continue anyway?  是(Y) 否(N)
我选了是。
这时候预览数据那里已经变成了空白(没有任何一条记录)
3 我建立了一个以输入学科名为查询条件的窗口,在其数据窗口控件的目标连接了刚才建立的数据窗口,在按钮控件的clicked()事件中添加了以下的其中一套代码:
string a
a=sle_1.text
dw_1.settransobject(sqlca)
dw_1.retrieve(a)
用了这套代码,结果是完全体现不到检索,只是把表的所有数据显示出来。


用下面的代码,情况就不一样,它会在我为sle_1.text赋值后,按查询按钮后,出现了一个很意外的对话框,要求我对刚才设置的参数赋值,我要在刚才赋值的基础上再写多次语文才可以达到预期效果。但这还是和我原意有一定偏离。
string   s_sql   //定义临时字符串变量,用来存储sql语句   
  s_sql   =   "select  student_name,course_name,score  from   student,course, student_course  where   course_name   = '"+sle_1.text+"' and student.student_no=student_course.student_no and course.course_no=student_course.course_no"   
  dw_1.settransobject(sqlca)   
  dw_1.setsqlselect(s_sql)   
  dw_1.retrieve()
我是一个菜鸟,所以恳请高手们可以为何详细解答。

回复列表 (共1个回复)

沙发

接受的参数顺序个数以及类型必须与传递的顺序、个数、类型一样。而且你必须在where 条件里面对这些传过来的参数作判断检索。

我来回复

您尚未登录,请登录后再回复。点此登录或注册