Diferencia en versiones de referencias

11/11/2003 - 13:13 por Eva Etxebeste | Informe spam
Hola a Todos

En el grupo de Access se ha planteado un problema que yo sufrí también hace
algún tiempo y no supe como resolver.

Escenario:

Máquina de desarrollo: con Office 2000
Máquinas de explotación: Office 2000

Aplicación Access 2000 que utiliza la referencia "Microsoft word 9.0 object
Lybrary"

En la máquina de desarrollo se instala Office XP, la referencia "Microsoft
word 9.0 object Lybrary" es sustituida por "Microsoft word 10.0 object
Lybrary". Al distribuir la aplicación al resto de máquinas, pete total.

Solución adoptada hasta el momento: Abrir la aplicación en una máquina con
Office 2000, quitar la referencia 10.0 y marcar la 9.0

¿Habría alguna forma menos rupestre de arreglar el entuerto?

Gracias
Eva Etxebeste
[MS MVP]

Preguntas similare

Leer las respuestas

#1 Pilar Mueckay [MS MVP]
11/11/2003 - 15:33 | Informe spam
Hola Darling!,

Pues es un eterno tema de conflicto entre versiones. No tengo ni he
encontrado una respuesta satisfactoria.

Lo único que he experimentado es "extra trabajo" del lado del desarrollador:
en el código usar un late-binding que identifique la versión de la
biblioteca en la PC donde se ejecuta el código. Como no es mi área :-) no
puedo asegurarte si el Procedimiento ReferenceOffice verifica si está
instalada y usa esa versión de la biblioteca en la máquina "explotada" :-) o
incluso poderla crear automáticamente si fuese necesario. O bien, usar las
funciones GetObject o CreateObject. Creo que mejor ayuda sobre esto te
pueden dar nuestros amigos de VBA :-), ya que yo puedo estar desvariando.
pues mi experiencia es en Outlook y Excel más que en Access :-)

Para el resto del foro voy a ser más explicativa:

Binding significa exponer qué versión de modelo de objeto tiene el cliente
(el explotado, ¡uy!). Ahora bien, hay una diferencia entre "early binding" y
"late binding". Ya sabemos que a los ITs, y no refiero a los ETs, les gustan
las etiquetas difíciles. En este caso "early binding" es simplemente
seleccionar la biblioteca manualmente en el editor VBA vía menú Herramientas
| Referencias. Y "late binding" es simplemente en el código es *asegurar* la
biblioteca objeto en el proceso de run time; no se usa Herramientas |
Referencias, sino funciones específicas. Las diferencias también las vemos
en la ejecución: obviamente late-binding es más lento, pero tiene una
ventaja única: no importa qué versión tenga el usuario instalada. VBA usará
el nombre de la clase que le proporciona las funciones GetObject o
CreateObject (supongo que habrá Access_Application ¿no? bueno dije que no
era mi área).

No sé como los libros VBA traducen estos términos.

Coméntanos,

menteAtenta,
Pilar Mueckay (GMT-05:00)
MS Office MVP


"Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
news:
Hola a Todos

En el grupo de Access se ha planteado un problema que yo sufrí también


hace
algún tiempo y no supe como resolver.

Escenario:

Máquina de desarrollo: con Office 2000
Máquinas de explotación: Office 2000

Aplicación Access 2000 que utiliza la referencia "Microsoft word 9.0


object
Lybrary"

En la máquina de desarrollo se instala Office XP, la referencia "Microsoft
word 9.0 object Lybrary" es sustituida por "Microsoft word 10.0 object
Lybrary". Al distribuir la aplicación al resto de máquinas, pete total.

Solución adoptada hasta el momento: Abrir la aplicación en una máquina con
Office 2000, quitar la referencia 10.0 y marcar la 9.0

¿Habría alguna forma menos rupestre de arreglar el entuerto?

Gracias
Eva Etxebeste
[MS MVP]


Respuesta Responder a este mensaje
#2 Eva Etxebeste
11/11/2003 - 15:36 | Informe spam
Hola Pilar :))

Pues sí, la única solución "contradespistes" que hemos visto es la que
expones. Con tantas versiones conviviendo, creo que tendremos que adoptar
este método por narices.

Muchas gracias
Eva Etxebeste
[MS MVP]

"Pilar Mueckay [MS MVP]" escribió en el mensaje
news:
Hola Darling!,

Pues es un eterno tema de conflicto entre versiones. No tengo ni he
encontrado una respuesta satisfactoria.

Lo único que he experimentado es "extra trabajo" del lado del


desarrollador:
en el código usar un late-binding que identifique la versión de la
biblioteca en la PC donde se ejecuta el código. Como no es mi área :-) no
puedo asegurarte si el Procedimiento ReferenceOffice verifica si está
instalada y usa esa versión de la biblioteca en la máquina "explotada" :-)


