>No creo que existe una forma muy practica de hacerlo, pero siempre que el contenido del controlSource tenga un punto "." se refiere a una campo de tabla, claro si no es "m.".
>
En realidad, hay muchas cosas que puedes usar como ControlSource que pueden contener un punto, como por ejemplo "thisform.Propiedad", o cualquier otra referencia a una jerarquía de objetos.
Tal vez te sirva hacer esto, en una función o método:
- Si hay más de un punto (como en "thisform.Container.propiedad"), ya sabes que no es un campo
- Si hay sólo uno, extraes la parte anterior al mismo, y recorres los alias abiertos en la DataSession activa (con aUsed()), y comparas para ver si coincide con uno de ellos. Si encuentras una coincidencia, recorres los campos de esa tabla abierta (con aFields()) y lo comparas contra la porción del ControlSource posterior al punto. Si tienes una coincidencia, ya sabes que se trata de un campo.
- Si no hay punto, te basta recorrer los campos de la tabla activa y ver si coincide. Claro que esta no es una manera recomendable de indicar un ControlSource, pero si quieres contemplarla, basta con esto.
Saludos,