P. 1
Como crear un ABM Genérico en VFP

Como crear un ABM Genérico en VFP

|Views: 629|Likes:
Publicado porldz_software

More info:

Published by: ldz_software on Sep 07, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/02/2014

pdf

text

original

ABM Genérico en VFP 9.

0

Cómo crear un ABM Genérico en Visual FoxPro
Introducción
En este documento voy a explicar una forma posible de desarrollar un ABM genérico en Visual FoxPro que sirva para cualquier tipo de tabla. El objetivo de este desarrollo, es de que al momento de programar, desarrollar un ABM nos sea un trabajo fácil y alivianado ya que ABM seguramente vamos a necesitar desarrollar en cualquier sistema que el cliente nos solicite. La idea es que si perdemos un poco de tiempo en desarrollar el primer ABM, luego ese tiempo se recupera con el desarrollo del resto de los ABMs del sistema y en futuros proyectos, por ese motivo, es conveniente desarrollar este tipo de utilidades en una librería para que luego lo pueda incluir en otros proyectos.

Diseño del ABM
Al momento de comenzar a desarrollar un ABM genérico, tenemos que tener en primer lugar bien definido de cómo va a ser el diseño de pantalla de nuestro ABM. En este caso, el diseño que hice fue el siguiente:

Solapa Listados

Autor: Leonardo D. Zulli

Pag. 1

ABM Genérico en VFP 9.0
La solapa de datos permite buscar un registro. Para localizar un registro se debe tipear sobre un campo de la grilla, donde la misma proporciona una búsqueda progresiva.

Solapa Datos

En la solapa datos hay un contenedor como se puede observar de color “Celeste” donde se deberán insertar los controles activex a utilizar.

Composición del formulario
Nombre del formulario: Controles: TbrABM: Clase genérica con la barra de herramientas del ABM. Nombre=Herramientas formABM

PageFrame: Nombre = Pgf, TabPage[1] = Page1, TabPage[2] = Page2 Grid: Nombre = grdDatos (Corresponde a la grilla de la solapa listados) Container: Nombre = cnt_Fields (Corresponde al contenedor de los controles activex) Para lograr que el ABM funcione, he creado diversos controles activex que acompañan a la funcionalidad de este ABM como por ejemplo, TextBoxes, ComboBoxes, ToolBar, Labels, grids, etc, ya que para ciertas funcionalidades, necesito que tengan ciertas funcionalidades propias.

Autor: Leonardo D. Zulli

Pag. 2

ABM Genérico en VFP 9.0
Desarrollo del ABM
Para comenzar a desarrollar el ABM, lo primero que hago en este caso es crear las propiedades y métodos que voy a necesitar que el formulario tenga. He creado los siguientes componentes: Propiedades AutoGenCodigo: Valor booleano que indica si el campo código de la tabla se debe generar automáticamente o bien se debe dejar que el usuario lo cargue manualmente. cNombreTabla: Nombre de la tabla en la que se realizarán las operaciones de ABM. currentID: Propiedad privada donde se guardará el valor del campo Identity actualmente generado o seleccionado. ListCtrlSource: Establece los nombres de los campos que se van a enlazar a cada columna del control Grid. Los campos debe ir separado por coma (,). ListWidthCols: Estable el ancho de cada columna del grid. Los valores deben ir separado por coma (,). lNuevo: Esta propiedad es de uso interno del ABM, que permite detectar si el usuario está agregando un nuevo registro o modificando uno existente. lTransOk: Esta propiedad de valor booleano es de uso interno del formulario, que permite verificar si la transacción de INSERT, UPDATE o DELETE ha sucedido satisfactoriamente o no. MsgError: Propiedad de uso interno que sirve para mostrar mensajes de errores. nCodigo: Propiedad de uso interno donde se guarda el nuevo código generado al hacer clic en “Nuevo”. Este valor funciona si AutoGenCodigo está activado. nUltPosGrid: Guarda la última posición de la fila seleccionada del control Grid. Esto sirve para cuando se refrescan los datos del grid, el usuario no pierda la última ubicación. Esta propiedad es de uso interno de la clase. PK_FieldName: Nombre del campo clave de la tabla. PK_Identity: Indica si el campo PK_FieldName debe ser generado automáticamente. Con este ABM no es necesario definir un campo como identity, sino que ya se incorpora esta funcionalidad en el mismo ABM. Titulos_Cabecera: Permite establecer los títulos de las cabeceras de cada columna del control Grid. Estos títulos son lo que verá el usuario en tiempo de ejecución y cada título debe ir separado por una coma (,).

