Вы находитесь на странице: 1из 14

5.

Formateo y Validacin.
5.1. Formateo.
Conceptos.

Formatear: Se refiere a la manera como se desplegaran los datos de un objeto.

Los objetos que se pueden formatear son: Data Fields o Columns (de una Table Windows).

Formatear esta ligado en cierta forma al concepto de validacin. El formato depende del tipo de dato que un objeto contiene.

Se hace por medio del personalizador (Customizer).

5.1.1. Objetos tipo cadena.

Unformated Invisible Uppercase Lowercase

Por omisin los datos del tipo cadena no se someten a ningn formateo. Se utiliza para la captura de datos que no sern visibles tales como un Password. Cuando el dato capturado ser almacenado exclusivamente en maysculas. Cuando el dato capturado ser almacenado exclusivamente en minsculas.

5.1.2. Objetos del tipo Date/Time y Number.

SQLWindows

90

Los formatos disponibles para los objetos Date/Time y Number se encuentran en la seccin Formats de las Global Declarations y se describen en la imagen.

Los formatos para este tipo de datos son muy variados y SQLWindows tiene definidos los ms comunes, pero no son fijos, pueden ser modificados e incluso se pueden definir nuevos formatos. El formato definido se denomina Mscara, al especificar caractersticas del objeto con el Customizer se asigna la mscara (Picture Formatting).

5.1.2.1.

Formatos del tipo Date/Time.

Caracteres para mscaras del tipo Date/Time Caracter M


SQLWindows

Descripcin Mes : 1-12 ( sin ceros a la izquierda ).


91

MM MMM MMMM

Mes : 01-12 ( con ceros por la izquierda ). Mes : Jan-Dec ( las tres primeras letras en ingls ). Mes : January-December ( nombre del mes completo en

ingls ). d Da : 1-31 ( sin ceros a la izquierda ). dd Da : 01-31 ( con ceros por la izquierda ). ddd Da : Sun-Sat ( las tres primeras letras en ingls ). dddd Da : Sunday-Saturday ( nombre del da completo en ingls ). yy Ao : 2 dgitos ( 95 ). yyyy Ao : 4 dgitos ( 1995 ). hh Hora : formato de la hora en 12 horas. hhhh Hora : formato de la hora en 24 horas. mm Minutos : 0-59 ss Segundos : 0-59 mmmmmm Microsegundos : 000000-999999 AMPM Cadena internacional para AM o PM ( antes o despus meridiano ).

La mscara se arma utilizando los caracteres mostrados en la imagen superior, si se utilizan otros caracteres, estos se utilizarn en forma literal al formatear el dato, por ejemplo yy-mm-dd producir resultados como: 94-0105 mientras que yymmdd no incluir ningn separador 940105. Una vez definida la mscara, esta se asigna al objeto con el Customizer.

5.1.2.2.

Formatos del tipo Number

Caracteres para mascaras del tipo Number. Caracter Uso # Eliminacin de ceros. SQLWindows no aumenta ceros a la izquierda del punto decimal o a la derecha del mismo si la
SQLWindows 92

cantidad de dgitos capturados es menor a la cantidad de #s definidas. El smbolo # puede ser colocado n cantidad de veces a la izquierda del 0 del punto decimal y n cantidad de veces 0 despus del 0 y despus del punto decimal. Llenado de ceros. SQLWindows aumenta la cantidad de ceros que sean necesarios, en ambos lados del punto decimal, para cubrir con al mscara definida por el usuario. Si el nmero capturado es mayor a la mscara por la derecha del punto decimal, SQLWindows redondea la cantidad. Si se captura ms por la , izquierda, stos son desplegados Separador de Miles. Despliega una coma ( , ) en el lugar donde fue definida. Este caracter debe colocarse necesariamente cada tres dgitos a la derecha del punto decimal. Con estos caracteres se definen las mscaras para cantidades que expresen dinero o cantidad, por ejemplo: $#,##0.00. Para incluir un caracter o varios caracteres en forma literal se deben colocar entre comillas. Definir un formato para Nuevos Pesos sera sencillo: N$#,##0.00. Caracteres para mascaras del tipo Number (Continuacin). Caracter Uso % Porcentaje. SQLWindows multiplica la cantidad por 100 y coloca el signo de porcentaje si ste fue definido despus del ltimo 0. Signo de Pesos. Despliega el caracter en la posicin que se $
SQLWindows

indique, puede utilizarse en una posicin fija o variable y no


93

E+ e+ Ee.

