Saludos.
Me ha servido de gran ayuda. He redondeado la idea y al final hice lo siguiente:
Primero, ya sea desde la opción del Menú Principal de la aplicación o su correspondiente BarButton:
Código Delphi
[-]procedure TfrmPrincipal.SubMenuSalvarBaseDeDatosClick(Sender: TObject);
begin
if (HostalWare.ExisteConexionConLaBD = True)
then
begin
SalvarBaseDeDatosHostalWare;
end
else
begin
MessageDlg('Se ha perdido la conexión con la base de datos.' + #13 + 'Inténtelo en otra ocasión', mtError, [mbOk], 0);
end;
end;
Segundo, el procedimiento de la Interfaz Principal invoca a la Clase Madre Controladora:
Código Delphi
[-]
procedure TfrmPrincipal.SalvarBaseDeDatosHostalWare;
begin
if (HostalWare.ExisteConexionConLaBD = True)
then
begin
if (SaveDialogHostalWare.Execute)
then
begin
HostalWare.SalvarBaseDeDatosHostalWare(SaveDialogHostalWare.FileName + '.HBK' );
end;
end
else
begin
MessageDlg('Se ha perdido la conexión con la base de datos.' + #13 + 'Inténtelo en otra ocasión', mtError, [mbOk], 0);
end;
end;
Luego, el procedimiento de la Clase Madre Controladora delega responsabilidades en la Clase Controladora correspondiente:
Código Delphi
[-]procedure TGestionCursistasHospedados.SalvarBaseDeDatosHostalWare(aCamino: String);
begin
ModuloControlDelSistema.SalvarBaseDeDatosHostalWare(aCamino);
end;
Y esta es la que trabaja directamente con el procedimiento almacenado de la base de datos:
Código Delphi
[-]procedure TModuloControlDelSistema.SalvarBaseDeDatosHostalWare(aCamino: String);
begin
DataModuleConexionGeneral.ADOConnectionGeneral.Connected:= True;
DataModuleControlDelSistema.spSalvarBaseDeDatosHostalWare.Active:= False;
DataModuleControlDelSistema.spSalvarBaseDeDatosHostalWare.Parameters.ParamByName('@vCamino').Value:= aCamino;
DataModuleControlDelSistema.spSalvarBaseDeDatosHostalWare.ExecProc;
end;
Y por último, el procedimiento almacenado ejecuta lo siguiente:
Código SQL
[-]CREATE PROCEDURE [dbo].[SalvarBaseDeDatosHostalWare]
@vCamino varchar(1000)
AS
BACKUP DATABASE GCHWare TO DISK = @vCamino;
GO
Muchas gracias por la ayuda recibida.
Saludos.
Reinier.