Autor: Leonardo D. Zulli

Pag. 3

ABM Genérico en VFP 9.0
Métodos Blanquear: Permite poner en blanco los controles activex insertados en el contenedor cnt_Fields. El código que se creó en este método es el siguiente:

Autor: Leonardo D. Zulli

Pag. 4

ABM Genérico en VFP 9.0
CambiarEstado: Permite cambiar el estado según la situación del formulario, por ejemplo, si el usuario hace clic en “Nuevo”, entonces, se deberán deshabilitar los controles de la solapa Listados y habilitar lo de la solapa Datos. El código que se generó es el que se muestra a continuación:

Si observamos este código, al final se cambia el estado del control “Herramientas”, ya que los botones nuevo, editar, modificar y cerrar no tienen el mismo estado que los botones grabar y cancelar. ConfigurarGrilla: Este método se encarga de configurar el control grid para el muestreo de la información. El código que se generó es el siguiente:

Como se puede observar en el código, la grilla tiene funcionalidad propia que incorporé al desarrollar el control activex. Tiene sus propiedades y métodos personalizados. Esta grilla por Autor: Leonardo D. Zulli Pag. 5

ABM Genérico en VFP 9.0
ejemplo, ya incorpora la búsqueda progresiva, con lo que es un tema del que no nos tenemos que preocupar para desarrollar este ABM. CrearCursor: Permite este método está preparado para insertar código. Aquí se debe crealizar la creación del cursor que se enlazará con la grilla. En este caso, utilicé como nombre del cursor cur_Tempo, con lo que al momento de crear el cursos del muestro de la información lo tengo que llamar tempo. El código que generé es el siguiente:

Este código al momento de crear el ABM de una tabla, se debe insertar al principio un DODEFAULT(), ya que es importante que estas líneas se ejecuten en el formulario heredado. Verifico si cur_Tempo está siendo usado, si está en uso, entonces, limpio el RecordSource del grid para refrescar los datos y cierro el cursor actualmente en uso. LlenarCbos: Este método está desarrollado con el fin de llenar comboboxes en caso de que los mismos tengan que levantar datos de alguna otra tabla maestra y completar el campo Foreign Key. El código generado es el siguiente:

Recibe como parámetro el nombre del control combo a llenar, el valor de la propiedad RowSource y el nombre del Alias con el que se debe llenar el combobox. En el formulario heredado se debe realizar el llamado tantas veces como como combobox haya insertado en cnt_Fields.

Autor: Leonardo D. Zulli

Pag. 6

ABM Genérico en VFP 9.0
RecuperarDatos: Este método proporciona un código genérico que permite recuperar los datos del cursor cur_Tempo y mostrar la información en los controles activex insertado en cnt_Fields. El código generado es el siguiente:

En este código tengo que validar el tipo de control del que estamos hablando, para ello, cada control y poder enlazar cada campo en el control que corresponde. Para esto, cada control debe tener la propiedad personalizada cFieldName.

Autor: Leonardo D. Zulli

Pag. 7

ABM Genérico en VFP 9.0
RefrescarGrilla: Este método proporciona un código genérico que permite refrescar el contenido del control grid “grdDatos”.

Set_Insert_Cmd: Este método se encuentra en blanco, es decir, sin código, ya que el código se lo debe generar el desarrollador en el formulario heredado. Aquí el desarrollador debe crear el comando INSERT INTO que permitirá el alta de un nuevo registro en la tabla. Lo mismo ocurre con los métodos Set_Update_Cmd para el comando UPDATE y Set_Delete_Cmd para el comando DELETE FROM xxx.

Autor: Leonardo D. Zulli

Pag. 8

ABM Genérico en VFP 9.0
ValidarDatos: Proporciona un código genérico que permite validar que el usuario haya ingresado los datos que son de ingreso obligatorio en los controles insertado en cnt_Fields del Page2.

Como se puede observar, los controles activex deben tener una propiedad personalizada que indica si el campo es “Requerido” y un método personalizado que permite el blanqueado del control “EstaVacio()”. Ahora en la barra de herramientas, debemos desarrollar los siguientes métodos: Nuevo: Proporciona un código genérico para cuando el usuario hace clic en un evento “Nuevo”.

