Documentaciónbuscar_indices(tabla, campo, valor)

buscar_indices(tabla,campo,valor)\texttt{buscar\_indices}(tabla, campo, valor)

Nombre

buscar_indices - Devuelve todos los indices de los registros que coinciden con un valor.

Sinopsis

info = tablas.buscar_indices(tabla, campo, valor)

Descripcion

Recorre una TABLA y devuelve los indices de todos los registros para los cuales tabla[i][campo] == valor.

Es util para:

  • obtener todas las posiciones donde aparece un valor
  • separar la busqueda del acceso posterior a los registros
  • combinar indices con otras operaciones sobre la tabla original

Comportamiento

  • Verifica que el campo exista y tenga un tipo compatible.
  • Recorre toda la tabla y acumula los indices BLOX coincidentes.
  • Retorna un registro con la cantidad encontrada y un vector de indices.

Funciones API relacionadas

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

Parámetros

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

Valor de retorno

REGISTRO - Registro con cant (cantidad de coincidencias) e indices (vector de indices BLOX).

Ejemplo

ejemplo.blox
INCLUIR "tablas.api"
INCLUIR "strings.api"


FUNCION PRINCIPAL
INICIO

	TABLA  amigos, colegas, ret
	NUMERICO i, val, cant, idx
	STRING campo, valor
    VECTOR indices[]



    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@blox.com"
    }

    colegas ={nombre = "Carlos", email = "carlos@blox.com"}
    colegas ={nombre = "Ana"}
    colegas ={nombre = "Lorena"}




//
// Testado OK
//
// Busca en la tabla "amigos", en el campo "ciudad" las multiples ocurrencias del valor
// "Concepcion". 
// Si lo encuentra, almacena sus indices en un vector. (puede encontrar mas de una 
// ocurrencia). 
// Retorna ese vector y la cantidad de veces que encontro ese valor. 
// {cant = ..., indices = ...}
//

    campo = "ciudad"
    valor = "Concepcion"
    ret   = tablas.buscar_indices(amigos, campo, valor)
            cant    = ret.cant
            indices = ret.indices

    IMPRIMIR ("\n\n\nINDICES - cant = ", cant, "\n")
    DEPURAR(indices)

    PARA i = 0 HASTA cant-1 HACER
        idx = indices[i]
        IMPRIMIR(amigos[idx])
    FIN_PARA


FINAL