delphi 应该怎样判断调用的存储过程是否成功呢---------例如--------
procedure TfrmUpEmp.BitBtn1Click(Sender: TObject);
var
  clientid_s : string;
  oldempid_s : string;
  newempid_s : string;
begin
  if clientname.Text = '' then
  begin
    MessageDlg('请选择客户!',mtwarning,[mbok],0);
    clientname.SetFocus;
    Exit;
  end;
  if oldempname.Text = '' then
  begin
    MessageDlg('请选择老业务员!',mtwarning,[mbok],0);
    oldempname.SetFocus;
    Exit;
  end;
  if newempname.Text = '' then
  begin
    MessageDlg('请选择新业务员!',mtwarning,[mbok],0);
    newempname.SetFocus;
    Exit;
  end;
  try
    clientid_s := Trim(clientid.Text);
    oldempid_s := Trim(oldempid.Text);
    newempid_s := Trim(newempid.Text);    adoUpemp.Close;
    adoUpemp.SQL.Clear;
    adoUpemp.SQL.Text :='Exec sub_UpEmp '''+clientid_s+''','''+oldempid_s+''','''+newempid_s+''' ';
    adoUpemp.Open;
-------(过程执行完成之后   是否成功  我想在这显示个提示框《‘你修改成功’或者‘你修改失败’》)----------
  except
  end;
  //close;
end;

解决方案 »

  1.   

    可以说没有错误就是执行成功了;
    至少所执行的SQL语句没有语法错误,但结果是不是预期的,就不清楚了
    可以用try except end
      

  2.   

    你的代码 adoUpemp.Open; 已经包含在 try...except...end里面了,
    如果执行失败,就会执行 except里面的代码,成功,则不会进入except内;在except和end之间加个 showmessage('执行失败!');  这样执行没成功就会弹出提示!!
    try
      ......
      ......
      adoUpemp.SQL.Text :='Exec sub_UpEmp '''+clientid_s+''','''+oldempid_s+''','''+newempid_s+''' ';
      adoUpemp.Open;  showmessage('执行成功!'); 
     
    except
      showmessage('执行失败!');  
    end;
      

  3.   

    用try……except……end 和   存储过程   并用    ;
    当执行多条语句时,要么执行成功提交所有修改的数据,如果有失败,则将修改的数据,回滚到原状态;procedure TForm1.Button1Click(Sender: TObject);
    begin
      try    ADOQuery1.Connection := ADOConnection1;    //用存储过程来控制所有数据的提交,要么全部数据提交成功,要么数据回滚到原状态
        if not ADOConnection1.InTransaction then
          ADOConnection1.BeginTrans;    //执行第一条语句
        ADOQuery1.SQL.Text := '...sql1....';
        ADOQuery1.Open;    //执行第二条语句
        ADOQuery1.SQL.Text := '...sql2....';
        ADOQuery1.Open;    //用存储过程提交数据
        if ADOConnection1.InTransaction then
          ADOConnection1.CommitTrans;    showmessage('成功');
      except    on E: Exception do
        begin
          if ADOConnection1.InTransaction then
            ADOConnection1.RollbackTrans;
          showmessage('失败');
        end;  end;end;
      

  4.   

    刚刚的回复怎么没了,procedure TForm1.Button1Click(Sender: TObject);
    begin
      try    ADOQuery1.Connection := ADOConnection1;    //用存储过程来控制所有数据的提交,要么全部数据提交成功,要么数据回滚到原状态
        if not ADOConnection1.InTransaction then
          ADOConnection1.BeginTrans;    //执行第一条语句
        ADOQuery1.SQL.Text := '...sql1....';
        ADOQuery1.Open;    //执行第二条语句
        ADOQuery1.SQL.Text := '...sql2....';
        ADOQuery1.Open;    //用存储过程提交数据
        if ADOConnection1.InTransaction then
          ADOConnection1.CommitTrans;    showmessage('成功');
      except    on E: Exception do
        begin
          if ADOConnection1.InTransaction then
            ADOConnection1.RollbackTrans;
          showmessage('失败');
        end;  end;end;