Diferencia entre revisiones de «TTfvsCatalogoRefrescarForm»

De Pragma Wiki
Ir a la navegación Ir a la búsqueda
(Página creada con «=Descripción= El objeto '''TTfvsCatalogoRefrescarForm''' (Refrescar el catálogo) aplica las transacciones pendientes de: *Log de desarrollo (prxdevlog) es la cabecera de cada transacción. *Log de desarrollo, detalle (prxdevlogD) guarda el detalle de cada transacción. A la base de datos. =Identidad= Category:MANUAL/PROGRAMADOR Category:OBJETOS/REFRESCO *Ancestro: TfvsForm *Carpeta: C:\D…»)
 
Sin resumen de edición
 
Línea 1: Línea 1:
=Descripción=
=Descripción=
El objeto '''TTfvsCatalogoRefrescarForm''' (Refrescar el catálogo) aplica las transacciones pendientes de:
El objeto '''TTfvsCatalogoRefrescarForm''' (Refrescar el catálogo) aplica, a la base de datos, las transacciones pendientes de:
*[[DEV REGISTRO|Log de desarrollo (prxdevlog)]] es la cabecera de cada transacción.
*[[DEV REGISTRO|Log de desarrollo (prxdevlog)]] es la cabecera de cada transacción.
*[[DEV REGISTRO/DETALLE|Log de desarrollo, detalle (prxdevlogD)]] guarda el detalle de cada transacción.
*[[DEV REGISTRO/DETALLE|Log de desarrollo, detalle (prxdevlogD)]] guarda el detalle de cada transacción.


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


=[[QUEESESTO/IDENTIDAD|Identidad]]=
=[[QUEESESTO/IDENTIDAD|Identidad]]=
Línea 100: Línea 100:
===property    RefreshScripts: TfvsClassScripts read FRefreshScripts write FRefreshScripts===
===property    RefreshScripts: TfvsClassScripts read FRefreshScripts write FRefreshScripts===
Refresca los objetos de tipo [[:Category:DEV SCRIPTS|Scripts]].
Refresca los objetos de tipo [[:Category:DEV SCRIPTS|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:
<pre>
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
</pre>
Recorre esa lista y según el tipo de objeto a refrescar para cada transacción llama a algo así:
<pre>
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
</pre>
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:
<pre>
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
</pre>
=Uso=
Este form es llamado desde [[TTfvsCatalogoImportarForm]].Button_APLICARClick.

Revisión actual - 17:27 29 may 2025

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.