o
incluso poderla crear automáticamente si fuese necesario. O bien, usar las
funciones GetObject o CreateObject. Creo que mejor ayuda sobre esto te
pueden dar nuestros amigos de VBA :-), ya que yo puedo estar desvariando.
pues mi experiencia es en Outlook y Excel más que en Access :-)

Para el resto del foro voy a ser más explicativa:

Binding significa exponer qué versión de modelo de objeto tiene el cliente
(el explotado, ¡uy!). Ahora bien, hay una diferencia entre "early binding"


y
"late binding". Ya sabemos que a los ITs, y no refiero a los ETs, les


gustan
las etiquetas difíciles. En este caso "early binding" es simplemente
seleccionar la biblioteca manualmente en el editor VBA vía menú


Herramientas
| Referencias. Y "late binding" es simplemente en el código es *asegurar*


la
biblioteca objeto en el proceso de run time; no se usa Herramientas |
Referencias, sino funciones específicas. Las diferencias también las vemos
en la ejecución: obviamente late-binding es más lento, pero tiene una
ventaja única: no importa qué versión tenga el usuario instalada. VBA


usará
el nombre de la clase que le proporciona las funciones GetObject o
CreateObject (supongo que habrá Access_Application ¿no? bueno dije que no
era mi área).

No sé como los libros VBA traducen estos términos.

Coméntanos,

menteAtenta,
Pilar Mueckay (GMT-05:00)
MS Office MVP


"Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
news:
> Hola a Todos
>
> En el grupo de Access se ha planteado un problema que yo sufrí también
hace
> algún tiempo y no supe como resolver.
>
> Escenario:
>
> Máquina de desarrollo: con Office 2000
> Máquinas de explotación: Office 2000
>
> Aplicación Access 2000 que utiliza la referencia "Microsoft word 9.0
object
> Lybrary"
>
> En la máquina de desarrollo se instala Office XP, la referencia


"Microsoft
> word 9.0 object Lybrary" es sustituida por "Microsoft word 10.0 object
> Lybrary". Al distribuir la aplicación al resto de máquinas, pete total.
>
> Solución adoptada hasta el momento: Abrir la aplicación en una máquina


con
> Office 2000, quitar la referencia 10.0 y marcar la 9.0
>
> ¿Habría alguna forma menos rupestre de arreglar el entuerto?
>
> Gracias
> Eva Etxebeste
> [MS MVP]
>
>


Respuesta Responder a este mensaje
#3 CarCar
11/11/2003 - 15:55 | Informe spam
He contestado esto en el grupo de Access... y me va MUY
bien.

Una manera de no tener que tocar el código es utilizando
objetos ya que estos serán independientes de la
referencia... algo así como:

Dim WordAp As Object
Dim DocWord As Object

Set WordAp = CreateObject("Word.Application")
Set DocWord = WordAp.Application.Documents.Open
("c:\prueba.doc")


Sólo pierdes funcionalidad a la hora de programar, pues
pierdes las opciones detrás del punto... aunque siempre
puedes tener definidos los objetos como objetos Word, y al
terminar, sólo tienes que cambiar los "Set".

Saludos,
CarCar
MVP-Access


Hola a Todos

En el grupo de Access se ha planteado un problema que yo


sufrí también hace
algún tiempo y no supe como resolver.

Escenario:

Máquina de desarrollo: con Office 2000
Máquinas de explotación: Office 2000

Aplicación Access 2000 que utiliza la


referencia "Microsoft word 9.0 object
Lybrary"

En la máquina de desarrollo se instala Office XP, la


referencia "Microsoft
word 9.0 object Lybrary" es sustituida por "Microsoft


word 10.0 object
Lybrary". Al distribuir la aplicación al resto de


máquinas, pete total.

Solución adoptada hasta el momento: Abrir la aplicación


en una máquina con
Office 2000, quitar la referencia 10.0 y marcar la 9.0

¿Habría alguna forma menos rupestre de arreglar el


entuerto?

Gracias
Eva Etxebeste
[MS MVP]


.

Respuesta Responder a este mensaje
#4 Pilar Mueckay [MS MVP]
11/11/2003 - 16:20 | Informe spam
Ah gracias Car-Car veo que es igual que en Outlook :-)

menteAtenta,
Pilar Mueckay (GMT-05:00)
MS Office MVP


"CarCar" escribió en el mensaje
news:11c301c3a863$e14aa4e0$
He contestado esto en el grupo de Access... y me va MUY
bien.

Una manera de no tener que tocar el código es utilizando
objetos ya que estos serán independientes de la
referencia... algo así como:

Dim WordAp As Object
Dim DocWord As Object

Set WordAp = CreateObject("Word.Application")
Set DocWord = WordAp.Application.Documents.Open
("c:\prueba.doc")