Este código verifica si el formulario debe generar el código automáticamente, en caso de que sea así, entonces, utiliza la tabla “Numerad”.

Autor: Leonardo D. Zulli

Pag. 9

ABM Genérico en VFP 9.0
Modificar: Este método se ejecuta cuando el usuario hace clic en el botón de comando “Modificar”. El código que proporciona es el siguiente:

Al entrar en el modo de edición de un registro existente, el formulario sitúa al usuario en la solapa “Datos”, refresca los controles activex de cnt_Fields y cambia es estado poniendo al form en modod de edición. Grabar: Este método ocurre cuando el usuario procede a grabar los cambios, ya sea para dar de alta un registro nuevo o bien para modificar uno existente. El grabar ya proporciona el manejo de transacciones, con lo cual, al desarrollar un futuro ABM no hay que preocuparse por este tema. También realiza la validación de los datos. El código de grabación genérico que proporciona este método es el siguiente:

Autor: Leonardo D. Zulli

Pag. 10

ABM Genérico en VFP 9.0

Si observamos este código, el ABM hace el llamado a Set_Insert_Cmd y Set_Update_Cmd según la acción que esté realizando el usuario en el ABM. Mediante la propiedad lTransOk, el ABM se da cuenta si la transacción fue satisfactoria para posteriormente realizar un COMMIT o si se ha producido un fallo para realizar un ROLLBACK. En ambo caso el ABM informa al usuario mediante un MESSAGEBOX el resultado de su transacción. En este método se establece el tipo de bloqueo que debe tener una la tabla que se va a transaccionar, este ABM realiza un bloqueo por fila que sería un Buffering = 3. Este modo de bloqueo se utiliza ya que el ABM va a procesar de a una fila. También se actualiza la tabla “Numerad” con el próximo código a generar, esta tabla también tiene como Buffering = 3.

Autor: Leonardo D. Zulli

Pag. 11

ABM Genérico en VFP 9.0
Eliminar: Este método se ejecuta cuando el usuario hace clic en el botón de comando “Eliminar”. El código genérico que proporciona es el siguiente:

En este código también proporciona el manejo de transacciones y establece el buffering a 3, bloqueo por fila. Hace el llamado a Set_DELETE_Cmd() para ejecutar la instrucción DELETE creada por el desarrollador en el formulario heredado. Cancelar: Proporciona un código genérico que permite cancelar una operación de Alta o Modificación de un registro. El código es el siguiente:

Autor: Leonardo D. Zulli

Pag. 12

ABM Genérico en VFP 9.0
El evento AfterRowColChange de control grdDatos, contiene el siguiente código:

Cada vez que se produce el cambio de fila, recupero los datos a los controles activex que están insertado en el cnt_Fields. El evento Load del formulario proporciona el siguiente código:

Este código se encarga de la apertura de las tablas que se van a necesitar en el ABM. En caso de necesitar abrir más tablas, en el formulario heredado hay que comenzar con un DODEFAULT() para que ejecute este código como herencia. En el evento “Init” se proporciona el siguiente código:

Mediante el RefrescarGrilla(), se llena el grdDatos para mostrar la información al usuario, el RecuperarDatos, permite levantar los datos del primer registro en los controles activex en cnt_Fields y establece el formulario al estado inicial del ABM. En el evento Unload se realiza el cierre de las tablas que se abrieron en el Load. El código que proporciona es el siguiente:

Autor: Leonardo D. Zulli

Pag. 13

ABM Genérico en VFP 9.0

De esta forma tenemos un ABM Genérico finalizado. A continuación voy a explicar como desarrollar algunos de los controles activex como ejemplo de cómo desarrollar estos controles para darle funcionalidad al ABM genérico.

Desarrollo de controles Activex
En este apartado voy a presentar un ejemplo del desarrollo de un control activex, para que se interprete la lógica de cómo generamos los mismos para acompañar a la funcionalidad del ABM genérico.

GridControl (Control Grid Personalizado)
Este control es usado en la solapa “Listado” del ABM y tiene el siguiente formato:

En este control se contempló la funcionalidad para diez columnas. Propiedades: Alias_Name: Contiene el nombre del alias a mostrar en el grid List_ControlSource: Contiene la lista de campos a enlazar al cada columna Lista_Ancho_Cols: Contiene los valores de ancho de columnas Ordenado: Valor booleano de uso interno que indica si está ordenado o no. Permitir_Busqueda: Indica si la grilla debe incorporar la funcionalidad de búsqueda progresiva. Autor: Leonardo D. Zulli Pag. 14

