我把程序中想实现的功能给各位大虾说一下:有student,kecheng,score等三个表。
student表有:学号,姓名,班级,专业等字段。
kecheng表中有:班级,课程名,学分,学期等字段。
score中有学号,班级,课程名,成绩,学期等字段。(有一个设为索引的自增字段
’编号‘)
由于每位学生有几十门成绩,一个班有几十位同学,所以要添加新科目成绩时要在score表中添加几十条记录(与学生人数相同),并且还要把学号,班级字段值(都来自student),以及课程名、学期(这两个字段来自kecheng)的值送到添加的每条记录的相应字段。
然后用selct 语句把score.学号,student.姓名,score.成绩显示在一个dbgrid控件中。
现在的问题是:dbgrid可以显示这些字段值,但是我往grid输入成绩时就出现以下的错误信息:“无法刷新或更新的键列值”请大侠指点;
另外,还有下列代码有何问题?
with adoquery1 do
begin
close;
sql.clear;
add('select a.xuehao,b.xingming,a.cj from student a inner join score b on a.xuehao=b.xuehao where xingbie=combobox1.text');
exesql;
end;老是提示where部分有问题
with adoquery1 do
begin
close;
sql.clear;
add('select a.xuehao,b.xingming,a.cj from student a inner join score b on a.xuehao=b.xuehao where xingbie=+'quotedstr(combobox1.text));
exesql;
end;
//注意,你的combobox1.text是一个字符串型变量(属性),而不是一个字符串,像你的用法是错误的.
with ADOQuery1 do
begin
Close;
SQL.clear;
Add('select a.xuehao,b.xingming,a.cj from student a inner join score b on
a.xuehao=b.xuehao where xingbie=:aa');
Parameters.ParamByName('aa').value:=quotedstr(combobox1.text);//
Open;
end;
在联合查询中怎么定义主表,ado2.6在那里找。
做,但是因为adoquery中是多表查询(学生表student是一方,成绩表score是多方)。adopuery 中有三个字段xuehao(student)、xingming(studeng)和cj(score)。要录入成绩,必须对cj字段输入数据或修改。但是程序报错:“无法刷新或更新的键列值”
奇怪的是,我对xuehao、xingming字段修改时无错误。
缓存更新的一些设置如下:
adoquery1。locktype:=sstatic;
adoquery1。cursor:=ltoptionbatch;(这一行没有回忆清楚)
保存时用:
adoquery1。updatebatch(arall);
用的数据库是access
我想了一个月,没有解决。sos!
sos!