Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Ejecución Procedimiento Almacenado dbexpress (https://www.clubdelphi.com/foros/showthread.php?t=73237)

nejamube 10-04-2011 00:39:51

Ejecución Procedimiento Almacenado dbexpress
 
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).


:confused:

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.:(

nejamube 10-04-2011 02:13:29

Solucionado
 
Cita:

Empezado por nejamube (Mensaje 396450)
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).


:confused:

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. :)


La franja horaria es GMT +2. Ahora son las 12:47:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi