by FranciscoA » Wed Sep 15, 2010 11:39 pm
Kleyber, tu código funciona, pero desgraciadamente no es lo que busco. Gracias.
Marcelo, la función que posteaste me ha servido. Ya obtuve el array con palabras completas. Gracias.
El problema se ha extendido y ahora es que no logro devolver ese array. Aqui pongo un código más explícito de lo que estoy haciendo.
//aCtas=array con los Numeros de cuentas, aNombres=array con los nombres de las cuentas.
Function ImpRecapitu(aCtas,aNombres)
REPORT oReport ;
...
//Uso objetos porque se desconoce cant de columnas y cant de lineas del titulo de cada columna.
oReport:AddColumn( TrColumn():New( { {|| "FECHA"} },,;
{ {|| (cAlias)->Fecha } },9,,,,,,,.t.,, oReport ) )
oReport:AddColumn( TrColumn():New( { {|| "CHEQUE" } },,;
{ {|| (cAlias)->cheque } },9,,,,,,,.t.,, oReport ) )
oReport:AddColumn( TrColumn():New( { {|| "BENEFICIARIO" } },,;
{ {|| (cAlias)->Benefi } },30,,,,,,,.t.,, oReport ) )
oReport:AddColumn( TrColumn():New( { {|| "CONCEPTO" } },,;
{ {|| (cAlias)->Concepto } },30,,,,,,,.t.,, oReport ) )
for n := 1 to len(aCtas)
oReport:AddColumn( TrColumn():New( TituCol( n, aCtas,aNombres ) ,,;
{ DatoCol( cAlias, n ) },10,;
{ "@Z( 9,999,999,999.99"},,.t.,,,,.t.,, oReport ) )
next
END REPORT
ACTIVATE REPORT oReport
RETURN NIL
//--------------------------------------------------------//
Static function TituCol( n, aCtas, aNombres )
local aTitu := {}, aTitCol:={}, nX
local cText:=aCtas[n]+Space(8)+aNombres[n] //Aquí creo el texto para extraer las lineas (usando funcion de Marcelo)
/*
//Estos me trabajan bien pero son totalmente anti-estéticos
//RETURN { {|| aCtas[n]},{||Substr(aNombres[n],1,10)},{||Substr(aNombres[n],11,10)},{||Substr(aNombres[n],21,10)},{||Substr(aNombres[n],31,10)} }
aadd(aTitCol,{||aCtas[n]})
aadd(aTitCol,{||Substr(aNombres[n],1,10)})
aadd(aTitCol,{||Substr(aNombres[n],11,10)})
aadd(aTitCol,{||Substr(aNombres[n],21,10)})
aadd(aTitCol,{||Substr(aNombres[n],31,10)})
*/
//Aquí uso la función de Marcelo. Trabaja bien, pero el sistema se me cuelga. (No por la función. No sé por qué)
aTitu:=spaceSplit( cText, 10, )
//Aquí creo los codeblocks según el array devuelto por spaceSplit()
For nX :=1 to len(aTitu)
aadd( aTitCol, {||aTitu[nX]} )
Next
RETURN aTitCol
//El array devuelto debería ser { {|| aTitu1},{|| aTitu2},{|| aTitu3},{|| aTitu4},{|| aTitu5} } //o con -+ codebloks
Saludos
//--------------------------------------------------------// Este trabaja bien
Static function DatoCol( cAlias, n )
RETURN { || ( cAlias )->( FieldGet( n ) ) }
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql