Diferencia entre revisiones de «TpAUX CAMPO CONSTRAINT unit»
Sin resumen de edición |
|||
| (No se muestran 3 ediciones intermedias del mismo usuario) | |||
| Línea 67: | Línea 67: | ||
end; | end; | ||
</pre> | </pre> | ||
=Implementación= | |||
===function Exists: Boolean=== | |||
Retorna true si existe constraint para esta clase y campo. | |||
===function Prepare: String=== | |||
Prepara la constricción del campo. | |||
===function Validate(var aMsg: String): Boolean=== | |||
Valida el valor del campo contra el constraint, retorna True si valida correctamente y False si no valida. Los constraints de tipo "filtro" no se validan... | |||
=Modo de uso= | =Modo de uso= | ||
El auxiliar se usa de la siguiente manera (ejemplo de [[TprxADODataSetEdit]].OnExitFieldXtd): | El auxiliar se usa de la siguiente manera, primero la inicialización (ejemplo de [[TprxADODataSetEdit]].OnExitFieldXtd): | ||
<pre> | <pre> | ||
prxADOClientDM. | prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.DataSet := Self; | ||
prxADOClientDM. | prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Clase := ppTableName; | ||
prxADOClientDM. | prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Campo := aFieldName; | ||
</pre> | </pre> | ||
| Línea 82: | Línea 91: | ||
*'''Campo''' se inicializa al nombre del campo cuyo valor queremos asignar. | *'''Campo''' se inicializa al nombre del campo cuyo valor queremos asignar. | ||
Posteriormente | Posteriormente evaluamos la constricción: | ||
<pre> | <pre> | ||
prxADOClientDM. | if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Exists then | ||
begin | |||
prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Prepare; | |||
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.EsTipo_FILTRO = False then | |||
begin | |||
if (Trim(FieldByName(aFieldName).AsString) <> '') and (FieldByName(aFieldName).IsNull = False) then | |||
Result := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Validate(vMsg); | |||
end | |||
else | |||
begin | |||
vConstraint := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Solucion; | |||
vConstraintMSG := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Mensaje; | |||
end; | |||
end; | |||
</pre> | </pre> | ||
El '''Exists''' habilita la evaluación de la constricción. | |||
Distinto es el comportamiento cuando la constricción corresponde a una enumeración, en este caso es el control de edición [[TprxDBComboBox]] que carga los ítems de la enumeración: | |||
<pre> | |||
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Prepared then | |||
begin | |||
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.EsTipo_ENUMERACION then | |||
begin | |||
// Cargamos los ítems del constraint, y posiblemente los ítems del combo... | |||
ConstraintItems.Clear; | |||
for I := 0 to prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.SQL_COMANDO_SELECT.Count - 1 do | |||
ConstraintItems.Add(prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.SQL_COMANDO_SELECT[I]); | |||
for I := 0 to prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Items.Count - 1 do | |||
Items.Add(prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Items[I]); | |||
end; | |||
end; | |||
</pre> | |||
Además, la constricción puede aplicar a campos de tipo fecha ([[TprxDBEditDateTime]].Seleccionar): | |||
<pre> | |||
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Prepared then | |||
begin | |||
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.EsTipo_FILTRO then | |||
vConstraint := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Solucion; | |||
end; | |||
</pre> | |||
=Usos= | |||
*[[TprxADODataSetEdit]].OnEnterFieldXtd. | |||
*[[TprxADODataSetEdit]].OnExitFieldXtd. | |||
*[[TprxDBComboBox]].CargarElementos. | |||
*[[TprxDBEditDateTime]].Seleccionar. | |||
*[[TprxScrollBox]].ApplyArray. | |||
Revisión actual - 18:52 22 may 2025
Descripción
El objeto TpAUX_CAMPO_CONSTRAINT_unit (Constricciones de campos) procesa los auxiliares de tipo CONSTRAINT, ver detalles en DEV AUXILIARES/CONSTRAINT.
Identidad
- Ancestro: TComponent
- Carpeta: C:\DevelopPrx\pPRAGMA
- Archivo: pAUX_CAMPO_CONSTRAINT_unit.pas
Declaración
type
TpAUX_CAMPO_CONSTRAINT_unit = class(TComponent)
private
FDataSet: TDataSet;
FClase: String;
FCampo: String;
FQuery: TprxADOQuery;
FSQL_COMANDO: TStringList;
FSQL_COMANDO_SELECT: TStringList;
FSQL_MENSAJE: TStringList;
FPrepared: Boolean;
FTipo: String;
FEsSQL: Boolean;
FTag_Porcentaje100: Boolean;
FSolucion: String;
FItems: TStringList;
FMinimo: Variant;
FMaximo: Variant;
FMensaje: String;
protected
property SQL_COMANDO: TStringList read FSQL_COMANDO write FSQL_COMANDO;
property SQL_MENSAJE: TStringList read FSQL_MENSAJE write FSQL_MENSAJE;
property EsSQL: Boolean read FEsSQL;
property Tag_Porcentaje100: Boolean read FTag_Porcentaje100;
property Minimo: Variant read FMinimo;
property Maximo: Variant read FMaximo;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function EsTipo_ENUMERACION: Boolean;
function EsTipo_FILTRO: Boolean;
function EsTipo_LIMITE: Boolean;
function Exists: Boolean;
function Prepare: String;
function Validate(var aMsg: String): Boolean;
property DataSet: TDataSet read FDataSet write FDataSet;
property Clase: String read FClase write FClase;
property Campo: String read FCampo write FCampo;
property Query: TprxADOQuery read FQuery write FQuery;
property Prepared: Boolean read FPrepared;
property Solucion: String read FSolucion;
property Items: TStringList read FItems;
property Mensaje: String read FMensaje;
property SQL_COMANDO_SELECT: TStringList read FSQL_COMANDO_SELECT write FSQL_COMANDO_SELECT;
published
end;
Implementación
function Exists: Boolean
Retorna true si existe constraint para esta clase y campo.
function Prepare: String
Prepara la constricción del campo.
function Validate(var aMsg: String): Boolean
Valida el valor del campo contra el constraint, retorna True si valida correctamente y False si no valida. Los constraints de tipo "filtro" no se validan...
Modo de uso
El auxiliar se usa de la siguiente manera, primero la inicialización (ejemplo de TprxADODataSetEdit.OnExitFieldXtd):
prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.DataSet := Self; prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Clase := ppTableName; prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Campo := aFieldName;
Primero asignamos las propiedades:
- Dataset que se asigna al mismo componente que está llamando al auxiliar.
- Clase se inicializa al nombre de la tabla del componente que está llamando al auxiliar.
- Campo se inicializa al nombre del campo cuyo valor queremos asignar.
Posteriormente evaluamos la constricción:
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Exists then
begin
prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Prepare;
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.EsTipo_FILTRO = False then
begin
if (Trim(FieldByName(aFieldName).AsString) <> '') and (FieldByName(aFieldName).IsNull = False) then
Result := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Validate(vMsg);
end
else
begin
vConstraint := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Solucion;
vConstraintMSG := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Mensaje;
end;
end;
El Exists habilita la evaluación de la constricción.
Distinto es el comportamiento cuando la constricción corresponde a una enumeración, en este caso es el control de edición TprxDBComboBox que carga los ítems de la enumeración:
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Prepared then
begin
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.EsTipo_ENUMERACION then
begin
// Cargamos los ítems del constraint, y posiblemente los ítems del combo...
ConstraintItems.Clear;
for I := 0 to prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.SQL_COMANDO_SELECT.Count - 1 do
ConstraintItems.Add(prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.SQL_COMANDO_SELECT[I]);
for I := 0 to prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Items.Count - 1 do
Items.Add(prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Items[I]);
end;
end;
Además, la constricción puede aplicar a campos de tipo fecha (TprxDBEditDateTime.Seleccionar):
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Prepared then
begin
if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.EsTipo_FILTRO then
vConstraint := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Solucion;
end;
Usos
- TprxADODataSetEdit.OnEnterFieldXtd.
- TprxADODataSetEdit.OnExitFieldXtd.
- TprxDBComboBox.CargarElementos.
- TprxDBEditDateTime.Seleccionar.
- TprxScrollBox.ApplyArray.