ABM Genérico en VFP 9.0
Permitir_Ordenamiento: Indica si la grilla debe incorporar la funcionalidad de ordenamiento al hacer clic en la cabecera de la columna. Pos_Actual_Texto: Indica la posición actual del texto que está escribiendo el usuario. Uso interno de la clase. Texto_Busqueda: Contiene el texto que el usuario escribe mientras se está realizando la búsqueda progresiva. Este se muestra mediante el comando WAIT WINDOW … NOWAIT Titulos_Cabecera: Contiene los títulos de cada columna. Ultimo_Valor: Contiene el último valor buscado para recuperar la posición.

Código genérico del Evento INIT

Se establece el RecordSource con el nombre de Alias que se debe setear en la propiedad Alias_Name. Luego método generar grid se encarga de realizar el muestreo de los datos. Código del método Generar_Grid()

En este código se configuran las propiedades de cada columna para darle formato al Grid y enlazar los datos al mismo. Para esto deben existir las propiedades: Titulos_Cabecera: Título de las columnas que va a ver el usuario separado por coma (,).

Autor: Leonardo D. Zulli

Pag. 15

ABM Genérico en VFP 9.0
List_ControlSource: Lista de campos por cada columna separado por coma (,). Lista_Ancho_Cols: Lista con los valores de ancho de columnas separado por (,).

Autor: Leonardo D. Zulli

Pag. 16

ABM Genérico en VFP 9.0
Código del método localizar_registros Este método es el que hace posible que se pueda llevar a cabo la búsqueda progresiva en un control grilla.

Autor: Leonardo D. Zulli

Pag. 17

ABM Genérico en VFP 9.0

Autor: Leonardo D. Zulli

Pag. 18

ABM Genérico en VFP 9.0

Esta rutina recibe como parámetro el nombre del campo de la columna en la que se va a realizar la búsqueda, el nombre del índice por el que se indexa y el código de tecla que el usuario ha presionado. Cuando se indexa un cursor que va a estar vinculado a la grilla, es importante que el nombre del índice sea exactamente igual al nombre del campo que se está indexando, para que este código genérico pueda reconocer el mismo y al momento de buscar pueda realizar el ordenamiento de esa columna.

Autor: Leonardo D. Zulli

Pag. 19

ABM Genérico en VFP 9.0
Código del método Ordenar_Datos Permite realizar el ordenamiento por una determinada columna. El código que proporciona este método es el siguiente:

Cada celda de la grilla, por naturaleza es un control TextBox, con lo que disponemos de los eventos de cualquier control textbox normal. En este caso se va a codificar el evento KeyPress. Esto se debe hacer en el textbox de cada columna:

Este código realiza el llamado a localizar_registros para realizar la búsqueda progresiva a medida que el usuario va tipeando sobre el contenido de una columna. Autor: Leonardo D. Zulli Pag. 20

ABM Genérico en VFP 9.0
Si el usuario hace presiona la tecla “Enter” se dispara el método press_enter() que se puede personalizar en el formulario que en que se está utilizando para generar alguna funcionalidad en particular, por ejemplo, editar un registro podría ser una funcionalidad posible en un ABM. Código del evento Click del Header En el evento clic del header de cada columna se debe realizar el siguiente código:

Esto hace que cuando el usuario haga clic sobre el encabezado de alguna columna, los datos de ordene por dicha columna.

Control clsTextBox
Este control es un TextBox especial que acompaña a la funcionalidad del ABM Genérico que se ha desarrollado anteriormente.

Propiedades
AutoCompleta: Indica si el contenido se debe completar con ceros a la izquierda. cFieldName: Nombre del campo con el que se va a enlazar en un ABM. IsCharacter: Valor booleano que indica si el control contiene un valor de tipo texto. IsDateTime: Valor booleano que indica si el textbox contiene un valor fecha IsInteger: Valor booleano que indica si se trata de un textbox numérico que acepta solo enteros. IsNumeric: Valor booleano que indica si se trata de un textbox numérico que acepta valores decimales. MsgError: Mensaje de error a mostrar en caso de que el campo sea requerido. Requerido: Valor booleano que indica si el dato es de ingreso obligatorio.

Código del evento GotFocus Al salir del recibir el foco el cuadro de texto cambia su color de fondo y al salir vuelve a su color original. Este evento se produce al recibir del foco y el código es el siguiente:

Autor: Leonardo D. Zulli

Pag. 21

ABM Genérico en VFP 9.0
this.BackColor = RGB(226,230,254)

Código del Evento INIT Al inicializarse el control, se debe inicializar su contenido para definir el tipo de dato que va a contener. El código es el siguiente:
this.blanquear()

Código del evento LostFocus Al perder el foco debe volver al color original del control. También hay que verificar si se debe autocompletar con ceros a la izquierda. El código es el siguiente:

El método calcular se reserva por si al salir del foco se debe insertar algún tipo de fórmula, por ejemplo, en el ingreso de una factura puede ser muy usado. Código del método Blanquear Este método permite inicializar el control según el tipo de dato que corresponda. El código es el siguiente:

Autor: Leonardo D. Zulli

Pag. 22

ABM Genérico en VFP 9.0
Código del método EstaVacio Este método permite verificar si el usuario ha ingresado algún dato en base al tipo de dato que contiene el textbox. El código que proporciona es el siguiente:

Y así se puede continuar desarrollando controles activex para que el ABM Genérico pueda funcionar con distintas formas de ingresar datos. A continuación se muestra como se puede utilizar este ABM Genérico.

Autor: Leonardo D. Zulli

Pag. 23

ABM Genérico en VFP 9.0
Ejemplo del desarrollo de un ABM utilizando el ABM Genérico desarrollado.
Diseño del ABM
A continuación se presentará el formato del ABM en tiempo de diseño tal cual se presenta al agregar el formulario: Vista de la página Listados

Esta página contiene n simplemente un grid llamado grdDatos donde se mostrará todos los datos que tiene la tabla sobre la cual se va a trabajar.

Autor: Leonardo D. Zulli

Pag. 24

ABM Genérico en VFP 9.0
Vista de la página Datos

La página datos, tiene un contenedor donde se deberá insertar los controles activex que se va a utilizar para el ingreso o la edición de los registros. Tener en cuenta que al momento de insertar los campos en el contenedor, deberá hacer clic derecho sobre el mismo e ir a la opción “Edit”, ya que los campos tienen que quedar dentro del contenedor para que el formulario reconozca cada control que se inserte.

Propiedades
AutoGenCodigo
Esta propiedad permite indicar al ABM si el código se generará automáticamente o el usuario lo ingresará manualmente. Tenga en cuenta que el código no es lo mismo que el campo Id. Hay casos en que los usuarios prefieren generar los códigos manualmente. Se establece .T. para que se genere automáticamente y .F. para que el usuario lo ingrese a mano.

cNombreTabla
Especifica el nombre de la tabla física sobre la que se va a trabajar.

ListCtrlSource
Este propiedad establece los nombres de los campos que se vinculará con cada columna del Grid. Cada campo debe estar separado mediante una coma (,). Por ejemplo: Id,Codigo,Descripcion,etc.

Autor: Leonardo D. Zulli

Pag. 25

ABM Genérico en VFP 9.0
ListWidthCols
Esta propiedad establece el ancho de cada columna. Cada valor debe estar separado por una coma (,). Por ejemplo: 70,70,200,n Nota: Para campos de tipo numérico el estándar es 70 y para campo de texto, según la longitud del campo se debe establecer un valor mayor a 100.

nCodigo
Devuelve el próximo código que se debe generar. Para que esta propiedad contenga un valor deberá tener AutoGenCodigo en .T. (verdadero). Esta propiedad recibe el valor cuando el usuario hace clic en “Nuevo”, donde el desarrollador debe asignar en el evento click de cmdNuevo el valor al cuadro de texto que corresponde al campo código.

Pk_FieldName
Se debe establecer el nombre del campo Id. El ABM utiliza esta propiedad para saber a que campo asignar el próximo Id.

Pk_Identity
Mediante esta propiedad se indica al ABM si el campo Id. De la tabla a procesar debe ser calculado automáticamente, es decir, si ese campo debe ser identity. Para que esto funcione se debe tener seteado el campo Pk_FieldName.

Titulos_Cabeceras
Esta propiedad permite establecer los títulos de cada columna que dispone el Grid. Cada título debe estar separado por coma (,), por ejemplo: Código,Razón Social,etc.

