Ver Mensaje Individual
  #2  
Antiguo 10-04-2011
nejamube nejamube is offline
Miembro
 
Registrado: nov 2009
Ubicación: Buenos Aires
Posts: 65
Reputación: 15
nejamube Va por buen camino
Lightbulb Solucionado

Cita:
Empezado por nejamube Ver Mensaje
Hola.

Tengo un problema al ejecutar un procedimiento almacenado en Delphi 2010 con los drivers dbexpress.


El procedimiento funciona correctamente al ejecutarlo desde ibexpert, pero no se reflejan los cambios al hacerlo desde Delphi y si al hacerlo desde ibexpert. Supongo que hace falta hacer Commit, pero no sé cómo hacerlo para un procedimiento almacenado utilizando los drivers dbexpress.


Utilizo el componente TSQLStoredProc de la paleta de componentes en la pestaña dbexpress.

Esta es el código que tengo, así ejecuto otros procedimientos almacenados y funcionan correctamente, pero este no (otros procedimientos que uso son más simples).




Código Delphi [-] try with dmDatos.SQLStoredProcExistencia do begin Close; StoredProcName := 'TRASPASOINVENTARIO'; ParamByName('PRODUCTO').AsInteger := StrToInt(grdDatos.Cells[0, i]); ParamByName('ALMACENDESTINO').AsInteger := dmDatos.SQLStoredProcAlmacenD.ParamByName('clave').AsInteger; ParamByName('ALMACENORIGEN').AsInteger := dmDatos.SQLStoredProcAlmacenO.ParamByName('clave').AsInteger; ParamByName('SOLICITADO').AsFloat := StrToFloat (grdDatos.Cells[3, i]); Prepared := true; ExecProc; Open; end; except on E: Exception do ShowMessage(E.Message); end;


Muchas gracias por su ayuda.
No encontré otra forma de hacerlo, según lo que se el commit en dbexpress se hace así:

¿ Quizás sea un bug de dbexpress ?


Código Delphi [-] ExecProc;


Pero no funciono, asi que opte por hacerlo de esta manera:

Código Delphi [-]
          try
            Close;
            SQL.Clear;
            SQL.Add('select CLAVEORIGEN');
            SQL.Add('from traspasoinventario(');
            SQL.Add(Trim(dmDatos.SQLStoredProcAlmacenD.ParamByName('clave')
                  .AsString) + ',');
            SQL.Add(Trim(grdDatos.Cells[0, i]) + ',');
            SQL.Add(Trim(dmDatos.SQLStoredProcAlmacenO.ParamByName('clave')
                  .AsString) + ',');
            SQL.Add(Trim(grdDatos.Cells[3, i]) + ')');
            Open;
            Close;
          except
            on E: Exception do
              ShowMessage(E.Message);
          end;

Ojalá le sirva a alguien si tiene el mismo problema.
Responder Con Cita