Sabías que (1) …

Hoy os propongo un «juego»…

Se sincero…

¿Sabías que..?

El juego se llama «Sabías que?

¿Sabías que se puede añadir un campo nuevo a una tabla que ya contiene datos y rellenarlo con un valor inicial para los registros que ya existen?

    • Crear el nuevo campo con el valor inicial si es necesario.
    • Añadir un subobjeto Traspaso de campo seleccionando el nuevo campo y rellenando la fórmula con el valor que tendrá inicialmente en los registros existentes.

¿Sabías que los campos Alfa 256 se pueden ordenar sin tener en cuenta mayúsculas/minúsculas, acentos y signos de puntuación?

    • Crear un índice por el campo Alfa 256 con el Modo igual a Campo porción. Establecer la longitud del texto que se incluirá en el índice y la conversión a Alfa 40 para no tener en cuenta mayúsculas/minúsculas, acentos y signos de puntuación.

¿Sabías que no es necesario usar vInstallBuilder si solo queremos actualizar la Aplicación y no es necesario copiar nuevas tablas con datos iniciales?

    • Copiar los ficheros actualizados de los proyectos de aplicación (vca) y de datos (vcd) a la carpeta cajas de vServer (en un sistema Windows 64 es C:/Windows/SysWOW64/config/systemprofile/Velneo/cajas). La subcarpeta donde copiamos los ficheros vca y vcd tiene el mismo nombre que la solución a la que pertenecen.
    • Reinicar la solución desde vAdmin teniendo en cuenta que no puede haber enganches activos en el proyecto de aplicación principal ni en todos los proyectos heredados por la solución.

¿Sabías que el servidor vServer desconectará automáticamente aquellos componentes clientes de edición (vDevelop, vTranslator) y de administración (vAdmin) tras 12 horas sin uso?

    • En el caso de clientes de edición (vDevelop y vTranslator), no se deshará la desprotección de los proyectos, con el fin de permitir enviar los cambios realizados en esa sesión de edición que se ha mantenido abierta e inactiva durante más de 12 horas. En ese caso, para guardar los cambios simplemente deberíamos ejecutar la opción de conexión con el servidor y, una vez restablecida, guardar el proyecto que estábamos editando.

¿Sabías que si un enganche de vClient se ha perdido (por ejemplo un fallo de conexión), el enganche quedará activo en el servidor durante 5 minutos? Este tiempo es configurable.

    • El tiempo de desconexión del enganche es configurable mediante una entrada en el registro o archivo de configuración del servidor. La entrada se llama ConnectionExpiredSeconds y el valor por defecto es 300 segundos. El tiempo debemos indicarlo en segundos y la clave se lee en el arranque del servidor.
      Por ejemplo, en Windows la clave se guarda en HKEY_USERS/.DEFAULT/Software/Velneo/vServer/ConnectionExpiredSeconds para el usuario system.

¿Sabías que cuando instanciamos un Objeto mediante un manejador de objeto podemos dispararlo las veces que queramos en el mismo proceso?

    • El manejador de objeto es local al proceso o manejador en el que se haya declarado.
    • Una vez declarado el manejador, podemos asignar valores a las Variables locales y Disparar el Objeto las veces que queramos.

Por ejemplo, queremos obtener todos los pedidos de las zonas geográficas donde el Usuario es responsable:

Rem ( Declaramos el manejador del objeto Búsqueda )
Crear manejador de objeto ( hBuscar, Búsqueda BUS_PEDIDOS@MiApp_app )

Rem ( Asignamos valor a las variable locales del Objeto)
Set variable local de objeto ( oBuscar, NPERIODO, NPERIODO )
Set variable local de objeto ( oBuscar, NID_TIPO_PED, NID_TIPO_PED )

Rem ( Solo se buscan los pedidos de las Zonas geográficas del Usuario conectado )
Cesta: Crear cesta local ( PEDIDOS@MiApp_dat, cesPedidos )

