lunes, 20 de octubre de 2008

Identificador Unico en tabla extensible sin código

El objetivo de este mini tutorial es crear un identificador único en una tabla extensible que se auto - genere, sin crear código Visual Basic o C#.

Existen dos posibles soluciones, cada una con sus ventajas y desventajas, aquí van

Solución 1

1.- Crear un documento en blanco


2.- Diseñar la siguiente estructura de campos, vamos a poner 2 identificadores, id e id2, la idea es ver las dos soluciones, una en cada id.


3.- Luego creamos una tabla extensible con el grupo, algo así:


4.- El primer Id lo cambiamos a "cuadro de expresión", como se ve en la imagen. Ya explicaré porque.

5.- Ahora entramos en propiedades del cuadro de expresión (id), e ingresamos la siguiente función: position()

Esta función nos indica la ubicación del nodo dentro del grupo.


6.- Presionamos aceptar y automáticamente se cambia el valor del id a 1

7.- Presionamos vista previa, si agregamos más elementos veremos la primera solución funcionando.

Si nuestro objetivo es crear un campo de referencia (como el indicador de filas de Excel) está solución nos viene bien, pero si lo que deseamos es almacenar el campo del correlativo o utilizar el campo id como se muestra acá, la función position() no nos servirá, ya que está sólo funciona en cuadros de expresión... Por lo tanto deberemos leer la solución 2...

Solución 2

1.- Nos vamos a las propiedades del cuadro de texto (id2)

2.- En el valor predeterminado creamos la siguiente función

count(../preceding-sibling::my:grupo)+1


Nota: La función preceding-sibling nos entrega todos los nodos que preceden al nodo actual.


Si ponemos vista previa, tendremos los dos códigos auto numéricos



Saludos.

Francisco Rojas Castro.-

5 comentarios:

Anónimo dijo...

Muchísimas gracias. Es justo lo que estaba buscando ya que no quería introducir código VB.

Gracias!!!!!

cokito dijo...

Hola,

Disculpa que funcion utilizo que no sea position(), ya que estoy trabajando con infopath 2010 y me indica lo siguiente:

Número de argumentos no válido.

-->position(my:intNroDescripcionRE)<--

Miau dijo...

Que tal,

Estoy tratando de utilizar la opción 2 pero cada vez q inserto una fila no hace el número consecutivo. Y si copio y pego el ejemplo el infopath me lo cambia asi "recuento(..) + 1" y si entro y le pido que lo muestre en Xpath sale lo siguiente "count(preceding-sibling../../../..) + 1".
Espero me puedas ayudar!! P.D. el formulario sera plantilla para web en MOSS y es 2007 ambos...Help!!

Ricardo Clementi Aroca dijo...

Siguiendo tu segunda opción, me aparece este error, y no logro entender a que se debe,"../preceding-sibling::my:grupo" no señala a una ruta de acceso de ubicación válida de un campo o grupo.
Agradesco tu pronta Respuesta

Anónimo dijo...

Buenos dias.
QUe funcion se puede utilizar en infopath 2010 ya que la que estas relacionando no funciona en esta version.

muchas gracias