1 请问下面的话是什么意思,可能是那里出了问题,请指教!
  Project Project1.exe raised exception class EDBEEngine Error With Message 'Invalid use of KeyWord ,Token:姓名=‘张学有‘
Line Number:1'process stopped Use Step or run to continue我做的数据库以姓名为主键,以上情况是我在作了一个查询按钮后发生的情况
2  代码如下:procedure TJYQuery.FormCreate(Sender:TObject);begin
  with   XTQuery do
  begin
  close;
  sql.clear;
  sql.ADD('select 姓名,部别,文化程度,毕业院校 from xt');
  open;
 end;
   s:='select 姓名,部别,文化程度,毕业院校 from xt';
   activecontrol:=Name;
    end;
procedure TJYQuery.Button2Click(Sender: TObject);
begin
   s:='select 姓名,部别,文化程度,毕业院校,from xt';   if Name.text<>''then
   begin   s:=s+'where 姓名='''+Name.Text+'''';
   end;
   with XTQuery do
   begin
     close;
     sql.Clear;
     sql.Add(s);
     try
       open;
     except
       execsql;//请问这个是什么意思
   end;
   end;end;
procedure TJYQuery.Button3Click(Sender: TObject);
begin
XGForm:=TXGForm.Create(self);
XGForm.ShowModal;end;end.

解决方案 »

  1.   

    execsql 是执行sql语句,但如果无数据源,好像不会出错,而open会出错
    数据库没做过,记得好像是这样,有不对的,高手更正
      

  2.   

    select 用open
    insert, delete, update 用execsql改成:
    s:='select 姓名,部别,文化程度,毕业院校 from xt';
    if Name.text<>''then
    begin
      s := s+Format(' where 姓名=%s', [Name.Text]); 
    end;
    试试.
      

  3.   

    呵呵。
    open 是针对有数据返回的查询比如select
    execsql 是针对没有数据返回的比如:delete ,insert,update.
      

  4.   

    s:=s+'where 姓名='''+Name.Text+'''';----->
     s:=s+' where 姓名='''+Name.Text+'''';//////在WHERE前加一个空格
      

  5.   

    同意errorkiss() ,你该在SQL Explorer中试试sql语句,没问题后再在代码中写。