Eslopes
6 de septiembre de 2026, 12:27
DataGrid enlazado a un fichero indexado: no cargaba los datos (1.65.23)
Un DataGrid enlazado a un fichero indexado debe rellenarse por sí solo en el momento en que se carga el formulario: un origen indexado no tiene ningún paso de relleno que esperar, de modo que no hace falta llamar a RefreshBinding(). En la práctica la rejilla aparecía vacía.
Causa
El enlace guarda dos rutas, y el diseñador guarda las dos relativas al proyecto:
el fichero .cidx indicado en el propio enlace;
el fichero de datos indicado en el assign-path de ese .cidx.
El runtime entregaba cada una directamente al sistema de ficheros, así que el sistema operativo las resolvía respecto al directorio de trabajo del proceso. Ese directorio nunca es la raíz del proyecto: el IDE lanza rcrun run-form con su propio directorio, y una aplicación compilada se ejecuta desde bin/. El mismo fichero que el navegador de ficheros indexados lee sin problema (siempre lo ha resuelto respecto al proyecto) sencillamente no estaba allí, y el refresco lo informaba con honestidad: vaciando la rejilla.
Corrección
Las dos rutas pasan ahora por el mismo anclaje de proyecto que ya usa cualquier otra ruta almacenada, establecido al arrancar por el IDE, por rcrun run-form y por una aplicación compilada. Una ruta absoluta sigue pasando sin tocarse, y una ruta relativa que no exista bajo el anclaje conserva el comportamiento anterior, así que nada de lo que funcionaba antes cambia.
Comportamiento observable
Un enlace indexado hacia un DataGrid ya no necesita código alguno: al abrir el formulario la rejilla aparece con los registros del fichero, en orden de clave primaria. Para volver a leer el fichero (por ejemplo, si otro programa ha escrito registros mientras el formulario estaba abierto), RefreshBinding() devuelve cuántos registros ha colocado:
WORKING-STORAGE SECTION.
01 WS-ROW-COUNT PIC 9(9).
PROCEDURE DIVISION.
MOVE DataGrid-1::RefreshBinding() TO WS-ROW-COUNT
DISPLAY "Rows loaded: " WS-ROW-COUNT.
Documentación: PowerRustCOBOL Developer's Guide (https://github.com/CloudLandBeta/PowerRustCOBOL/blob/main/docs/developers-guide-en.md)
Anthropic Claude Codex Agent
Un DataGrid enlazado a un fichero indexado debe rellenarse por sí solo en el momento en que se carga el formulario: un origen indexado no tiene ningún paso de relleno que esperar, de modo que no hace falta llamar a RefreshBinding(). En la práctica la rejilla aparecía vacía.
Causa
El enlace guarda dos rutas, y el diseñador guarda las dos relativas al proyecto:
el fichero .cidx indicado en el propio enlace;
el fichero de datos indicado en el assign-path de ese .cidx.
El runtime entregaba cada una directamente al sistema de ficheros, así que el sistema operativo las resolvía respecto al directorio de trabajo del proceso. Ese directorio nunca es la raíz del proyecto: el IDE lanza rcrun run-form con su propio directorio, y una aplicación compilada se ejecuta desde bin/. El mismo fichero que el navegador de ficheros indexados lee sin problema (siempre lo ha resuelto respecto al proyecto) sencillamente no estaba allí, y el refresco lo informaba con honestidad: vaciando la rejilla.
Corrección
Las dos rutas pasan ahora por el mismo anclaje de proyecto que ya usa cualquier otra ruta almacenada, establecido al arrancar por el IDE, por rcrun run-form y por una aplicación compilada. Una ruta absoluta sigue pasando sin tocarse, y una ruta relativa que no exista bajo el anclaje conserva el comportamiento anterior, así que nada de lo que funcionaba antes cambia.
Comportamiento observable
Un enlace indexado hacia un DataGrid ya no necesita código alguno: al abrir el formulario la rejilla aparece con los registros del fichero, en orden de clave primaria. Para volver a leer el fichero (por ejemplo, si otro programa ha escrito registros mientras el formulario estaba abierto), RefreshBinding() devuelve cuántos registros ha colocado:
WORKING-STORAGE SECTION.
01 WS-ROW-COUNT PIC 9(9).
PROCEDURE DIVISION.
MOVE DataGrid-1::RefreshBinding() TO WS-ROW-COUNT
DISPLAY "Rows loaded: " WS-ROW-COUNT.
Documentación: PowerRustCOBOL Developer's Guide (https://github.com/CloudLandBeta/PowerRustCOBOL/blob/main/docs/developers-guide-en.md)
Anthropic Claude Codex Agent