Documentaciónbuscar_indice(tabla, campo, val)

buscar_indice(tabla,campo,val)\texttt{buscar\_indice}(tabla, campo, val)

Nombre

buscar_indice - Devuelve el indice del primer registro que coincide con un valor.

Sinopsis

indice = tablas.buscar_indice(tabla, campo, val)

Descripcion

Busca dentro de una TABLA y devuelve el indice del primer registro para el cual tabla[i][campo] == val.

Es util para:

  • ubicar rapidamente una fila antes de leerla o modificarla
  • detectar si una coincidencia existe dentro de la tabla
  • combinar la busqueda con acceso posterior por indice

Comportamiento

  • Recorre la tabla desde el primer registro hasta el ultimo.
  • Si encuentra una coincidencia, retorna su indice BLOX.
  • Si no encuentra coincidencias, retorna 0.

Funciones API relacionadas

  • tablas.buscar()
  • tablas.buscar_todos()
  • tablas.buscar_por_valor()
  • tablas.buscar_indices()
  • tablas.buscar_primero_por_valor()
  • tablas.filtrar()

Parámetros

ParámetroTipoDescripción
tablaTABLATabla donde buscar.
campoSTRINGCampo a comparar.
valANYValor buscado.

Valor de retorno

NUMERICO - Indice BLOX del primer registro coincidente, o 0 si no hay coincidencias.

Ejemplo

ejemplo.blox
INCLUIR "tablas.api"

FUNCION PRINCIPAL
INICIO

	TABLA  amigos
	NUMERICO i, idx
	STRING campo, valor


    amigos = {
        nombre = "Carlos",
        edad = 30,
        ciudad = "Asuncion"
    }
    amigos = {
        nombre = "Juan",
        edad = 21,
        ciudad = "Encarnacion"
    }
    amigos = {
        nombre = "Roberto",
        edad = 45
        ciudad = "Concepcion"
    }
    amigos = {
        nombre = "Maria",
        edad = 19
        ciudad = "Concepcion"
        email = "Maria@pseudo.com"
    }


//
// Testado OK
//
//
// Busca un registro en una tabla. Recibe campo y valor.
//

    campo = "ciudad"
    valor = "Concepcion"
	idx = tablas.buscar_indice(amigos, campo, valor)

    SI (idx != 0) ENTONCES
        tablas.imprimir(amigos)    
        IMPRIMIR("\nREGISTRO ENCONTRADO:")
        IMPRIMIR(amigos[idx])
    FIN_SI


FINAL