TTfvsCatalogoRefrescarForm

De Pragma Wiki
Revisión del 17:27 29 may 2025 de Luciano Carou (discusión | contribs.)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Descripción

El objeto TTfvsCatalogoRefrescarForm (Refrescar el catálogo) aplica, a la base de datos, las transacciones pendientes de:

Este form necesita una revisión completa ya que usa rutinas muy viejas y algunas ya no tienen sentido.

Identidad

  • Ancestro: TfvsForm
  • Carpeta: C:\DevelopPrx\explorer
  • Archivo: fvsCatalogoRefrescarForm.pas

Declaración

type
  TTfvsCatalogoRefrescarForm = class(TTfvsForm)
    Panel1: TPanel;
    Panel2: TPanel;
    fvsDBGrid1: TfvsDBGrid;
    ButtonCANCELAR: TButton;
    Timer1: TTimer;
    procedure FormShow(Sender: TObject); //override;
    procedure FormClose(Sender: TObject; var Action: TCloseAction); //override;
    procedure Timer1Timer(Sender: TObject);
    procedure RefrescarEstructuraClick(Sender: TObject);
    procedure ButtonCANCELARClick(Sender: TObject);
  private
    FRefreshClases: TfvsClassClases;
    FRefreshConsultas: TfvsClassConsultas;
    FRefreshEnumeraciones: TfvsClassEnumeraciones;
    FRefreshFrames: TfvsClassFrames;
    FRefreshFunciones: TfvsClassFunciones;
    FRefreshProcedimientos: TfvsClassProcedimientos;
    FRefreshVistas: TfvsClassVistas;
    FRefreshTriggers: TfvsClassTriggers;
    FRefreshIndexes: TfvsClassIndexes;
    FRefreshScripts: TfvsClassScripts;

    FRefresh_pVISTA_implemented: TpVISTA_implemented;

    FCancelarFlag: Boolean;
    FImportandoCatalogo: Boolean;

    FAUX_Flag: Boolean;
    FFIELDS_Flag: Boolean;
  protected
    procedure   RefrescarRuntimeClick(Sender: TObject);

    property    RefreshClases: TfvsClassClases read FRefreshClases write FRefreshClases;
    property    RefreshConsultas: TfvsClassConsultas read FRefreshConsultas write FRefreshConsultas;
    property    RefreshEnumeraciones: TfvsClassEnumeraciones read FRefreshEnumeraciones write FRefreshEnumeraciones;
    property    RefreshFrames: TfvsClassFrames read FRefreshFrames write FRefreshFrames;
    property    RefreshFunciones: TfvsClassFunciones read FRefreshFunciones write FRefreshFunciones;
    property    RefreshProcedimientos: TfvsClassProcedimientos read FRefreshProcedimientos write FRefreshProcedimientos;
    property    RefreshVistas: TfvsClassVistas read FRefreshVistas write FRefreshVistas;
    property    RefreshTriggers: TfvsClassTriggers read FRefreshTriggers write FRefreshTriggers;
    property    RefreshIndexes: TfvsClassIndexes read FRefreshIndexes write FRefreshIndexes;
    property    RefreshScripts: TfvsClassScripts read FRefreshScripts write FRefreshScripts;

    property    Refresh_pVISTA_implemented: TpVISTA_implemented read FRefresh_pVISTA_implemented write FRefresh_pVISTA_implemented;

    property    CancelarFlag: Boolean read FCancelarFlag write FCancelarFlag;

    property    AUX_Flag: Boolean read FAUX_Flag write FAUX_Flag;
    property    FIELDS_Flag: Boolean read FFIELDS_Flag write FFIELDS_Flag;
  public
    property    ImportandoCatalogo: Boolean read FImportandoCatalogo write FImportandoCatalogo;
  end;

property RefreshClases: TfvsClassClases read FRefreshClases write FRefreshClases

Refresca los objetos de tipo Clases.

property RefreshConsultas: TfvsClassConsultas read FRefreshConsultas write FRefreshConsultas

Refresca los objetos de tipo Consultas.

property RefreshEnumeraciones: TfvsClassEnumeraciones read FRefreshEnumeraciones write FRefeshEnumeraciones

