Cambiar entre conectores DBMS

Post Reply
sromero
Posts: 13
Joined: 07 Jan 2015, 10:42

Cambiar entre conectores DBMS

Post by sromero »

¿Es posible cambiar ya sea en tiempo de ejecución o mediante el uso de subtipos entre distintos conectores DBMS para una misma entidad?

Básicamente, me gustaría cambiar el conector ORA a TXT para una entidad de base de datos, de modo que sea mas sencillo hacer operaciones con los datos recuperados en la lectura de la misma.

Un saludo

Sergio
luis.vila
Posts: 194
Joined: 17 Sep 2011, 12:46

Re: Cambiar entre conectores DBMS

Post by luis.vila »

Estáticamente es muy sencillo.

Basta tener en el ASN los 2 paths definidos, por ejemplo $DAT (a Oracle) y $LOC (a TXT) y definir una sección ENTITIES

[ENTITIES]
TABLA.MODELO $LOC:TABLA.txt/append

Creo que por defecto usa UTF8.

Así todo irá al path $DEF menos TABLA.

Tienes también el driver SQLite.

Para hacerlo dinámicamente entra en juego las órdenes open/close pero no estoy seguro de que puedas decidir en tiempo de ejecución el Driver. Ni decidir que una tabla cambie de path.

A bote pronto se me ocurre tener TABLA (a Oracle) y una copia llamada TABLA_LOC (en local). Si el retrieve de TABLA te devuelve un error de base de datos, llamar a un servicio que lea de TABLA_LOC y te devuelva todos los datos leídos del fichero. Y para grabar lo mismo.

$status=0 ; se acabaron los problemas
sromero
Posts: 13
Joined: 07 Jan 2015, 10:42

Re: Cambiar entre conectores DBMS

Post by sromero »

El tema es que, si no te entiendo mal, la definición estática hace que para esa tabla se use siempre el conector TXT y yo lo quiero solo en ciertos supuestos porque es una tabla de negocio.

Como por ejemplo recuperar de una búsqueda en bbdd oracle, una serie de registros de dicha tabla, que le muestro al usuario por pantalla

Posteriormente, con un botón EXPORTAR a Excel, aprovecharnos de que esos datos ya se encuentran en una estructura de lista que ofrece el conector TXT,y así agilizar el proceso. Ya que así nos ahorramos formar la cadenas separadas por comas y hacer un pedazo de fildump...


Estaba pensando que lo mismo al definir un subtipo, el dropdown que te permite elegir el conecto DBMS estaría abierto, pero no. Lo que no se es si tiene esa re-dirección definida, si te lo permite.


Lo tenía hecho pasando las ocurrencias a una entidad dummy en otro formulario con putlistitems/occ y getlistitems/occ, pero esto sería mejor sin duda.


PD. la documentación dice,así sin más:

“At runtime, however, you can use path assignments to choose yet another connector for that entity.”

Slds.
luis.vila
Posts: 194
Joined: 17 Sep 2011, 12:46

Re: Cambiar entre conectores DBMS

Post by luis.vila »

Es lo que decía Gianni, en la documentación se usa demasiadas veces dinámicamente cuando no lo es. Les explicamos ejemplos en una reunión y he visto que han ido corrigiendo. Como en ese hilo se están mezclando temas no me quedaba muy claro si era el mismo problema.

Pensaba que querrías guardar datos en local en caso de tener problemas de red para no perder el trabajo del usuario.

Entiendo lo de aprovechar el driver TXT para sacar un CSV pero, realmente, en una tabla hay muchos campos que no quieres que salgan al CSV. Y con una solución así, saldrían todos. Y en un fichero en particular, sin poder elegir el nombre. Tampoco podrías incluir campos de entidades hija. Al final, o acabas creando una vista o pasas por un listado de campos para limitar qué sale al CSV. Además se guardarían en formato plano (estoy pensando en las fechas o los números) y Excel no es muy bueno reconociendo esos formatos.


Por otro lado para la exportación a CSV es suficiente con definir una lista "CAMPO.ENTIDAD=Cabecera;..." y en la entidad principal definir una operación de colección llamada ExportCSV que recorra las ocurrencias llamando a otra operación de ocurrencia que exporte cada línea. Y evaluado en formato NLS para que Excel entienda el punto decimal y las fechas.
El código puede ser genérico e incluso pueden ser includedprocs que estén definidos ya en la librería. Según se va ejecutando el código va engordando el String que contiene el CSV y al final se graba a fichero, o no (si estamos en web puede devolverse directamente).

Yo lo hago así en cada form o DSP con info exportable, se define la lista de lo que es exportable y en un momento dado se le ordena a la tabla que se auto-exporte.

$status=0 ; se acabaron los problemas
Post Reply