Autor: Leonardo D. Zulli

Pag. 26

ABM Genérico en VFP 9.0
Métodos que se deben desarrollar
Para que el ABM tenga funcionalidad hay ciertos métodos que se deben desarrollar mediante un cierto criterio. Dentro de los métodos disponemos de aquellos que pertenecen al formulario propiamente dicho. Luego para la parte de edición, en la parte superior se encuentra una barra de herramientas llamada “Herramientas”, donde se deberán desarrollar los métodos que permitirán realizar las operaciones sobre los registros de la tabla. CreateCursor (Método del formulario) En este método se debe generar la sentencia SELECT-SQL que generará el cursor que mostrará la información sobre la grilla de la siguiente forma:

Para que el grid pueda tener la funcionalidad de ordenamiento y búsqueda, debe tener en cuenta que hay que indexar el cursor mediante la instrucción INDEX ON.

Autor: Leonardo D. Zulli

Pag. 27

ABM Genérico en VFP 9.0
Set_INSERT_Cmd (Método del formulario) En este método se debe escribir la instrucción INSERT – SQL que permitirá insertar un nuevo registro en la tabla. Por ejemplo, vea el siguiente código:

Set_UPDATE_Cmd (Método del Formulario) En este método se debe insertar la instrucción UPDATE – SQL que permitirá modificar los datos de un registro existente. Por ejemplo:

Nuevo (Método del control Herramientas)
En este método se debe insertar el código que permite preparar el formulario para el ingreso de un nuevo registro. El código es el siguiente:

Autor: Leonardo D. Zulli

Pag. 28

ABM Genérico en VFP 9.0
Se debe establecer lNuevo en .T. para indicar al formulario que el usuario está generando un nuevo registro, luego se blanquea los controles de edición, se cambia el estado de los mismos y se muestra el próximo código en el textbox correspondiente al código.

Modificar (Método del control Herramientas)
En el modificar hay que establecer lNuevo en .F. para indicar al ABM que se trata de una modificación de un registro existente y recuperar los datos en los controles correspondientes.

Grabar (Método del Control Herramientas)
En este método se debe realizar el cambio de estado de los controles de la siguiente forma:

Cancelar (Método del control Herramientas)
En este método se deben recuperar los datos del último registro posicionado y situarlos en sus controles correspondientes. También hay que cambiar el estado del formulario. El código es el siguiente:

Notas a Tener en cuenta
En cada método se siempre hay que empezar con el DODEFAULT() para que ejecute el código que viene por herencia. En caso de no empezar con esta modalidad, se pierde la funcionalidad del ABM.

Autor: Leonardo D. Zulli

Pag. 29

ABM Genérico en VFP 9.0
Presentación del Formulario en ejecución
Este ABM en el sistema se ve de la siguiente forma:

Si el usuario se sitúa en una columna y comienza a tipear, el sistema procederá a realizar una búsqueda progresiva facilitando la localización de un registros en particular.

Autor: Leonardo D. Zulli

Pag. 30

ABM Genérico en VFP 9.0
Diseño de la página de Datos
Para el diseño de la página de datos, se deberá utilizar los controles que se encuentran dentro de la librería “Utilidades.vcx”. Estos controles están preparados para vincularse a la funcionalidad del ABM. Por ejemplo, en el caso expuesto en el apartado “Presentación del Formulario en Ejecución”, se utilizó dos etiquetas clsEtiqueta y dos cuadros de texto clsTextBox. Las etiquetas no causa ningún inconveniente ya que solamente presenta el nombre del campo. Los cuadros de texto hay que tener en cuenta de setear las siguientes propiedades: cFieldName: (string) Nombre del campo con el que se vincula al ABM. IsDateTime: .T. Si el campo es del tipo Date IsInteger: .T. Si el campo contiene un valor entero IsNumeric: .T. Si el campo contiene un valor decimal MsgError: Mensaje de error a mostrar durante la validación Requerido: .T. o .F. donde se indica si el campo es de ingreso obligatorio o no. Estas propiedades se respetan para los controles clsComboBox, clsCheckBox y clsEditBox. Mediante la propiedad cFieldName, el ABM al momento de realizar la recuperación de los datos, sabe en que control se sitúa cada campo que tiene el cursor. Esta propiedad sería el reemplazo del ControlSource del control original del Visual FoxPro.

Autor: Leonardo D. Zulli

Pag. 31

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->