Diferencia entre revisiones de «TprxADOClientDM»

De Pragma Wiki
Ir a la navegación Ir a la búsqueda
 
(No se muestran 4 ediciones intermedias del mismo usuario)
Línea 170: Línea 170:
=Implementación=
=Implementación=
===function xxInicializar: Boolean===
===function xxInicializar: Boolean===
Instancia el traductor [[TpLENGUAJE]].
*Instancia el traductor [[TpLENGUAJE]].
*Instancia los auxiliares.
 
===function prxTimeStampDB(aConDominio: Boolean): String===
Retorna un timestamp en formato AAAAMMDDHHMMSSMMM (del momento en que se solicita) donde:
*AAAA es el año.
*MM es el mes.
*DD es el día.
*HH es la hora.
*MM son los minutos.
*SS son los segundos.
*MMM son los milisegundos.
 
Usando una función de la base de datos llamada '''dbo.prxTIMESTAMP'''.
 
===function prxcmpCodigo: String===
Retorna un código de comprobante nuevo, el formato es ???AAAAMMDDHHMMSSMMM donde:
*??? constante.
*AAAA es el año.
*MM es el mes.
*DD es el día.
*HH es la hora.
*MM son los minutos.
*SS son los segundos.
*MMM son los milisegundos.
 
===procedure MostrarListaDeComandos(aList: TStringList)===
Muchas pantallas de la aplicación tienen una opción en el menú de opciones (botón amarillo) que permite ver los comandos SQL que generan el resultado visto en la pantalla, la opción de menú es:
[[Archivo:20250520 1556 VER COMANDOS SQL MENU.png|miniaturadeimagen|no|Ver comandos SQL en el menú.]]
 
Y la pantalla que muestra los comandos SQL es:
[[Archivo:20250520 1558 VER COMANDOS SQL.png|miniaturadeimagen|no|Ver comandos SQL.]]
 
Este procedimiento se ocupa de abrir la pantalla [[TTfvsShowOnMemoForm]] y mostrar los comandos informados en el argumento.
 
===procedure MostrarListaDeComandos(aList: TStrings)===
Casi idéntica a la anterior, pero cambia el tipo de variable del argumento.
 
===procedure MostrarListaDeComandos(aComando: String)===
Casi idéntica a las dos anteriores, pero el comando informado es un solo string.
 
===procedure AgregarRegistroLogin(aRelease: String)===
Cada vez que se loguea un usuario el sistema guarda esos datos en la tabla [[USUARIOS/LOGIN]], esta función es la que lo hace.
 
===procedure AgregarRegistroPantallas(aPantalla: String)===
Cada vez que un usuario abre una pantalla el sistema guarda esos datos en la tabla [[USUARIO_MENU_PREFS]], esta función es la que lo hace.
 
=Implementación, lista de imágenes=
Las siguientes funciones acceden a la funcionalidad de [[TfvsImageList]] y son totalmente redundantes y deberían ser reemplazadas por una llamada directa a la lista de imágenes.
 
=Implementación, control de llaves=
Estas funciones están asociadas al esquema de seguridad documentado en anexos del acuerdo.
 
===function llaves_validar_xtd: Boolean===
Valida que las fechas registradas en la llave sean válidas.
 
===function llaves_fecha_limite: String===
Retorna la fecha límite de las fechas cargadas en la llave.
 
===procedure check_valid_apprelease(a_apprelease: String; a_silent: Boolean)===
Si existe la llave '''control número release''' en [[APLICACION/PARAMETROS DETALLE]] valida el número de release de la aplicación, verifica si es mayor o igual al definido en _fva_release en cuyo caso validad correctamente, de lo contrario no valida correctamente, la aplicación tiene un release menor al admitido por la bd, si a_silent = True no muestra el mensaje de error.

Revisión actual - 21:11 20 may 2025

Introducción

El objeto TprxADOClientDM (Data module principal.) permite centralizar el uso de componentes no visuales. Típicamente contiene componentes de datos derivados de Datasets pero en realidad puede contener casi cualquier cosa. Su uso simplifica la estructura de la aplicación conteniendo funcionalidad usada continuamente.

