[RESUELTO] FunctionAccess se comporta diferente en OO/LO

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] FunctionAccess se comporta diferente en OO/LO

Notapor ifanlo » Sab Dic 05, 2015 11:56 am

Hola, amigos!

Me gustaría entender que pasa con el siguiente código:
Código: Seleccionar todo   Expandir vistaContraer vista
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
ifanlo
 
Mensajes: 420
Registrado: Lun Mar 30, 2009 10:32 am

Re: FunctionAccess se comporta diferente en OO/LO

Notapor SLV-es » Sab Dic 05, 2015 1:58 pm

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
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: FunctionAccess se comporta diferente en OO/LO

Notapor mauricio » Sab Dic 05, 2015 3:01 pm

Es eso...
Código: Seleccionar todo   Expandir vistaContraer vista
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
mauricio
 
Mensajes: 5873
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: FunctionAccess se comporta diferente en OO/LO

Notapor ifanlo » Sab Dic 05, 2015 6:08 pm

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
ifanlo
 
Mensajes: 420
Registrado: Lun Mar 30, 2009 10:32 am

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

Notapor SLV-es » Sab Dic 05, 2015 9:22 pm

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
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

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

Notapor ifanlo » Dom Dic 06, 2015 8:09 pm

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   Expandir vistaContraer vista
      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
Avatar de Usuario
ifanlo
 
Mensajes: 420
Registrado: Lun Mar 30, 2009 10:32 am


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados