Hay varias cosas que podrás mejorar.
Una es que si usas una Relación no necesitas un filtro.
o si usas un filtro no necesitas una relación (un filtro es mas lento
que una relación)
si lo hiciste por desesperación porque no funciona te entiendo.
Para que sea mas legible el código en vez de usar número de Areas
podes poner directamente el Nombre.
esto puse en el codigo interactivechange:
m.opcion=ALLTRIM(thisform.list1.List[thisform.list1.ListIndex])
&& en variables de memoria podes poner "m." para que no se
confunda con un campo en la tabla
SET FILTER TO vista_cabecera.expediente=opcion IN
vista_cabecera
thisform.grid1.Refresh
&& el ThisForm.Refresh ejecuta el ThisForm.grid1.Refresh.
thisform.Refresh
&& con el ThisForm.grid1.Refresh te tiene que alcanzar.
esto en el init de mi form:
SET DATE TO FRENCH podes
usarlo en el arranque del sistema y no tenes que llamarlo en todo el
sistema
PUBLIC expe
La variables usadas en un Form podes definirlas como propiedades del
Form para que no
PUBLIC opcion se
mezclen con otros Formularios o programas abiertos.
OPEN DATABASE sigedato.dbc
USE vista_todos IN 0 again alias "vista_todos" Al poner IN 0
el programa elije un área libre.
USE vista_cabecera IN 0 pero
Vos referencias con el nombre que elegiste.
USE vista_observaciones IN 0
INDEX on expediente tag expe IN vista_observaciones
SET ORDER TO expe IN vista_observaciones
SELECT vista_cabecera
SET RELATION TO vista_cabecera.expediente INTO
vista_observaciones additive
thisform.Refresh
el init del Form hace un Show que Refresca la pantalla no lo
necesitas.
----------------------------------------------------------------------------------------
Fijate el tipo y ancho de los campos "expediente" si hay una
diferencia de largo puede no relacionar.
Como está definido en el ListBox los campos ControlSource, RowSource y
RowSourceType
estos deberían apuntar a la tabla vista_observaciones para que sea
vean los datos.