Refresca los objetos de tipo Enumeraciones.

property RefreshFrames: TfvsClassFrames read FRefreshFrames write FRefreshFrames

Refresca los objetos de tipo Frames.

property RefreshFunciones: TfvsClassFunciones read FRefreshFunciones write FRefreshFunciones

Refresca los objetos de tipo Funciones.

property RefreshProcedimientos: TfvsClassProcedimientos read FRefreshProcedimientos write FRefreshProcedimientos

Refresca los objetos de tipo Procedimientos.

property RefreshVistas: TfvsClassVistas read FRefreshVistas write FRefreshVistas

Refresca los objetos de tipo Vistas.

property RefreshTriggers: TfvsClassTriggers read FRefreshTriggers write FRefreshTriggers

Refresca los objetos de tipo Clases, triggers (prxtriggers).

property RefreshIndexes: TfvsClassIndexes read FRefreshIndexes write FRefreshIndexes

Refresca los objetos de tipo Clases, índices adicionales (prxclases_indice).

property RefreshScripts: TfvsClassScripts read FRefreshScripts write FRefreshScripts

Refresca los objetos de tipo Scripts.

property Refresh_pVISTA_implemented: TpVISTA_implemented read FRefresh_pVISTA_implemented write FRefresh_pVISTA_implemented

No debería estar en este form (ni en ninguna otra parte).

Implementación

procedure RefrescarEstructuraClick(Sender: TObject)

Usa un SQL como el de abajo para traer una lista de transacciones de catálogo pendientes de aplicar:

SELECT
prxdevlog.Identificador
, prxdevlog.Catalogo
, prxdevlog.Tipo
, prxdevlog.Codigo
, prxdevlog.Subcodigo
, prxdevlog.Operacion
FROM prxdevlog, prxdevlog_clases WHERE
prxdevlog_clases.clase = prxdevlog.Tipo
AND NOT EXISTS (SELECT * FROM prxdevlogops WHERE prxdevlogops.Identificador = prxdevlog.Identificador)
ORDER BY prxdevlog.Identificador

Recorre esa lista y según el tipo de objeto a refrescar para cada transacción llama a algo así:

if AnsiCompareText(vTipo, 'prxclases') = 0 then
   begin
   if Assigned(RefreshClases) = False then
      RefreshClases := TfvsClassClases.Create(Self);

   if ImportandoCatalogo = True then
      vOk := RefreshClases.devlog_AplicarComandos(vIdentificador, vCatalogo, vOperacion, True, False);

   if vOk then
      vOk := RefreshClases.devlog_RefrescarEstructuras(vIdentificador, vCatalogo, vTipo, vCodigo, vSubcodigo, vOperacion);

   if vOk then
      FIELDS_Flag := True;

   Inc(vCount);
   end

Si el tipo es prxclases va a usar el objeto TfvsClassClases.

Llama a su función devlog_AplicarComandos(vIdentificador, vCatalogo, vOperacion, True, False) usando como argumentos los valores del SQL de transacciones pendientes.

Finalmente llama a su función devlog_RefrescarEstructuras(vIdentificador, vCatalogo, vTipo, vCodigo, vSubcodigo, vOperacion) para ver si hay que refrescar algo más luego de haber grabado la transacción. El caso típico sería el de recrear la estructura de una tabla una vez que, en el paso anterior, le hemos agregado un campo.

procedure RefrescarRuntimeClick(Sender: TObject)

Finalmente, esta función hace un refresco de algunas tablas que la aplicación usa en runtime, aplica el siguiente SQL:

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'prxcamposJER_TBL' DROP TABLE prxcamposJER_TBL
SELECT * INTO prxcamposJER_TBL FROM prxcamposJER_VISTA
GRANT SELECT, INSERT, UPDATE, DELETE ON prxcamposJER_TBL TO public
GO
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'prxSchemaFK_TBL' DROP TABLE prxSchemaFK_TBL
SELECT * INTO prxSchemaFK_TBL FROM prxSchemaFK
GRANT SELECT, INSERT, UPDATE, DELETE ON prxSchemaFK_TBL TO public
GO

Uso

Este form es llamado desde TTfvsCatalogoImportarForm.Button_APLICARClick.