Guía de Diccionario de Datos Métodos de entrada y salida

Anuncio
Guía de Diccionario de Datos
Métodos de entrada y salida
Las propiedades de “Field_Entry_msg” y “Field_Exit_msg” son similares al “Field_Validate_msg” y
son enviadas siempre que el cursor entre o salga de un elemento conectado con un campo.
Crearía los procedimientos y luego atribuiría los nombres de procedimiento (procedure) a las
propiedades de campo. Cuando se llaman se pasa el número de campo y el valor del campo. Al
procedimiento (procedure) mientras devuelva un valor distinto a cero se podría parar la
navegación, esto sería un uso anormal o poco habitual. Estos procedimientos se emplean,
generalmente, para manejar procesos antes de entrar y después de salir.
Método de entrada
Set Field_Entry msg Field Customer.State To EntryCustomerState
“Field_Entry_msg” permite que especifique el nombre de un método que se ejecuta siempre que
el cursor se mueve un Form de entrada de datos conectado al campo.
El método de entrada, un procedimiento, puede ser programado para llevar a cabo cualquier
acción. Podrá usarlo para mostrar información especial o valores por defecto cada vez que el
cursor vaya al campo.
En Visual DataFlex, los procedimientos pueden devolver un valor entero. En el caso de un método
de entrada (Entry method), si se devuelve un valor distinto de cero, se aborta la entrada del
cursor al Form. Usar los métodos de entrada para controlar la navegación es muy desaconsejable.
El método de entrada debe ser un procedimiento de la clase de Diccionario de Datos de la tabla.
Por ejemplo si tiene el siguiente procedimiento:
Procedure EntryOrderDate Interger iField Date dDate
// Add a default date if the fields is blank
Boolean bChanged
Get Field_Changed_State iField to bChanged
If (not (bChanged) AND dDate = 0) Begin
SysDate dDate
Set Field_Default_Value iField to dDate
End
End_Procedure
Para usar este procedimiento en un campo fecha de una tabla, pondría el método de entrada de
campo a “EntryOrderDate”. Estaría asignando el manejador de método “msg_EntryOrderDate”
pero si se omite el prefijo "msg" este será proporcionado automáticamente.
Set Field_Entry_msg Field Orderhea.Order_Date To EntryOrderDate
www.VisualDataflex.es
Página 1 de 5
Guía de Diccionario de Datos
El prototipo de declaración para un método de entrada tiene el siguiente formato general.
procedure procedureName integer iField type currentValue
Dónde:
•
procedureName es el nombre del procedimiento;
•
iField es el número de campo del campo que envió “procedureName”. El número de campo
puede usarse para obtener cualquier información sobre el campo.
•
Type y currentValue son el tipo y el valor actual del campo que envió “procedureName”.
Los parámetros que se pasan al método de entrada permiten que escriba procedimientos
generalizados que pueden ser reutilizados en otros campos y tablas.
Método de salida
Set Field_Exit_msg Field Customer.Zip To ExitAdjustZip
“Field_Exit_msg” permite que especifique el nombre de un método que se ejecute siempre que el
cursor se va de un Form de entrada de datos conectado al campo.
El método de salida, un procedimiento, puede ser programado para llevar a cabo cualquier acción.
Por ejemplo, podría usarlo para ajustar valores de algunos datos calculados que están en función
del valor del campo introducido.
En Visual DataFlex, los procedimientos pueden devolver un valor entero. En el caso de un método
de salida, si se devuelve un valor distinto de cero se aborta la acción de salir del Form de entrada
de datos. No se recomienda utilizar este evento para controlar la navegación.
El método de salida debe ser un procedimiento de clase de Diccionario de Datos de la tabla.
Por ejemplo si tiene el siguiente procedimiento:
Procedure AdjustDisplayTotal Interger iField Interger iValue
// This updates the extender Price field, which will update any
// display balances.This is only done for display purposes.The
// actual amount is updated to the field during the save.
Interger iQty
Number nAmnt
Get Field_Current_Value Field Orderdtl. Qty_Ordered
to iQty
Get Field_Current_Value Field Orderdtl.Price
to nAmnt
Set Field_Current_Value Field Orderdtl. Extended_Price to (nAmnt * iQty)
// note we set value, but not changed state!
End_Procedure
www.VisualDataflex.es
Página 1 de 5
Guía de Diccionario de Datos
Para usar este procedimiento sobre el campo apropiado de una tabla, pondría el método de
entrada del campo a “AdjustDisplayTotal”. Estaría asignando el manejador de método
“msg_AdjustDisplayTotal pero si se omite el prefijo “msg” este será proporcionado
automáticamente.
Set Field_Exit_msg Field Orderdtl.Qty_Ordered to Adjust_Display_Total
El prototipo de declaración para un método de salida tiene el siguiente formato general.
procedure procedureName integer iField type currentValue
Dónde:
•
procedureName es el nombre del procedimiento;
•
iField es el número del campo que envió “procedureName”. El número de campo puede
usarse para obtener cualquier información sobre el campo.
•
Type y currentValue son el tipo y el valor actual del campo que envió “procedureName”.
Los parámetros que se pasan al método de salida permiten que escriba procedimientos
generalizados que pueden ser reutilizados en otros campos y tablas.
Consulte lo siguiente
Definir los atributos de campo de Diccionario de Datos.
Autoincremento del campo
Cada registro en una tabla debe contener un campo o juego de campos que proporcionen una
identificación única al registro. Esto sería la clave primaria. En algunos casos, el valor de la clave
primaria debe ser introducido manualmente por el operador (Ej. Introducir una identificación de
cadena única como parte de la entrada de datos). En algunos casos, la base de datos suministrará
la calve primaria automáticamente al grabar el registro. En otros casos, el Diccionario de Datos
debe suministrar esta identidad única cuando se grabe el registro por primera vez.
El autoincremento (Auto-Incremento) del Diccionario de Datos nos da esta funcionalidad
asignando números automáticamente y de forma secuencial a cada nuevo registro.
Para que el Diccionario de Datos sepa cuál es el siguiente número a un nuevo registro debemos
almacenar el último número asignado en una tabla externa. Para crear un campo autoincremento,
necesitará definir en el Diccionario de Datos la tabla externa y el campo en esa tabla que se va a
usar para almacenar ese número así como el campo ID (clave primaria) en su Diccionario de
Datos. Para facilitar esta operación existe un comando llamado Define_Auto_Increment
Define_Auto_Increment ordsys.last_cust_num to Customer.cust_number
www.VisualDataflex.es
Página 1 de 5
Guía de Diccionario de Datos
En este ejemplo, el campo Ordesys.Last_Cust_Num tabla sistema se designa para incrementar y
suministrar un valor al campo cust_number de la tabla Customer.
El autoincremento funcionará correctamente solo si la tabla externa es una tabla de sistema (un
solo registro) o una “Tabla Padre” con la que esté relacionada.
Usará una tabla sistema si el identificador único es de un solo segmento como muestra en el
ejemplo anterior con cust_number. Si está usando un campo de una tabla sistema, tiene que
registrar esta tabla como una tabla externa de forma que se bloquee correctamente durante
operaciones de grabación. Por ejemplo:
Define_Auto_Increment ordsys.last_cust_num to Customer.cust_number
Send Add_System_File ordsys.last_cust_num
DD_LOCK_ON_NEW_SAVE_DELETE
Puede usar una “tabla padre” relacionada si su identificador (ID) único es multi - segmento. Por
ejemplo el ID de una estructura Cabecera-Detalle como en pedido-detalle pedido. Por ejemplo, el
ID de una tabla de Detalle (Order-Detail) en una estructura Cabecera-Detalle (header-detail)
podría ser el número del documento (Cabecera) y un número de orden de detalle asignado por
una tabla sistema. Si el último número de detalle de cada cabecera fuera almacenado en la tabla
Cabecera (OrderHea.Last_Detail_Num) el campo de Autoincremento se definiría como:
Define_Auto_Increment OrderHea.Last_Detail_Num to OrderDtl.Detail_Number
Solamente puede asignar un autoincremento campo por DDO. Si intenta atribuir dos, entonces de
autoincremento del primer campo será ignorado. Si tiene que asignar campos de autoincremento
adicional dentro de su Diccionario de Datos puede hacerlo fácilmente añadiendo un código
personalizado al evento de “Creating” del Diccionario de Datos.
Consulte lo siguiente
Definir los atributos de campo de Diccionario de Datos.
Listas de consultas (Lookup lists)
Set Field_Prompt_Object field Customer.name to Cust_lkup
Las listas de consulta se crean para poder buscar registros de una manera fácil en su aplicación.
Típicamente cada tabla tendrá al menos una lista de consulta relacionada con ella. Las columnas
en esta lista de consulta contarán, a menudo, con los campos más importantes de su tabla. Estos
campos se ponen normalmente en un índice y las listas de consulta se diseñan para dejar buscar
registros fácilmente por cualquiera de esos índices.
Asignar campos en un Diccionario de Datos a una lista de consulta se hace fijando la propiedad de
“Field_Prompt_Object”. Una vez asignadas, sus aplicaciones Windows fijarán esas listas de
consulta a todos los objetos de introducción de datos que usan ese campo de forma automática.
www.VisualDataflex.es
Página 1 de 5
Guía de Diccionario de Datos
Habitualmente creará sus objetos de lista de consulta antes de que los asigne a un
“Field_Prompt_Object”. Debe saber el nombre del objeto de la lista de consulta antes de
asignarlo. Existen asistentes que le permiten crear sus listas de consultas y asignarlos a los
campos de Diccionario de Datos apropiados en un solo paso.
Si está usando uno de los tipos de validación (casilla de verificación, rango, tabla de verificación o
validación) es capaz de suministrar una lista de consulta por defecto; lo hace si no tiene una
asignada explícitamente. Así que si asigna a un campo un “Field_Prompt_Object”, este se usará
en vez de la lista suministrada para las validaciones extendidas.
Consulte lo siguiente
Definir los atributos de campo de Diccionario de Datos.
www.VisualDataflex.es
Página 1 de 5
Descargar