Rem ( Obtenemos las Zonas geográficas del Usuario )
Cargar lista ( ZONAS_USUARIOS@MiApp_dat, ZONA_USU, NID_USUARIO, , , )
        Rem ( Disparamos la búsqueda tantas veces como Zonas geográficas tenga asignadas el Usuario )
        Rem ( Acumulamos el resultado de las búsquedas en una cesta )
        Recorrer lista sólo lectura
                Set variable local de objeto ( oBuscar, CID_ZONA, #ZONA )
                Disparar objeto ( oBuscar, No aplicable, )
                        Cesta: Agregar lista a la cesta ( cesPedidos )
Rem ( Devolvemos la lista de pedidos )
Cesta: Procesar ( cesPedidos )
Ordenar lista ( #FECHA_ALTA, , , , , )
Invertir lista
Añadir lista a la salida

¿Sabías que las cestas declaradas en un manejador son compartidas con los manejadores que éste llama?

    • Las cestas declaradas en un Manejador del formulario son visibles también desde los Manejadores que se ejecutan desde el Manejador inicial.
    • Hay que ser conscientes de este hecho y en su caso evitar usar el mismo nombre de Cesta en los manejadores de un formulario.

En este ejemplo la cesta cesEmpleados es compartida por el manejador SECUNDARIO llamado por el manejador PRINCIPAL.

Rem ( Manejador PRINCIPAL )
Rem ( ----------------------------------- )
Rem ( Una Cesta creada en un manejador es compartida con los manejadores que éste llama )
Cesta: Crear cesta local ( EMPLEADOS@MiApp_dat, cesEmpleados )
Cargar lista ( EMPLEADOS@MiApp_dat, NAME_TROZOS, "jos", , , )
        Cesta: Agregar lista a la cesta ( cesEmpleados )
Cesta: Procesar ( cesEmpleados )
        Crear manejador de objeto ( oLisEmplados, Rejilla GRD_EMPLEADOS@MiApp_app )
        Añadir lista al objeto ( oLisEmplados )
        Disparar objeto ( oLisEmplados, No aplicable, )

Rem ( Ejecuta un Manejador secundario )
Interfaz: Ejecutar manejador de evento ( SECUNDARIO, )


Rem ( Manejador SECUNDARIO )
Rem ( ----------------------------------- )
Rem ( Si el manejador cesEmpleados ¡¡ya existe!! la cesta en lugar de crearse se reutiliza con los registros que tenga )
Cesta: Crear cesta local ( EMPLEADOS@MiApp_dat, cesEmpleados )
Cargar lista ( EMPLEADOS@MiApp_dat, NAME_TROZOS, "luis", , , )
        Cesta: Agregar lista a la cesta ( cesEmpleados )
Cesta: Procesar ( cesEmpleados )
        Rem ( Aquí obtenemos los Empleados "jos" más los empleados "luis" )
        Crear manejador de objeto ( oLisEmplados, Rejilla GRD_EMPLEADOS@MiApp_app )
        Añadir lista al objeto ( oLisEmplados )
        Disparar objeto ( oLisEmplados, No aplicable, )

Y ahora confiesa… ¿cuántas sabías? 

Déjame un comentario mas abajo y comenzamos el debate.

Paco Satué
correo@pacosatu.es

Es un Ingeniero de Telecomunicación de carrera y un Informático-programador por vocación, que empezó en los 80 con DBase, Clipper y FoxBase. Hasta el año 2012 utilizó Visual Foxpro, pero debido a su abandono por parte de Microsoft tuvo que buscar una herramienta de desarrollo alternativa. La elección fue Velneo porque principalmente es una empresa española con soporte cercano, aparte de un producto moderno y adaptado a las últimas tecnologías Cliente-Servidor en Cloud.

18 Comments
  • Gabri
    Posted at 18:29h, 10 noviembre Responder

    Pues….. 3 de 7.
    Muy buena la de disparar varias veces el mismo objeto.

    Este tipo de «tips» enriquecen…

    Os felicito por las publicaciones.

    Saludos

    • Francisco José Vila Martín
      Posted at 18:33h, 10 noviembre Responder

      Gracias por la parte que me toca… en este caso poca.

      El mérito es del «maestro» Satué que ha aceptado compartir su conocimiento.

      Gracias también por participar.

  • edgardo
    Posted at 18:32h, 10 noviembre Responder

    sabia poco

  • Fernando
    Posted at 18:44h, 10 noviembre Responder

    Ahora se porque a la mañana siguiente tengo el vDevelop desconectado.
    Un saludo.

  • Miguel
    Posted at 19:17h, 10 noviembre Responder

    Muy bueno, necesitamos 300 o 400 ¿Sabias que…? mas.

    Gracias.

  • Oscar Juárez
    Posted at 19:38h, 10 noviembre Responder

    Genial el aporte, muchas gracias

    Un saludo
    Oscar

  • Jose Manuel
    Posted at 21:44h, 10 noviembre Responder

    Muy bueno, de gran utilidad

  • Julio Hoyos Vise
    Posted at 22:36h, 10 noviembre Responder

    Al fin comprendí las Cestas compartidas, GRACIAS!!!

  • Paco Satué
    Posted at 00:41h, 11 noviembre Responder

    Me alegro que os hayan gustado.

    Por supuesto habrá más ….

    Saludos
    Paco Satué

  • Antonio Osorio
    Posted at 01:18h, 11 noviembre Responder

    Muy buenas todas las aportaciones, gracias Paco por compartir conocimiento y a Vila por la página.

  • Jordi Mas
    Posted at 09:48h, 11 noviembre Responder

    Genial Vila!! Muchas Gracias

  • Curiosidades sobre Velneo 20 con nuestro juego ¿Sabías que?
    Posted at 09:03h, 26 enero Responder

    […] Por si te perdiste la primera parte del juego y quieres ganar el primer “quesito” del trivial, aquí te dejo el enlace ¿Sabías que?… Parte 1 […]

  • Eladio Madrigal Azofeifa
    Posted at 16:43h, 21 julio Responder

    Muchas gracias Paco, en readlidad casi todos los puntos son nuevos para mi, me han ayudado mucho a saber porque en algunas ocasiones ocurren algunos eventos que me han parecido extraños.

    Saludos y gracias por compartir tus conocimientos

  • VictorGT
    Posted at 12:22h, 05 octubre Responder

    En el truco de rellenar un campo nuevo con un valor usando «Traspaso de campo», falta decir que debes poner el nombre del nuevo campo en los dos sitios, «Nombre campo nuevo» y «Nombre campo viejo». Si lo pones solo en «Nombre campo nuevo» NO funciona. Yo añadiria esto.

    Je, je, acabo de probarlo. Uso la v 18.1.

    Saludos

  • Paco Satué
    Posted at 22:51h, 11 octubre Responder

    Hola Víctor.

    En las versiones 2x solo es necesario rellenar el «Nombre campo nuevo».
    Comprobado.

    Saludos
    Paco Satué

  • Ricardo Orts
    Posted at 14:34h, 07 diciembre Responder

    Pues yo sabia 5 de 7, la de los tiempos nunca he conseguido saberlo a ciencia cierta como funcionaban. Gracias

Post A Comment

Información básica sobre Protección de Datos: Responsable: Francisco José Vila Martín. Finalidad: Gestionar y moderar los comentarios. Legitimación: Tu consentimiento. Destinatarios: Tus datos se alojarán en los servidores de Web Empresa S.L. (UE). Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos, así como otros derechos, como se explica en la información adicional. Información adicional: Puedes consultar la información adicional y detallada sobre protección de datos personales en mi Política de Privacidad.

Pin It on Pinterest