Durante el diseño, el data module provee un contenedor visual al que podemos agregar componentes no visuales, definir sus propiedades y escribir eventos.

Deriva de TDataModule que es un componente nativo de Delphi.

Identidad

  • Ancestro: TDataModule
  • Carpeta: C:\DevelopPrx\library
  • Archivo: prxADODataModule.pas

Declaración

type
  TprxADOClientDM = class(TDataModule)
    ADOMainConnection: TprxADOConnection;
    Query: TprxADOQuery;
    prxQueryValidate1: TprxADOQuery;
    ADOStoredProc1: TADOStoredProc;
    xxprxADOQueryAUX: TprxADOQuery;

    procedure DataModuleCreate(Sender: TObject);
    procedure DataModuleDestroy(Sender: TObject);
  private
    FCatalogDetailList: TStringList;
    FScreenCursor: TCursor;
    FHourGlassCount: Integer;
    Ffvs: Boolean;

    Fexiste_prxusuarios_menus_favs: Boolean;

    FTraductor: TpLENGUAJE;

    FQuerySQL: TStringList;

    FClassShow: TfvsClassShow;

    FImagesXtd: TfvsImageList;

    Ffva_key_generator: Tfva_key_generator;

    Frelease_appname: String;
    Frelease_apprelease: String;
    Frelease_is_valid: Boolean;

    FpAUX_DM_unit: TpAUX_DM_unit;

    FpAUX_CLASE_ORIGEN_unit: TpAUX_CLASE_ORIGEN_unit;
    FpAUX_CLASE_POST_CONDICION_unit: TpAUX_CLASE_POST_CONDICION_unit;
    FpAUX_CLASE_POST_EVENTO_unit: TpAUX_CLASE_POST_EVENTO_unit;
    FpAUX_CLASE_OPCIONES_unit: TpAUX_CLASE_OPCIONES_unit;
    FpAUX_CLASE_SUBTOTAL_unit: TpAUX_CLASE_SUBTOTAL_unit;

    FpAUX_CAMPO_CONSTRAINT_unit: TpAUX_CAMPO_CONSTRAINT_unit;
    FpAUX_CAMPO_ASIGNACION_unit: TpAUX_CAMPO_ASIGNACION_unit;
    FpAUX_CAMPO_CONDICIONEDICION_unit: TpAUX_CAMPO_CONDICIONEDICION_unit;
    FpAUX_CAMPO_ONEVENT_unit: TpAUX_CAMPO_ONEVENT_unit;
    FpAUX_CAMPO_SELECT_F5_unit: TpAUX_CAMPO_SELECT_F5_unit;
    FpAUX_CAMPO_EVALUACIONS_unit: TpAUX_CAMPO_EVALUACIONS_unit;

    FpAUX_CLASE_SELECCION_CRITERIOS_unit: TpAUX_CLASE_SELECCION_CRITERIOS_unit;

    FpDEVLOG_unit: TpDEVLOG_unit;

    FpSCANDOCS_Exists: Boolean;
  protected
    property    ScreenCursor: TCursor read FScreenCursor write FScreenCursor;
    property    HourGlassCount: Integer read FHourGlassCount write FHourGlassCount;
    property    QuerySQL: TStringList read FQuerySQL write FQuerySQL;

    property    ImagesXtd: TfvsImageList read FImagesXtd write FImagesXtd;

    property    release_appname: String read Frelease_appname write Frelease_appname;
    property    release_is_valid: Boolean read Frelease_is_valid;
  public
    procedure   Loaded; override;

    function    xxInicializar: Boolean;

    function    prxTimeStampDB(aConDominio: Boolean): String;
    function    prxcmpCodigo: String;
    function    prxTimeStampDBLocal: String;

    procedure   MostrarListaDeComandos(aList: TStringList); overload;
    procedure   MostrarListaDeComandos(aList: TStrings); overload;
    procedure   MostrarListaDeComandos(aComando: String); overload;

    procedure   AgregarRegistroLogin(aRelease: String);
    procedure   AgregarRegistroPantallas(aPantalla: String);

    function    Images: TfvsImageList;
    function    ImagesInitialize: Integer;
    function    GetBitmapImage(aId: String; aBitmap: TBitmap): Integer;
    function    GetBitmapIndex(aImageName: String): Integer;
    function    GetBitmapName(aIndex: Integer): String;

    function    llaves_validar_xtd: Boolean;
    function    llaves_fecha_limite: String;

    procedure   check_valid_apprelease(a_apprelease: String; a_silent: Boolean);

    property    CatalogDetailList: TStringList read FCatalogDetailList write FCatalogDetailList;

    property    fvs: Boolean read Ffvs write Ffvs;
    property    existe_prxusuarios_menus_favs: Boolean read Fexiste_prxusuarios_menus_favs;

    property    fva_key_generator: Tfva_key_generator read Ffva_key_generator write Ffva_key_generator;
    property    Traductor: TpLENGUAJE read FTraductor write FTraductor;

    property    ClassShow: TfvsClassShow read FClassShow write FClassShow;

    property    release_apprelease: String read Frelease_apprelease;

    property    pAUX_DM_unit: TpAUX_DM_unit read FpAUX_DM_unit write FpAUX_DM_unit;

    property    pAUX_CLASE_ORIGEN_unit: TpAUX_CLASE_ORIGEN_unit read FpAUX_CLASE_ORIGEN_unit write FpAUX_CLASE_ORIGEN_unit;
    property    pAUX_CLASE_POST_CONDICION_unit: TpAUX_CLASE_POST_CONDICION_unit read FpAUX_CLASE_POST_CONDICION_unit write FpAUX_CLASE_POST_CONDICION_unit;
    property    pAUX_CLASE_POST_EVENTO_unit: TpAUX_CLASE_POST_EVENTO_unit read FpAUX_CLASE_POST_EVENTO_unit write FpAUX_CLASE_POST_EVENTO_unit;
    property    pAUX_CLASE_OPCIONES_unit: TpAUX_CLASE_OPCIONES_unit read FpAUX_CLASE_OPCIONES_unit write FpAUX_CLASE_OPCIONES_unit;
    property    pAUX_CLASE_SUBTOTAL_unit: TpAUX_CLASE_SUBTOTAL_unit read FpAUX_CLASE_SUBTOTAL_unit write FpAUX_CLASE_SUBTOTAL_unit;

    property    pAUX_CAMPO_CONSTRAINT_unit: TpAUX_CAMPO_CONSTRAINT_unit read FpAUX_CAMPO_CONSTRAINT_unit write FpAUX_CAMPO_CONSTRAINT_unit;
    property    pAUX_CAMPO_ASIGNACION_unit: TpAUX_CAMPO_ASIGNACION_unit read FpAUX_CAMPO_ASIGNACION_unit write FpAUX_CAMPO_ASIGNACION_unit;
    property    pAUX_CAMPO_CONDICIONEDICION_unit: TpAUX_CAMPO_CONDICIONEDICION_unit read FpAUX_CAMPO_CONDICIONEDICION_unit write FpAUX_CAMPO_CONDICIONEDICION_unit;
    property    pAUX_CAMPO_ONEVENT_unit: TpAUX_CAMPO_ONEVENT_unit read FpAUX_CAMPO_ONEVENT_unit write FpAUX_CAMPO_ONEVENT_unit;
    property    pAUX_CAMPO_SELECT_F5_unit: TpAUX_CAMPO_SELECT_F5_unit read FpAUX_CAMPO_SELECT_F5_unit write FpAUX_CAMPO_SELECT_F5_unit;
    property    pAUX_CAMPO_EVALUACIONS_unit: TpAUX_CAMPO_EVALUACIONS_unit read FpAUX_CAMPO_EVALUACIONS_unit write FpAUX_CAMPO_EVALUACIONS_unit;

    property    pAUX_CLASE_SELECCION_CRITERIOS_unit: TpAUX_CLASE_SELECCION_CRITERIOS_unit read FpAUX_CLASE_SELECCION_CRITERIOS_unit write FpAUX_CLASE_SELECCION_CRITERIOS_unit;

    property    pDEVLOG_unit: TpDEVLOG_unit read FpDEVLOG_unit write FpDEVLOG_unit;

    property    pSCANDOCS_Exists: Boolean read FpSCANDOCS_Exists;
  end;

FTraductor: TpLENGUAJE

Instancia el traductor de lenguajes.

FQuerySQL: TStringList

Lista de strings para armar sentencias SQL.

FClassShow: TfvsClassShow

Esta clase asiste para abrir pantallas.

FImagesXtd: TfvsImageList

Administra la lista de imágenes (existente en la carpeta C:\pragmaclient\prxImages, o prxImages en la carpeta donde están los ejecutables).

Ffva_key_generator: Tfva_key_generator

Instancia el generador de claves descripto en el anexo sobre medidas de seguridad del acuerdo.

Propiedades de auxiliares

Los auxiliares se crean en el DataModule para estar disponibles a toda la aplicación sin necesidad de instanciarlas cada vez, las propiedades son:

Implementación

function xxInicializar: Boolean

  • Instancia el traductor TpLENGUAJE.
  • Instancia los auxiliares.

function prxTimeStampDB(aConDominio: Boolean): String

Retorna un timestamp en formato AAAAMMDDHHMMSSMMM (del momento en que se solicita) donde:

  • AAAA es el año.
  • MM es el mes.
  • DD es el día.
  • HH es la hora.
  • MM son los minutos.
  • SS son los segundos.
  • MMM son los milisegundos.

Usando una función de la base de datos llamada dbo.prxTIMESTAMP.

function prxcmpCodigo: String

Retorna un código de comprobante nuevo, el formato es ???AAAAMMDDHHMMSSMMM donde:

  • ??? constante.
  • AAAA es el año.
  • MM es el mes.
  • DD es el día.
  • HH es la hora.
  • MM son los minutos.
  • SS son los segundos.
  • MMM son los milisegundos.

procedure MostrarListaDeComandos(aList: TStringList)

Muchas pantallas de la aplicación tienen una opción en el menú de opciones (botón amarillo) que permite ver los comandos SQL que generan el resultado visto en la pantalla, la opción de menú es:

Ver comandos SQL en el menú.

Y la pantalla que muestra los comandos SQL es:

Ver comandos SQL.

Este procedimiento se ocupa de abrir la pantalla TTfvsShowOnMemoForm y mostrar los comandos informados en el argumento.

procedure MostrarListaDeComandos(aList: TStrings)

Casi idéntica a la anterior, pero cambia el tipo de variable del argumento.

procedure MostrarListaDeComandos(aComando: String)

Casi idéntica a las dos anteriores, pero el comando informado es un solo string.

procedure AgregarRegistroLogin(aRelease: String)

Cada vez que se loguea un usuario el sistema guarda esos datos en la tabla USUARIOS/LOGIN, esta función es la que lo hace.

procedure AgregarRegistroPantallas(aPantalla: String)

Cada vez que un usuario abre una pantalla el sistema guarda esos datos en la tabla USUARIO_MENU_PREFS, esta función es la que lo hace.

Implementación, lista de imágenes

Las siguientes funciones acceden a la funcionalidad de TfvsImageList y son totalmente redundantes y deberían ser reemplazadas por una llamada directa a la lista de imágenes.

Implementación, control de llaves

Estas funciones están asociadas al esquema de seguridad documentado en anexos del acuerdo.

function llaves_validar_xtd: Boolean

Valida que las fechas registradas en la llave sean válidas.

function llaves_fecha_limite: String

Retorna la fecha límite de las fechas cargadas en la llave.

procedure check_valid_apprelease(a_apprelease: String; a_silent: Boolean)

Si existe la llave control número release en APLICACION/PARAMETROS DETALLE valida el número de release de la aplicación, verifica si es mayor o igual al definido en _fva_release en cuyo caso validad correctamente, de lo contrario no valida correctamente, la aplicación tiene un release menor al admitido por la bd, si a_silent = True no muestra el mensaje de error.