Nuevamente requiero su ayuda: he estado todo el día intentando hacer un script que exporte todos los registros de todas las tablas en CSV delimitado por “|” a un excel con el nombre de la tabla y así obtener una “plantilla” de la base de datos que sea fácil de leer por los usuarios.
He utilizado el tutorial vImp-ExpJS como ejemplo, todavía no consigo ni siquiera acceder a la lista de datos de una tabla.
No logro enlazar el proceso que lee todas y cada una de las tablas del proyecto con la función SetTable() para usar los métodos de la clase VRegisterList
Por favor su ayuda, estoy sumamente perdido y necesito esto pronto.
var theMainProject = theApp.mainProjectInfo();
var list = new VRegisterList(theRoot);
if ( theMainProject )
{
for( var nIndex=0; nIndex < theMainProject.allTableCount(); nIndex++ )
{
if ( tableInfo )
{
var tableName = theMainProject.allTableInfo( nIndex ).name();
var list.SetTable(tableName);
// Montamos la cabecera
for( var field = 0; field < list.fieldCount(); field++ )
{
file += tableInfo.fieldId( field ).toLowerCase() ;
if ( tableInfo.fieldCount() - 1 > field )
file += "|";
}
// Añadimos fin de línea
file += "\n";
// Recorremos la lista montando el fichero
for( var reg=0; reg < list.listSize(); reg++ )
{
var register = list.readAt( reg );
if (register.isOK() )
{
for( var field= 0; field < tableInfo.fieldCount(); field++ )
{
file += register.fieldToString( field );
if ( field < table.fieldCount() - 1 )
file += "|";
}
// Añadimos fin de línea
if ( reg < list.listSize() - 1 )
file += "\n";
}
}
return file;
}
}
for( var nIndex=0; nIndex < theMainProject.allTableCount(); nIndex++ )
{
var tableInfo = theMainProject.allTableInfo( nIndex ).IdRef();
if ( tableInfo )
{
// Montamos la cabecera
for( var field = 0; field < list.fieldCount(); field++ )
{
file += tableInfo.fieldId( field ).toLowerCase() ;
if ( tableInfo.fieldCount() - 1 > field )
file += "|";
}
// Añadimos fin de línea
file += "\n";
Sin embargo no funciona, recibo un error (foto adjunta).
En el fondo, no consigo enlazar la tabla con el TheRegisterList
El paso 2 es el que no logro hacer. Fijate que al hacer list.SetTable(tableInfo.IdRef) me devuelve vacío, y si le pongo IdRef() me da un error. Tengo entendido que IdRef es una función, no una propiedad… a menos que sean dos objetos distintos que se llaman igual.
Como sea, lo que no consigo es, a partir del objeto vTableInfo de una tabla, obtener una lista con sus registros. Luego de eso ya podría continuar
var list = new VRegisterList(theRoot);
for( var nIndex=0; nIndex < theMainProject.allTableCount(); nIndex++ )
{
// Objeto vTableInfo de la tabla
var tableInfo = theMainProject.allTableInfo( nIndex );
Con el idRef de la tabla,
haz un:
`var list = new VRegisterList(theRoot);
list.setTable(idRef);
list.load(“ID”,[]); ->> revisa esto que lo estoy escribiendo de memoria
-> a partir de aquí, recorre cada registro y formatea la línea