Saltar al contenido principal
Versión: 20 R7 BETA

Find in field

Find in field ( campoObjetivo ; valor ) : Integer

ParámetroTipoDescripción
campoObjetivoFieldCampo objetivo en el cual ejecutar la búsqueda.
valorField, VariableValor a buscar
Valor encontrado
ResultadoIntegerNúmero del registro encontrado o -1 si no se encontró ningún registro

Descripción

El comando Find in field devuelve el número del primer registro cuyo campoObjetivo es igual a valor.
Si no se encuentran registros, Find in field devuelve -1.

Después de llamar este comando, valor contiene el valor encontrado. Esta funcionalidad le permite efectuar búsquedas utilizando el carácter (“@”) en campos tipo Alfa y luego recuperar el valor encontrado.

Nota: por este principio, no se puede utilizar un parámetro ($1, $2, etc.) en valor porque esto causaría un mal funcionamiento en modo compilado. Del mismo modo, si pasa un campo en el parámetro valor, tenga en cuenta que su valor será reasignado si la consulta tiene éxito (el comando Modified record, en particular, devolverá True para el registro actual de la tabla).

Este comando no modifica la selección actual ni el registro actual.

Este comando es rápido y muy útil para evitar la creación de entradas dobles durante la entrada de datos.

**Nota histórica: en versiones anteriores de 4D, el comando Find in field era llamado Find index key y sólo funcionaba con campos indexados. A partir de 4D v11 SQL, esta limitación se eliminó y el comando se renombró.

Ejemplo 1

En una base de datos de CDs, durante la entrada de datos asumamos que usted quiere verificar el nombre del cantante para ver si ya existe en la base. Como pueden existir homónimos, usted quiere que el campo [Cantante]Nombre sea único. Por lo tanto, en el formulario de entrada, puede escribir el siguiente código en el método de objeto del campo [Cantante]Nombre:

 If(FORM Event=On Data Change)
    $RecNum:=Find in field([Cantante]Nombre;[Cantante]Nombre)
    If($RecNum #-1) // si este nombre ya ha sido introducido
       CONFIRM("Ya existe un cantante con el mismo nombre. ¿Quiere ver el registro?";"Sí";"No")
       If(OK=1)
          GOTO RECORD([Cantante];$RecNum)
       End if
    End if
 End if

Ejemplo 2

Este es un ejemplo que permite verificar la existencia de un valor:

 var $id;$1 : Integer
 $id:=$1
 If(Find in field([MyTable]MyID;$id)>=0)
    $0:=True
 Else
    $0:=False
 End if

Tenga en cuenta >= permite cubrir todos los casos. De hecho, la función devuelve un número de registro y el primer registro tiene el número 0.