Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   como acceso a los datos que devuelve un procedimiento almacenado? (https://www.clubdelphi.com/foros/showthread.php?t=70539)

r1d2m3 26-10-2010 21:01:33

como acceso a los datos que devuelve un procedimiento almacenado?
 
Hola a todos, estoy creando unos procedimientos almacenados en MySQL para que luego sean consumidos desde una aplicación en delphi, el mi código estoy usando el componente TADOCommand para ejecutar el sp, hasta aquí todo bien, peeero, siempre hay un pero, ¿como hago para devolver el contenido del sp en un componete TADOQuery?, ¿existe la forma de llenar un TADOQuery con un sp?.

Les pego un pequeño código de ejemplo de lo que intento hacer:

Código Delphi [-]

  function SPListMovimCarpe(varConexBD:TADOConnection; varIdCarpe:Integer) : TADOQuery;
  var
    consu:TADOQuery;
    sproc:TADOCommand;
  begin
    consu:=TADOQuery.Create(nil);

    sproc:=TADOCommand.Create(nil);
    with sproc do
    begin
      CommandType := cmdStoredProc;
      Connection := varConexBD;
      CommandText := 'sproc_listMovCarpe';
      Parameters.Refresh;
      Parameters.ParamByName('@idCarpe').Value:=varIdCarpe;
      Execute;
      //aquí es donde tengo el problema, ¿como devuelvo el contenido del sp?.
      //Execute me devuelve un tipo ADOInt._Recordset y no se como manejarlo
      //para que lo devuelva como un TADQuery.
    end;
  end;

Saludos y quedo a la espera de alguna ayuda al respecto.

Al González 26-10-2010 21:49:01

Hola.

Nunca hice eso con ADO, pero leyendo la ayuda de Delphi respecto al método TADOCommand.Execute, creo que tendrías que cambiar una de las sentencias:

Código Delphi [-]
  consu.Recordset := Execute;

Cita:

When a command is executed that creates a recordset, Execute returns the recordset and it must be accessed through an ADO dataset component. To do this, assign the return value of Execute directly to the recordset property of an ADO data set component. For example:

ADODataSet1.Recordset := ADOCommand1.Execute;
No olvides destruir los objetos TADOCommand y TADOQuery cuando ya no los necesites.

Saludos.

Al González. :)


La franja horaria es GMT +2. Ahora son las 15:17:26.

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