Valores de campos maestros no rellenados y uso de indices...


([N1] rlopez) #1

Saludos al foro,
Tengo la siguiente gran duda que nunca se como solventar correctamente:
Nunca se cómo evaluar si un campo enlazado a una tabla maestra tiene contenido o no. Por ejemplo, tengo una tabla de líneas en la que hay 3 campos de otras tablas maestras que pueden estar rellenados o no.
Quiero saber si esos campos tienen algún valor o si estan “vacios”. Cuál es la forma correcta de evaluar con una instrucción “IF” el contenido de estos campos partiendo de que SIEMPRE el ID de las tablas que utilizo es de tipo numérico:
1- #CAMPO = “”
2- #CAMPO.ID= “”
3- #CAMPO = 0
4- #CAMPO.ID = 0

Segunda cuestion, si tengo un indice de esa tabla compuesto por varios campos que apuntan a tablas maestras, cuyo valor no se ha rellenado, cómo utilizo la instrucción CargarLista(Indice):

  • Para el valor vacío del campo utilizo 0
  • Para el valor vacío del campo utilizo “”
  • Para el valor vacío del campo lo dejo en blanco

??
Llevo mucho tiempo peleandome con este tema, probando diferentes maneras y obteniendo comportamientos extraños en muchas ocasiones… y no consigo saber ni he leido en ninguna parte cómo es la forma correcta de abordar esta situación que por otra parte es más que frecuente que se pueda presentar.

Muchas gracias y un saludo.


([N1] Synetic) #2

Para la primera cuestión tal vez esto te aclare:
http://velneo.es/como-comprobar-campos-vacios/

Para la segunda cuestión dejando el valor vacío te devuelve todos los registros, es decir, no filtra nada por ese índice, solo ordena. No se usa ni 0 ni “”.

Saludos,
Fernando.


([N1] rlopez) #3

Es decir que si quiero obtener una lista en la que uno de esos campos no tiene valor no puedo utilizar la funcion CargarLista con un indice por ese campo. ¿entonces que tendría que utilizar un “filtrar lista”?


([N1] Synetic) #4

En general el uso del “Filtrar lista” no está recomendado dado su bajo rendimiento. Si sabes que van ha ser pocos registros podrías usarlo, pero mejor olvídate de ello.

Si el proceso vas a usarlo frecuentemente con registros que no tienen valor en un campo, lo ideal, es que crees un índice (con la parte de índice que necesites) y en condición para indexar pongas CAMPO:isEmply(). Debe funcionar. Con esto el índice solo contendrá los registros que tienen ese campo vacío.

Es un método, pero existen más maneras para hacer lo mismo: multipartiendo, cestas, etc… pero creo que ese es el más óptimo.

Saludos
Fernando.


([N1] rlopez) #5

Muchas gracias por la idea y por la ayuda.

Un saludo.