debe usarse a la derecha del 0, # del punto decimal. Notacin Cientfica ( Exponencial ). Si el formato tiene un 0 # despus del caracter E e, SQLWindows desplegara el valor numrico con notacin cientfica. Ejemplos de esto es 0.00E+00 y 00.####e-00# . Punto Decimal. Auxiliados con los caracteres 0 y #, el punto decimal determina la cantidad de caracteres por la derecha e izquierda del mismo. Si slo se definen caracteres a la derecha, SQLWindows desplegar las cantidades empezando con un punto y no aumentar el 0 por la izquierda, para evitar esto se debe incluir un 0 por la izquierda del punto decimal. Caracter de Relleno. Repite el caracter tantas veces como sea necesario para llenar la longitud del campo definida por el usuario. Se debe colocar inmediatamente antes de primer # 0. Se utiliza para separar dos formatos, mismos que sern aplicados para los valores positivos y negativos respectivamente. Solamente debe ser utilizado una vez en la mscara. Deja un espacio en blanco en lugar del caracter. Si se utiliza al final del formato, utilice cualquier otro caracter enseguida del mismo para que ste tenga efecto. 5.1.3. Input Mask.

Su tarea principal es: Validar los datos conforme el usuario los teclea.

Especifica el tipo de caracteres que el usuario debe teclear y si Convierte de maysculas a minsculas o viceversa segn se Inserta caracteres de separacin en forma automtica.
94

estos no corresponden, genera un Beep.


SQLWindows

requiera.

Pueden asignarse a un Combo Box, Data field Table Windows

Column. Al igual que las mscaras para formatos, los Input Mask pueden definirse en la seccin Global Declarations, y para usarse slo se asignan al objeto que se desea. Caracteres para definir un Input Mask. X ! a A 9 n N Cualquier Caracter. Cualquier Caracter pero en maysculas. Caracteres alfabticos (A-Z, a-z ). Caracteres alfabticos en maysculas. Caracteres numricos ( 0-9 ). Caracteres alfanumricos.. Caracteres alfanumricos en maysculas.

Ejemplo: 999-99-9999 acepta capturas como 123-45-67, el usuario no necesita teclear los signos - , estos se insertan automticamente conforme el usuario teclea los nmeros. Se debe tener cuidado cuando se asigna formato e Input Mask a objetos tipo Date-Time, no se pueden asignar mscaras con diferencia de tamao o distribucin de caracteres. Por ejemplo si se define un Input Mask 99-99-99 no se puede asignar formato como dd-mm-yyyy, ello causar un error en tiempo de ejecucin.

SQLWindows

95

Ejercicio. En la aplicacin de Control de Clientes ningn objeto tiene formato, asigne los formatos:
1.

RFC: en maysculas, tres letras, 6 dgitos, guin y tres alfanumricos. opcin Format y elija Uppercase, luego elija la opcin Input Mask y teclee AAA999999-NNN, y haga click en la opcin Done.

Localice el data field dfRFC, abra la ventana del customizer, seleccione la

2.

Razn: slo Maysculas. opcin Format y elija Uppercase, luego haga click en la opcin Done.

Localice el data field dfRazon, abra la ventana del customizer, seleccione la


3.

Telfono: slo nmeros, tres dgitos, guin, cuatro dgitos. la opcin Input Mask y teclee 999-9999, luego haga click en la opcin Done.

Localice el data field dfTelefono, abra la ventana del customizer, seleccione

4.

Prioridad: Un dgito sin decimales. la opcin Input Mask y teclee 9, luego haga click en la opcin Done.

Localice el data field dfPrioridad, abra la ventana del customizer, seleccione


5.

Fecha: en el formato da-mes-ao, con dos dgitos para cada dato. opcin Format y teclee dd-MM-yy, luego elija la opcin Input Mask y teclee 99-99-99, finalmente haga click en la opcin Done.

Localice el data field dfFecha abra la ventana del customizer, seleccione la

SQLWindows

96

5.2. Validacin.
La validacin automtica puede ahorrar mucho trabajo al programar ya que controla la validez de nmeros y fechas, sin embargo en aplicaciones reales es comn que se necesiten validaciones especificas, as que en una aplicacin se pueden tener objetos con validacin automtica o personalizada o ambas. Conceptos.

Validacin automtica para los objetos del tipo Number o Se dispara al momento de abandonar le objeto de estos tipos. Si existe error en la informacin, SQLWindows no permite En campos numricos cualquier secuencia de caracteres

Date/Time.

abandonar el objeto. numricos es vlida. Si hay algn caracter alfabtico en la captura se despliega un mensaje.

