delphi大作业,设备管理系统被其中一个东西难住了这个是一个aodquery控件里的sql语句
select *
from employee emp left outer join depart dept
  on (emp.dept_no=dept.dept_no)
where emp.dept_no = :deptno
   or 1=:isAllDept
然后我要实现删除它生成的表中的游标所在的记录。。
直接用delete会报错,
然后想用另外一个adoquery来单独对employee表进行删除操作,可是它提示
我的代码如下
procedure TfrmEmpManager.BitBtn3Click(Sender: TObject);
begin
  //添加控件和代码,完成删除功能,如果该员工有采购、报废、借用国设备,
  //则提示不允许删除
  if self.qryEmployee.IsEmpty then begin
    showmessage('无员工可删');
    exit;
  end;
  if messagebox(handle,
                pchar('确定删除'+
                self.qryEmployee.fieldByName('emp_name').asstring+'吗?'),
                '确认',mb_okcancel)<>idok then exit;
  self.ADOQuery1.Close;
  self.ADOQuery1.Parameters.ParamByName('emp_no').Value :=
  self.qryEmployee.fieldbyname('EMP_NO').AsString;
  self.ADOQuery1.Open;
  if self.ADOQuery1.RecordCount <> 0 then
  begin
    showmessage('该员工有借用设备,不允许删除');
    exit;
  end;
  self.ADOQueryDelete.Close;
  self.ADOQueryDelete.Parameters.ParamByName('DelEmpNo').Value:=
  self.qryEmployee.FieldByName('EMP_NO').AsString;
  self.qryEmployee.Close;
  self.ADOQueryDelete.Open;
  self.ADOQueryDelete.Close;
  self.qryEmployee.Open;
end;

解决方案 »

  1.   

    没看到你的代码中有删除的语句呀  ADOQueryDelete.Close;
      ADOQueryDelete.sql.text := 'delete from employee where emp_no=:emp_no';
    ADOQueryDelete.Parameters.ParamByName('emp_no').Value:=选中的值
      ADOQueryDelete.execsql;
    然后查询的query刷新OPEN是打开,execsql执行无返回值的操作
      

  2.   

    额,忘了吧 另外一个sql加上了,就是那个adoqueryDelete中的sql:
    delete from Employee where EMP_NO =:DelEmpNo
      

  3.   

    成功了。。我把open改成execsql就行...