tengo un codigo que hace esta generacion ciclica de hojas de calculo.
http://www.slideshare.net/jza/programacion-de-bases-de-datos-en-ooobasic/
en la diapositiva 9
While Result.next()
oDoc.getSheets().insertNewByName(x,1)
oSheets(1).getCellbyPosition(2,2).SetString(Result.getString(z))
Wend oCon.close()
On Thu, 07 Aug 2008 12:58:57 -0500, Mauricio Baeza
<[EMAIL PROTECTED]> wrote:
Veamos...
Creo una hoja nueva que tienes tres hojas
A) Hoja1(0), Hoja2(1) y Hoja3(2)
Los números entre parentesis son sus indices, es decir, la posición que
se
maneja desde OOo Basic, ejectuamos las ordenes en el orden que dices,
primero, intentamos mover a la posicion 4, ojo, que no existe
ThisComponent.getSheets().moveByName( "Hoja1", 4 )
Con lo que resulta
B) Hoja2(0) Hoja3(1) Hoja3_2(2) Hoja1(3)
Como veras, movio la "Hoja1" a la posicion 3, pero inserto una copia de
la
"Hoja3" como "Hoja3_2", lo cual no me parece correcto, despues dices...
ThisComponent.getSheets().moveByName( "Hoja1", 2 )
Y nos quedan las hojas correctamente
C) Hoja2(0) Hoja3(1) Hoja1(2) Hoja3_2(3)
Luego:
ThisComponent.getSheets().moveByName( "Hoja1", 1 )
E) Hoja2(0) Hoja1(1) Hoja3(2) Hoja3_2(3)
Depues
ThisComponent.getSheets().moveByName( "Hoja1", 0 )
F) Hoja1(0) Hoja2(1) Hoja3(2) Hoja3_2(3)
Luego, de nuevo a la posicion 4, ojo, esta posicion sigue sin existir
ThisComponent.getSheets().moveByName( "Hoja1", 4 )
G) Hoja2(0) Hoja3(1) Hoja3_2(2) Hoja1(3)
Simplemente la mueve al final, que es lo menos que esperaria cuando se le
pasa una posicion que no exista, por ultimo, hacemos..
ThisComponent.getSheets().moveByName( "Hoja1", 1 )
Que deja las hojas
H) Hoja2(0) Hoja1(1) Hoja3(2) Hoja3_2(3)
Resumiendo
A) Correcto
B) Incorrecto, crea una hoja que no pedimos y posicion al final las hojas
C) Correcto
D) Correcto
E) Correcto
F) Correcto
G) Incorrecto/correcto, es decir, no mueve a la posicion que queriamos,
por
que no existe, pero me parece correcto que por lo menos te la deje al
final
y no te provoque un error, por supuesto, esto pasa por que ya no tenemos
las
3 hojas iniciales, sino 4, con la que se creo en el paso B
H) Correcto
Como podemos observar, las unicas inconsistencias se suceden cuando
queremos
mover una hoja existente a una posición inexistente, en todas mis
pruebas a
resultado que:
Si Posicion es mayor al número de hojas, la aplicación falla, en una de
tantas pruebas el archivo me lo recupero solo con las insertadas, por lo
que
especulo que al insertar las nuevas hojas es donde falla, de hecho, creo
que
esto no" deberia" de hacerlo
Si Posicion es igual o menor al número de hojas, lo hace correctamente,
de
ahí la importancia de validar siempre que Posicion sea menor o igual al
número de hojas
If Posicion <= oHojas.getCount() Then
Tal vez te estes confundiendo con la posicion visual y la posicion
interna
(index), este, siempre empieza en cero...
Saludos
Mauricio
El 7 de agosto de 2008 1:31, francisco f. <[EMAIL PROTECTED]>
escribió:
El Miércoles, 6 de Agosto de 2008 20:57, Mauricio Baeza escribió:
> Hola...
>
> No entiendo cuando dices que a vece empieza en 0 y a veces en 1, eso
no
he
> podido reproducirlo,
>
> tienes alguna linea de codigo para comprobarlo?
>
> Gracias y saludos
>
> Mauricio
En una hoja nueva ejecutas la orden esta dichosa
ThisComponent.getSheets().moveByName( "Hoja1", 4 )
te pasa la hoja 1 a la posicion cuatro, cuando deberia ser la 5 ya que
se
empieza desde 0
cambias la posicion a la 2
ThisComponent.getSheets().moveByName( "Hoja1", 2 )
te pasa la hoja a la posicion 2 cuando deberia ser la 3
luego pasas la hoja a 1
ThisComponent.getSheets().moveByName( "Hoja1", 1 )
y pasa la hoja al principio
si luego haces posicion 0
ThisComponent.getSheets().moveByName( "Hoja1", 0 )
deja la hoja como esta
luego pones
ThisComponent.getSheets().moveByName( "Hoja1", 4 )
la pasa a posicion 4, que seria internamente la 3
y si ya pones otra vez a posicion 1
ThisComponent.getSheets().moveByName( "Hoja1", 1 )
te deja la hoja en posicion 2
si te das cuenta, despues de todo este lio
que con la misma orden de mover a posicion 1
te deja la hoja en dos posiciones distintas.
Con lo cual la numeracion ¿empieza en o ó en 1?
Fallar seguro que falla
acabo de releer lo que he escrito y casi no me entero de lo que pone.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
Alexandro Colorado
CoLeader of OpenOffice.org ES
http://es.openoffice.org
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]