我有一个学生信息表,里面有一个字段是学生的导师编号。这个导师编号是来源于教师表的教师编号。我想在修改学生的信息的时候在修改导师的时候可以在下来框里选老师的名字而不是选老师的编号,因为只看编号的话很难知道是哪个老师的啦。而我又不想修改学生表里的字段,就是想在表中存的是教师编号,但是让选的人是选的教师名字。
但是我写了下面一个程序段,运行到showmessage的时候是可以显示TID的值的,但是运行到下面的UPDATE语句的时候说参数TID没有默认值。我该怎么办哦?随便在begin后面给TID赋个初值也不行。procedure modify;
var
TID:string;
begin
//教师名字与教师编号的转换
with DataModule3.ADOQuery1 do
begin
active:=false;
SQL.clear;
sql.add('SELECT TeacherID FROM teacher WHERE TeacherName='''+form5.ComboBox1.Text+'''');
open;
TID:=fieldbyname('TeacherID').AsString;
showmessage(TID);
end; with DataModule3.ADOQuery1 do
begin
close;
SQL.Clear;
sql.Add('UPDATE StudInfo set StudentName='+''''+form5.Edit2.Text+''''+',Sex='+''''+form5.ComboBox4.Text+''''+',EnterDate='+
''''+form5.Edit3.Text+''''+',TeacherID=TID'+',PlaceofBirth='+''''+form5.Edit4.Text+''''+',BornDate='+''''+form5.Edit5.Text+'''');
Execsql;
Active := False;
showmessage('修改学生信息成功') ;
end;end;
但是我写了下面一个程序段,运行到showmessage的时候是可以显示TID的值的,但是运行到下面的UPDATE语句的时候说参数TID没有默认值。我该怎么办哦?随便在begin后面给TID赋个初值也不行。procedure modify;
var
TID:string;
begin
//教师名字与教师编号的转换
with DataModule3.ADOQuery1 do
begin
active:=false;
SQL.clear;
sql.add('SELECT TeacherID FROM teacher WHERE TeacherName='''+form5.ComboBox1.Text+'''');
open;
TID:=fieldbyname('TeacherID').AsString;
showmessage(TID);
end; with DataModule3.ADOQuery1 do
begin
close;
SQL.Clear;
sql.Add('UPDATE StudInfo set StudentName='+''''+form5.Edit2.Text+''''+',Sex='+''''+form5.ComboBox4.Text+''''+',EnterDate='+
''''+form5.Edit3.Text+''''+',TeacherID=TID'+',PlaceofBirth='+''''+form5.Edit4.Text+''''+',BornDate='+''''+form5.Edit5.Text+'''');
Execsql;
Active := False;
showmessage('修改学生信息成功') ;
end;end;
',TeacherID=TID'
改成 ',TeacherIdD=' + TID
',TeacherID=TID'
改成 ',TeacherID=' + TID