Ver Mensaje Individual
  #1  
Antiguo 09-02-2007
Tauro78 Tauro78 is offline
Miembro
 
Registrado: sep 2006
Posts: 88
Reputación: 18
Tauro78 Va por buen camino
Error: Transaction is active

hola estoy usando D7, FB2, MDO; el problema es que cuando lo doy click en Aceptar me sale el error del titulo. No sé si estoy usando mal el componente
de transaccion o que puede ser?
MDOTCategoriaAlta es el componente de transaccion y lo tengo ligado a
MDOSPExistCatDesc y a MDOSPCategoriaAlta, estos son procedimientos almacenados, en el primero verifico si existe la categoria y en el segundo realizo el alta de los datos.
No se si debo tener desactivado el componente de transaccion al inicio y activarlo cuando lo uso y desactivarlo cuando termina de usarlo.
La idea es tratar de controlar más las cosas, si no pongo dmTablas.MDOTCategoriaAlta.StartTransaction; ni dmTablas.MDOTCategoriaAlta.Commit; no me da error pero no se si eso es
mejor. Gracias.


Código Delphi [-]
procedure TfrmCategoriasAltas.BitBtn1Click(Sender: TObject);
begin
if (Edit1.Text = '') then
  begin
    MessageDlg('Se deben completar todos los campos.', MtInformation, [MbOK], 0);
    Exit;
  end
    else
      begin
        dmTablas.MDOSPExistCatDesc.Close;
        dmTablas.MDOTCategoriaAlta.StartTransaction;
        dmTablas.MDOSPExistCatDesc.ParamByName('SP_DESCRIPCION').AsString := Edit1.Text;
        dmTablas.MDOSPExistCatDesc.Prepare;
        dmTablas.MDOSPExistCatDesc.ExecProc;
        dmTablas.MDOTCategoriaAlta.Commit;
        if (not dmTablas.MDOSPExistCatDesc.ParamByName('descripcion').IsNull) then
          begin
            MessageDlg('Ya existe una categoría con esta descripción.', MtInformation, [MbOK], 0);
            Exit;
          end
            else
              begin
                try
                  dmTablas.MDOTCategoriaAlta.StartTransaction;
                  dmTablas.MDOSPCategoriaAlta.ParamByName('SP_DESCRIPCION').AsString := UpperCase(Edit1.Text);
                  dmTablas.MDOSPCategoriaAlta.Prepare;
                  dmTablas.MDOSPCategoriaAlta.ExecProc;
                  dmTablas.MDOTCategoriaAlta.Commit;
                finally
                  dmTablas.MDOSPCategoriaAlta.UnPrepare;
                  dmTablas.MDOSPCategoriaAlta.Close;
                  Edit1.Text := '';
                end;
              end;
      end;
end;

Última edición por Tauro78 fecha: 09-02-2007 a las 03:47:48.
Responder Con Cita