5.2.1. Validacin Automtica. Para campos de fecha/hora se efectan los siguientes pasos (si se cumple alguno, el campo se acepta). 1. En el WIN.INI seccin [ intl ], se busca la declaracin de fechas cortas. 2. Se verifica por formato largo.
SQLWindows 97

3. Se verifican los formatos estndares de SQL Windows: MM d,yyyy MMM dd,yyyy MMMM d,yyyy MMMM dd,yyyy yyyy,MM-dd d MMMM,yyyy dd MMMM,yyyy

4. Si el campo tiene mscara de fecha, se verifica contra estos formatos. 5. Si no se cumpli ninguno de los pasos anteriores, se enva un mensaje de error.

5.2.2. Validacin Personalizada. La validacin automtica puede ser remplazada por una validacin propia atendiendo el mensaje SAM_Validate. Dependiendo de si fue exitosa o no la validacin personalizada, se debe regresar un VALIDATE_Ok o un VALIDATE_Cancel. Si no se regresa ningn valor, SQLWindows ejecuta la validacin automtica.

SQLWindows

98

Ejemplo: En este ejemplo (vea la imagen ) cuando el usuario teclee en valor en el Data Field y trate de pasar a otro objeto ( con el mouse o la tecla del tabulador ), se enviara el mensaje SAM_Validate, si el valor que tiene dfDescuento no cumple con la condicin se regresa un valor VALIDATE_Cancel, el cual impide que el usuario pase a otro objeto.

Ejercicio. 1. Valide la prioridad entre 0 y 5.


SQLWindows 99

En el Data Field dfPrioridad atienda el mensaje SAM_Validate.

2. Valide que la fecha de alta no sea mayor que la de hoy. En el Data Field dfFechaAlta atienda el mensaje SAM_Validate.

3. Pruebe la aplicacin.

Nota. La funcin SalDateCurrent() proporciona la fecha del cliente, en un sistema real es mejor utilizar la fecha del servidor para que todas las estaciones trabajen con el mismo dato. En el caso SQLBase para obtener la fecha del servidor se debe hacer un query, por ejemplo al momento de conectarse a la base de datos se podra ejecutar:

Call Sqllmmediate(Select distinct SYSDATE from Cliente into :dtFechaHoy)

o bien
Call SqlPrepareAndExecute(hSqlWork, Select distinct SYSDATE from Cliente into :dtFechaHoy)

Call SqlFetchNext(hSqlWork)

SQLWindows

100

En ambos casos Cliente es una tabla que existe en la base de datos, y dfFechaHoy es una variable del tipo DateTime.

Evaluacin.
1. Los objetos que pueden someterse a formato son: _________________ y los ______________________. 2. Los objetos del tipo de String pueden tener un nmero ilimitado de formatos. Cierto Falso
SQLWindows 101

3. Los formatos predeterminados para datos del tipo String _____________, _____________, ______________, _________________. 4. Se pueden definir nuevas mscaras de formato en la ______________ que se encuentra dentro de la ___________________________.

son: y

seccin seccin

5. Cuando se define un formato para nmeros positivos y otro para nmeros negativos se debe utilizar el caracter __________________. 6. Para mscaras de tipo Date/Time slo se pueden utilizar los caracteres / y como separadores. Cierto Falso 7. Cuando se asigna el formato Uppercase a un objeto, no se pueden teclear minsculas en ese objeto. Cierto Falso 8. La diferencia entre usar # usar 0 en una mscara de tipo numrico es que la primera no __________________________ mientras que en el otro caso si. 9. Para objetos del tipo _______________ y ________________se pueden utilizar validacin automtica. 10. Para todos los objetos se puede utilizar la validacin personalizada. Cierto Falso

11. El

mensaje SAM_Validate lo recibe un objeto cuando: _____ El usuario hace una modificacin al contenido del objeto. _____ El suario pasa a otro objeto con el tabulador o el mouse. _____ El usuario coloca el cursor en el objeto.
SQLWindows 102

12. SQLWindows obliga al usuario a recapturar el dato cuando el objeto regresa un valor ___________________ en atencin del mensaje _______________.
13. En

el caso de no regresar ningn valor al atender el mensaje SAM_Validate, SQLWindows utiliza _______________________.

5. FORMATEO Y VALIDACIN...........................................................................90
5.1. Formateo......................................................................................................................................................90 5.1.1. Objetos tipo cadena............................................................................................................................90 5.1.2. Objetos del tipo Date/Time y Number...............................................................................................90 5.1.3. Input Mask........................................................................................................................................94 5.2. Validacin....................................................................................................................................................97 5.2.1. Validacin Automtica......................................................................................................................97 5.2.2. Validacin Personalizada..................................................................................................................98

SQLWindows

103