delphi SQL.Add()语句中,说And语法附近有错误。我找不到。

[复制链接]
查看11 | 回复2 | 2010-12-19 15:33:47 | 显示全部楼层 |阅读模式
i是登录信息中储存的登录的学号sno信息的一个变量,之前已经定义了。没有错误。错误就在SQL语句中。有四个表,分别用sno,tno,cno三个字段将四张表联系起来。具体语句在下面。说and附近有语法错误。
with ADOQuery1 do

begin

Close;

SQL.Clear;

SQL.Add('select * from student,grade where student.sno=grade.sno');

SQL.Add('tname as 教师,grade as 分数');

SQL.Add('from course,teacher,grade,student');

SQL.Add('course.cno=grade.cno and teacher.tno=grade.tno and student.sno=grade.sno');

SQL.Add('and student.sno='''+i+'''');

Open;

end;
还是不对啊。 之前的语句复制错了。我写的应该是下面的语句。还是那个问题。
with ADOQuery1 do

begin

Close;

SQL.Clear;

SQL.Add('select student.sno as 学号,course.cno as 课程号,cname as 课程,score as 学分,');

SQL.Add('tname as 教师,grade as 分数');

SQL.Add('from course,teacher,grade,student');

SQL.Add('course.cno=grade.cno and teacher.tno=grade.tno and student.sno=grade.sno');

SQL.Add('and student.sno='''+i+'''');

Open;

end;

回复

使用道具 举报

千问 | 2010-12-19 15:33:47 | 显示全部楼层
SQL.Add个语句之间没有分割,sql语句会出错误,每行以空格开头就可以了。你还是没加空格,还少了where,另外 i 如果不是string类型,需要转成string。如inttostr().with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select student.sno as 学号,course.cno as 课程号,cname as 课程,score as 学分,');
SQL.Add(' tname as 教师,grade as 分数');
SQL.Add(' from course,teacher,gr
回复

使用道具 举报

千问 | 2010-12-19 15:33:47 | 显示全部楼层
你的i定义是什么类型的?如果不是string 的话是不能用 SQL.Add('and student.sno='''+i+'''');建议这样修改: with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from student,gr
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行