Resultados 1 al 5 de 5

Tema: Validación de Fecha

  1. #1
      Forero
    j

    Registrado
    abril de 2017
    Ubicación
    Curico Chile
    Mensajes
    100
    Última visita
    12.12.2023

    Agradecimientos
     
    Recibidos
    3
    Enviados
    26

    Citaciones y menciones
     
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    8

    Predeterminado Validación de Fecha

    Hola, alguien me podría ayudar como validar los ingresos de fechas en powercobolv9,
    ya que este es un dato muy sensible de ingresar en forma errónea.
    Ejemplo, que el día no sea mayor a 30 o 31 según el mes, que el mes no sea mayor 12, etc.

    Favor si alguien me puede ayudar con una rutina de validación

    Saludos

    0 Not allowed!

  2. #2
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,294
    Última visita
    Ayer a las 11:19

    Agradecimientos
     
    Recibidos
    1,040
    Enviados
    888

    Citaciones y menciones
     
    Mentioned
    106 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    31 Post(s)
    Poder de Reputación
    10

    Predeterminado

    @jmeza, el control CmText tiene la opción de parseo de fecha que lo hace todo él solito!

    0 Not allowed!
    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

  3. #3
      Guardián del Foro
    Avatar de Fito

    Registrado
    febrero de 2015
    Ubicación
    Córdoba, Villa María
    Edad
    53
    Mensajes
    414
    Última visita
    Hoy a las 02:25

    Agradecimientos
     
    Recibidos
    208
    Enviados
    226

    Citaciones y menciones
     
    Mentioned
    55 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    3 Post(s)
    Poder de Reputación
    26
    Agradecimientos / Point Value: 0 Guardián del Foro / Point Value: 0 Activista del Foro / Point Value: 0

    Predeterminado

    Hola Amigos:

    Yo siempre usé la fecha en los text como cobol picture zz/zz/zzzz y tengo una rutina de validación hecha por mi para controlarla, teniendo en cuenta bisiestos y todo.

    A raiz de los que dice KUK, me puse a probar el rendertext date. Está muy bueno, porque la validación la hace solo.

    Pero como siempre hay un pero, quiero preguntar, espero haceme entender.

    Para agilizar la carga de las fechas, yo le hago que cuando ingrese el dia y le de enter, automáticamente le complete el mes y año en curso. Tambien si ingresa dia y mes y le da enter completa con el año en curso.

    en el evento Return del textbox (txtFcpfec) hago lo siguente:

    COBOL Código:
    1.  comienzo.
    2.      move "text" of txtFcpfec    to fecha-ing.
    3.      perform completa-fecha.  *> esta es la rutina que completa la fecha
    4.      move fecha-dma    to "text" of txtFcpfec.
    5.          
    6.      perform valida-fecha.
    7.      if error-fecha = 1
    8.         perform fecha-mal
    9.         go sale
    10.      end-if.  
    11.  
    12.      invoke txtFcpfecha "setfocus". *> acá hago foco el text siguiente
    13.  
    14.  sale.
    15.      exit program.
    16.  
    17.  #include "Copys\comunpro.cpy". *> acá tengo todas las rutinas de manejo de fechas

    Acá pego la rutina "completa-fecha".

    COBOL Código:
    1.        completa-fecha.
    2.            move function current-date    to fecha-sis.  *> tomo la fecha de sistema
    3.            if fecha-ing > zeros and < 32     *> acá pregunto si ingresó el dia solamente
    4.               move fecha-ing-2           to fecha-dma-dd
    5.               move fecha-sis-fec-mm      to fecha-dma-mm
    6.               move fecha-sis-fec-aa      to fecha-dma-aa
    7.            else
    8.               if fecha-ing > 31 and < 3113  *> acá pregunto si ingresó dia y mes
    9.                  move fecha-ing-1        to fecha-dma-dd
    10.                  move fecha-ing-2        to fecha-dma-mm
    11.                  move fecha-sis-fec-aa   to fecha-dma-aa
    12.               else
    13.                  move fecha-ing          to fecha-dma
    14.               end-if
    15.            end-if.
    16.            perform dma-to-amd. *> esta rutina simplemente es para dar vuelta la fecha dma a amd

    Acá les pego la working, por si no se entienden las variables

    COBOL Código:
    1.        01  variables-fecha global.
    2.            02 fecha-ing                 pic 9(8).
    3.            02 redefines fecha-ing.
    4.               03                        pic x(4).
    5.               03 fecha-ing-1            pic 99.
    6.               03 fecha-ing-2            pic 99.
    7.  
    8.            02 fecha-sis                 pic x(16).
    9.            02 redefines fecha-sis.
    10.               03 fecha-sis-fec          pic 9(8).
    11.               03 redefines fecha-sis-fec.
    12.                  04 fecha-sis-fec-aa    pic 9999.
    13.                  04 fecha-sis-fec-mm    pic 99.
    14.                  04 fecha-sis-fec-dd    pic 99.
    15.               03 fecha-sis-hora         pic 9(8).
    16.               03 redefines fecha-sis-hora.
    17.                  04 fecha-sis-hora-hh   pic 99.
    18.                  04 fecha-sis-hora-mm   pic 99.
    19.                  04 fecha-sis-hora-ss   pic 99.
    20.                  04 fecha-sis-hora-ms   pic 99.
    21.  
    22.            02 fecha-amd                 pic 9(8).
    23.            02 redefines fecha-amd.
    24.               03 fecha-amd-aa           pic 9999.
    25.               03 fecha-amd-mm           pic 99.
    26.               03 fecha-amd-dd           pic 99.
    27.            02 redefines fecha-amd.
    28.               03 fecha-amd-x            pic x(8).
    29.  
    30.            02 fecha-dma                 pic 9(8).
    31.            02 redefines fecha-dma.
    32.               03 fecha-dma-dd           pic 99.
    33.               03 fecha-dma-mm           pic 99.
    34.               03 fecha-dma-aa           pic 9999.
    35.               03 redefines fecha-dma-aa.
    36.                  04 fecha-century       pic 99.
    37.                  04 fecha-siglo         pic 99.
    38.            02 redefines fecha-dma.
    39.               03 fecha-dma-x            pic x(8).
    40.  
    41.            02 fecha99-amd               pic 9(6).
    42.            02 redefines fecha99-amd.
    43.               03 fecha99-amd-aa         pic 99.
    44.               03 fecha99-amd-mm         pic 99.
    45.               03 fecha99-amd-dd         pic 99.
    46.            02 redefines fecha99-amd.
    47.               03 fecha99-amd-x          pic x(6).
    48.  
    49.            02 fecha99-dma               pic 9(6).
    50.            02 redefines fecha99-dma.
    51.               03 fecha99-dma-dd         pic 99.
    52.               03 fecha99-dma-mm         pic 99.
    53.               03 fecha99-dma-aa         pic 99.
    54.            02 redefines fecha99-dma.
    55.               03 fecha99-dma-x          pic x(6).
    56.  
    57.            02 fecha-4                   pic 9999.
    58.            02 fecha-bisiesto            pic 9999.
    59.  
    60.            02 error-fecha               pic 9.
    61.  
    62.            02 fecha-editada.
    63.               03 fecha-editar           pic zz/zz/zzzz.
    64.      
    65.            02 fecha-inicial             pic 9(8).
    66.            02 fecha-integer             pic 9(8).
    67.            02 fecha-dias                pic s9(8).
    68.            02 fecha-final               pic 9(8).
    69.            02 fecha-1                   pic 9(8).
    70.            02 fecha-2                   pic 9(8).

    Esta es la exlpicación de lo que hago.

    Ahora el problema es que con el text en date, todo esto no lo voy a poder hacer, porque ya me da la fecha "terminada". Si ingreso solo el día, me completa con 010001 y el dia y mes me completa con año 0001.
    Podría controlar que si el año es 0001 lo tomo como que no ingresó año, pero el tema es el mes, cómo diferencio el mes 01, no sé si no le puso mes o realmente puso enero.

    A lo mejor me estoy "liando" mucho como dicen uds, pero no le veo la respuesta. Seguramente es más sencilla de lo que parece.

    Saludos.

    Fito...

    0 Not allowed!

  4. #4
      Forero
    j

    Registrado
    abril de 2017
    Ubicación
    Curico Chile
    Mensajes
    100
    Última visita
    12.12.2023

    Agradecimientos
     
    Recibidos
    3
    Enviados
    26

    Citaciones y menciones
     
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    8

    Predeterminado

    Ok, acostumbrado al rmcobol (dos) que hay que programar todas las validaciones.
    Ahora lo haré con lo que me recomiendan.

    Saludos

    0 Not allowed!

  5. #5
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,294
    Última visita
    Ayer a las 11:19

    Agradecimientos
     
    Recibidos
    1,040
    Enviados
    888

    Citaciones y menciones
     
    Mentioned
    106 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    31 Post(s)
    Poder de Reputación
    10

    Predeterminado

    @Fito, yo nunca he hecho lo que tu haces, pero podrías probar con el evento "KeyPressed". Validando si lo que se ha pulsado es la tecla Enter, miras los valores.

    Es posible que al darle, el control ya ponga el resto, pero puede que no. Pruébalo y nos cuentas.

    0 Not allowed!
    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

Información de Tema

Usuarios Viendo este Tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Temas Similares

  1. [Sintaxis] Formato de Fecha
    Por jmeza en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 1
    Último Mensaje: 03.12.2017, 18:03
  2. [Aporte] DLL de cáculo de fecha y hora
    Por Kuk en el foro Componentes y Librerías
    Respuestas: 2
    Último Mensaje: 11.01.2016, 22:32

Marcadores

Marcadores

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •