[RESUELTO] FunctionAccess se comporta diferente en OO/LO

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Avatar de Usuario
ifanlo
Mensajes: 420
Registrado: Lun Mar 30, 2009 10:32 am

[RESUELTO] FunctionAccess se comporta diferente en OO/LO

Mensaje por ifanlo »

Hola, amigos!

Me gustaría entender que pasa con el siguiente código:

Código: Seleccionar todo

sub testFuncionCalc
Dim mDatos
 	mDatos = Array( "05/12/2015", 2)
	msgbox FuncionCalc( "WEEKDAY", mDatos )  'Debe devolver 6 (sábado)
end sub

Function FuncionCalc( Nombre As String, Datos() )
  ' Esta función permite llamar a una función de Calc por su nombre en Inglés	
	Dim oSFA As Object
	oSFA = createUnoService( "com.sun.star.sheet.FunctionAccess" )
	FuncionCalc = oSFA.callFunction( Nombre, Datos() )
End Function
En LibreOffice funciona a la perfección pero en OpenOffice me muestra un hermoso "Se ha producido una excepción. Type: com.sun.star.lang.IllegalArgumentException".

He revisado la documentación por si encontraba lo que falla pero no sé verlo. ¿Alguna idea?

Gracias,
Última edición por mauricio el Sab Dic 05, 2015 7:42 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
Ismael Fanlo

*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: FunctionAccess se comporta diferente en OO/LO

Mensaje por SLV-es »

La documentación de AOO dice que la fecha debe ser un número. ¿será eso?

https://wiki.openoffice.org/wiki/Docume ... Y_function
 Editado: El ejemplo pasa la fecha como cadena, pero en formato yyyy-mm-dd. Igual va a ser esto en lugar de lo otro 
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: FunctionAccess se comporta diferente en OO/LO

Mensaje por mauricio »

Es eso...

Código: Seleccionar todo

mDatos = Array(CLng(DateSerial(2015,12,5)), 2)
Un abrazo a ambos...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
ifanlo
Mensajes: 420
Registrado: Lun Mar 30, 2009 10:32 am

Re: FunctionAccess se comporta diferente en OO/LO

Mensaje por ifanlo »

Gracias, amigos!

Salva, ¿dónde dice eso? que no sé verlo en el enlace que me pasas.

Lo más aproximado que encuentro es "returns the day of the week that date falls on, as a number", pero entiendo que el "as a number" se refiere al resultado devuelto por la función. Mi anglo-analfabetismo también puede ser un factor.

Pero, efectivamente si le pasas la fecha como "aaaa-mm-dd" lo admite.

Luego, el truco que muestra Mauricio de convertir a Long la fecha, también funciona perfectamente.

Pero no me diréis que está bien documentado, eh?

Un abrazo,
Ismael Fanlo

*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: [RESUELTO] FunctionAccess se comporta diferente en OO/LO

Mensaje por SLV-es »

El anglo-analfabetismo y las prisas (pues me llamaban para comer) tienen la culpa. Yo soy inocente :roll:

Efectivamente, leí y traducí mal. El "as a number" se refiere a lo que devuelve la función.

Pero me alegro haber ayudado de alguna forma, aunque la primera fuera un error

the error is not my fault, it's the fault of the British because they speak rare ;) :lol:
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
ifanlo
Mensajes: 420
Registrado: Lun Mar 30, 2009 10:32 am

Re: [RESUELTO] FunctionAccess se comporta diferente en OO/LO

Mensaje por ifanlo »

Aunque puse un ejemplo especialmente estilizado para verlo en el foro, en realidad, esto debe hacerse sobre una fecha que hay en una celda.

Así que la carga del array que se pasa a FunctionAccess ha quedado finalmente como:

Código: Seleccionar todo

		mDatos = Array( CLng( cDate ( oCelda.GetString() ) ), 0 )
		diasemana =  FuncionCalc( "WEEKDAY", mDatos() )
Como la fecha se recupera como String se le aplica doble conversión a Date y a Long para que FunctionAccess no pete.

Al escribir esto pienso que, si recupero el contenido de la celda con GetData en vez de con GetString, igual me ahorro una conversión.

Bueno, muchas gracias por vuestra ayuda. Hasta pronto.
Ismael Fanlo

*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial
Responder