Busqueda por un grupo de datos en un mismo campo


([N3] veldevelop) #1

Me estoy rallando con una búsqueda que no doy con la tecla y decido lanzar la pregunta al foro

Actualmente en SQL para mi seria: select * from tabla where grupo in (1,4,9,14,32,60)

Me gustaría saber como puedo trasladar dicha consulta a velneo.
Saludos y Gracias de ante mano.


([N4] sauron911) #2

Esto puedes hacerlo de varias formas, mediante un proceso, puedes recorrer una tabla y cargar en una cesta los que cumplen la condición de estar en dicho conjunto (esto seria en funcion del numero de registros algo lento).
Otra opcion es crear un indice, que este condicionado a este grupo de valores, y luego cargamos una lista por este indice (esto sería más rapido a la hora de cargar)


([N3] pacosatu) #3

Hola Rodolfo.

No existe comando en Velneo equivalente a WHERE <campo> IN (…)
Por lo tanto hay que programarlo.

  • Creas un Índice por el campo GRUPO. Esto es obligatorio porque en Velneo solo se pueden recuperar filas mediante los índices.
  • Defines un proceso para ejecutar en 3º plano. Recibirá la lista de valores (1,4,9,14,32,60) como un String
  • Ejecutas un bucle FOR por la lista de valores (1,4,9,14,32,60)
  • Ejecutas un Cargar lista (TABLA, INDICE_GRUPO, <valor>)
  • Añades la Ficha/Fichas encontrada/s a una Cesta temporal
  • Devuelves la Lista contenida en la Cesta

Saludos
Paco Satué


([N3] finanplan) #4

Buenas tardes

Una manera muy simple, que yo uso muy a menudo, es:

Cargar lista (usando el índice que devuelva el mínimo de registros posibles según tus necesidades)
Filtrar lista (por el campo que requieras)

Los velneadores ortodoxos lo consideran un “pecado mortal”, pero para listas relativamente pequeñas a mi me funciona muy bien.

Saludos.


([N1] RicardoOrts) #5

Pues si, la verdad es que para utilizar un filtrar lista, es adecuado que la lista sea pequeña, porque en el caso de que sea una tabla con muchos registros, te encontraras que se relentiza mucho. Otra forma de hacerlo es lanzar un proceso de busqueda por variable, tantas veces como valores tenga el grupoo, cargar una cesta con el resultado, y al final unir todas las cestas.