Sólo pierdes funcionalidad a la hora de programar, pues
pierdes las opciones detrás del punto... aunque siempre
puedes tener definidos los objetos como objetos Word, y al
terminar, sólo tienes que cambiar los "Set".

Saludos,
CarCar
MVP-Access


Hola a Todos

En el grupo de Access se ha planteado un problema que yo


sufrí también hace
algún tiempo y no supe como resolver.

Escenario:

Máquina de desarrollo: con Office 2000
Máquinas de explotación: Office 2000

Aplicación Access 2000 que utiliza la


referencia "Microsoft word 9.0 object
Lybrary"

En la máquina de desarrollo se instala Office XP, la


referencia "Microsoft
word 9.0 object Lybrary" es sustituida por "Microsoft


word 10.0 object
Lybrary". Al distribuir la aplicación al resto de


máquinas, pete total.

Solución adoptada hasta el momento: Abrir la aplicación


en una máquina con
Office 2000, quitar la referencia 10.0 y marcar la 9.0

¿Habría alguna forma menos rupestre de arreglar el


entuerto?

Gracias
Eva Etxebeste
[MS MVP]


.

Respuesta Responder a este mensaje
#5 Pilar Mueckay [MS MVP]
11/11/2003 - 16:49 | Informe spam
:-D

menteAtenta,
Pilar Mueckay (GMT-05:00)
MS Office MVP


"Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
news:
Hola Pilar :))

Pues sí, la única solución "contradespistes" que hemos visto es la que
expones. Con tantas versiones conviviendo, creo que tendremos que adoptar
este método por narices.

Muchas gracias
Eva Etxebeste
[MS MVP]

"Pilar Mueckay [MS MVP]" escribió en el mensaje
news:
> Hola Darling!,
>
> Pues es un eterno tema de conflicto entre versiones. No tengo ni he
> encontrado una respuesta satisfactoria.
>
> Lo único que he experimentado es "extra trabajo" del lado del
desarrollador:
> en el código usar un late-binding que identifique la versión de la
> biblioteca en la PC donde se ejecuta el código. Como no es mi área :-)


no
> puedo asegurarte si el Procedimiento ReferenceOffice verifica si está
> instalada y usa esa versión de la biblioteca en la máquina "explotada"


:-)
o
> incluso poderla crear automáticamente si fuese necesario. O bien, usar


las
> funciones GetObject o CreateObject. Creo que mejor ayuda sobre esto te
> pueden dar nuestros amigos de VBA :-), ya que yo puedo estar


desvariando.
> pues mi experiencia es en Outlook y Excel más que en Access :-)
>
> Para el resto del foro voy a ser más explicativa:
>
> Binding significa exponer qué versión de modelo de objeto tiene el


cliente
> (el explotado, ¡uy!). Ahora bien, hay una diferencia entre "early


binding"
y
> "late binding". Ya sabemos que a los ITs, y no refiero a los ETs, les
gustan
> las etiquetas difíciles. En este caso "early binding" es simplemente
> seleccionar la biblioteca manualmente en el editor VBA vía menú
Herramientas
> | Referencias. Y "late binding" es simplemente en el código es


*asegurar*
la
> biblioteca objeto en el proceso de run time; no se usa Herramientas |
> Referencias, sino funciones específicas. Las diferencias también las


vemos
> en la ejecución: obviamente late-binding es más lento, pero tiene una
> ventaja única: no importa qué versión tenga el usuario instalada. VBA
usará
> el nombre de la clase que le proporciona las funciones GetObject o
> CreateObject (supongo que habrá Access_Application ¿no? bueno dije que


no
> era mi área).
>
> No sé como los libros VBA traducen estos términos.
>
> Coméntanos,
>
> menteAtenta,
> Pilar Mueckay (GMT-05:00)
> MS Office MVP
>
>
> "Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
> news:
> > Hola a Todos
> >
> > En el grupo de Access se ha planteado un problema que yo sufrí también
> hace
> > algún tiempo y no supe como resolver.
> >
> > Escenario:
> >
> > Máquina de desarrollo: con Office 2000
> > Máquinas de explotación: Office 2000
> >
> > Aplicación Access 2000 que utiliza la referencia "Microsoft word 9.0
> object
> > Lybrary"
> >
> > En la máquina de desarrollo se instala Office XP, la referencia
"Microsoft
> > word 9.0 object Lybrary" es sustituida por "Microsoft word 10.0 object
> > Lybrary". Al distribuir la aplicación al resto de máquinas, pete


total.
> >
> > Solución adoptada hasta el momento: Abrir la aplicación en una máquina
con
> > Office 2000, quitar la referencia 10.0 y marcar la 9.0
> >
> > ¿Habría alguna forma menos rupestre de arreglar el entuerto?
> >
> > Gracias
> > Eva Etxebeste
> > [MS MVP]
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida