Diferencia entre revisiones de «TprxADOClientDM»
(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:
- 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.
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:

Y la pantalla que muestra los comandos SQL es:

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.