Problema al añadir una ficha en memoria a una cesta


([N2] fermin3f) #1

Buenos días.

No se que estoy haciendo mal pero no acaba de funcionar.

La idea en principio es muy simple. Quiero que un comboview me sirva de filtro y que ademas de la lista de la tabla maestra, aparezca la ficha “cualquiera”

Ese comboview lo alimento desde un manejador de evento.

Para ello creo una cesta con la tabla maestra y creo una ficha en memoria con el campo name “cualquiera”.

El problema reside en que esa ficha creada en memoria soy incapaz de añadirla a la cesta.

Adjunto la imagen del manejador de evento por si alguien sabe donde está el problema.



([N2] fermin3f) #2

Adjunto imagen



([N4] gontorre) #3

Buenos días fermin

Por lo que tengo entendido una cesta sólo almacena los punteros a los registros originales de la tabla. Por eso me imagino que no se puede añadir a una cesta un registro que no está en la tabla.

No tengo mucha experiencia aún, así que corregidme si estoy equivocado.

Un saludo


([N4] gontorre) #4

Se me ocurren dos posibles soluciones:

  • Crear una tabla en memoria en la que cargas los registros del maestro y el registro “Cualquiera”. Habrá que ver cómo se gestiona el tema del los IDs para que te funcione el filtro.

  • Modificar la búsqueda para que si dejas el filtro en blanco te muestre todo. De esta forma te ahorras el “Cualquiera”

Espero que te sirva como idea.

Un saludo


([N2] fermin3f) #5

Gracias Gontorre

Ahora que lo dices, también yo he leído que las cestas son punteros a la tabla y por tanto tiene todo el sentido que no añada la ficha en memoria ya que no existe en la tabla.

Lo había hecho anteriormente como dices tú en la primera opción. Creo una tabla “paralela” a la tabla maestra en memoria y la lleno con las fichas que quiero pero me había obcecado en hacerlo con cestas.

Gracias por todo.


([N3] pacosatu) #6

Hola fermin3f.

Como dice gontorre las listas solo almacenan los punteros de los registros.

En lugar de andar con cestas o tablas en memoria, te propongo resolverlo de la siguiente manera:

  • Añade a la tabla maestra un nuevo campo booleano denominado “campofiltro”
  • Añade a la tabla maestra un nuevo registro cuyo NAME sea " cualquiera" y pon a 1 el campo “campofiltro”
  • Modifica el Índice que usas en los formularios de entrada de datos para que no incluya los registros cuyo “campofiltro” = 1
  • Añade un nuevo Índice TODOSREG que incluya todos los registros incluídos los que tienen “campofiltro” = 1

Así en los formularios de Búsqueda que necesites rellenar un combo o acceder al maestro solo tendrás que usar el índice TODOSREG para que aparezcan también los registros con “campofiltro” = 1.

Observa que el campo NAME = " cualquiera" he puesto un espacio delante para que lo ordene en primer lugar.

Aparte del registro " cualquiera" puedes añadir otros valores que tengan un significado en tus búsquedas, por ejemplo, “impares”, “nulos”, …

Jugando con los Índices estarás creando Filtros directamente activos cuando consultas la tabla sin necesidad de usar tablas temporales ni mucho menos cestas.

Saludos
Paco satué


([N2] fermin3f) #7

Esto figurará entre mis ASTUCIAS preferidas

Simplemente una genialidad, sencilla y potente MUY POTENTE.

GRACIAS PACO