我的sql语句为
update employee
set employee_state='t'
where employee_id='G057'
我现在要在程序窗口中放一个edit1,上面输入G057.再按执行按钮。可放到程序中这个语句如何写呢?
我这样写的。为什么不行呢?
var 
  aa:string;
with adoq_employee do
begin
  close;
  sql.clear;
  sql.add(update employee set employee_state='t' where employee_id=:aa);
  adoq_employee.parameters.parambyname('aa').values:=edit1.text;
  execsql;
end;
又或者
with adoq_employee do
begin
  close
  sql.clear;
  sql.text:='update employee set employee_state='+'t'+'where employee_id='+#39+trim(edit1.text)+#39
  execsql;
end;这两种方法应该都可以。请帮我检查一下哪里有错。或给出其它提示。谢谢!

解决方案 »

  1.   

    出什么错?
    try:
    var 
      aa:string;
    with adoq_employee do
    begin
      close;
      sql.clear;
      sql.add('update employee set employee_state=''t'' where employee_id=:aa');
      adoq_employee.parameters.parambyname('aa').values:=edit1.text;
      execsql;
    end;
      

  2.   

    你用showmessage(Sqltxt)看一下,或许好点
      

  3.   

    sql.add('update employee set employee_state=''t'' where employee_id=:aa');
    你的回答是以上的。
    我那个employee_state是员工的状态,如果是字符t 则表示在职。如果是f则表示离职。你的"t"是单引号还是双引号。我用了单引号。结果它没改到。因为我现在有个员工工号为G057的状态是employee_state是f.执行了你的语句后没改变。请继续支持!
      

  4.   

    我的意思是员工状态(employee_state)是f的就在离职表中。是t的就在在职表中。我现在要把工号为G057的员工从离职表中恢复到在职表中去。
      

  5.   

    with adoq_employee do//第一步.將員工狀態改為在職,即employee_state=t.可是以下語句改不到.為什么?
      begin
        close;
        sql.Clear;
        sql.Add('update employee set employee_state=''t'' where employee_id=:aa');
        //sql.Add('update employee set employee_state='+'t'+'where employee_id='+#39+trim(edit1.Text)+#39);
        execsql;
      end;
      with adoq_lz do//第二步.從離職表只將其刪除.這個ok!
      begin
        close;
        sql.clear;
        sql.Add('delete from lz where lz_id='+#39+trim(edit1.Text)+#39);
        //sql.add('delete from lz where lz_id='+#39+trim(edit1.Text)+#39);
        execsql;
      end;
      

  6.   

    试试:
    把where employee_id=:aa);
    改为:
    sql.add('update employee set employee_state=''t'' where employee_id='+''''+trim(edit1.text)+'''');
      

  7.   

    我试验过下面的程序可以达到你要求的效果,主要是你的Edit1.text 没有去掉空格啦,^_^^_^
    with adoq_Employee,SQL do
    begin
      close;
      Text := 'update employeetest set employee_state=:bb where employee_id=:aa';
      parameters.parambyname('aa').Value := Trim(edit1.text);
      parameters.parambyname('bb').value := 't';
      execsql;
    end;