UDT en VBA.Collection

26/04/2006 - 17:10 por Cristian Rosa | Informe spam
Hola, tengo un problema con dlls COM.
Tengo una serie de clases de negocio escritas en VB6 que necesito utilizar
de VB2005. El problema es que en estas clases tienen un metodo que devuelve
una colección con datos de typ UDT. Ejemplo

Public Type typCons
ID As Long
Fecha As Date
Descripcion As String
End Typ

Public Function Consulta(ByVal Fecha As String) As Collection
Dim oCol As New Collection
Dim recCons As typCons

...
'Obtengo resultado de la Base de datos
while ...
oCol.Add recCons
...
Set Consulta = oCol
End Function

El siguiente codigo de VB2005 da error en la línea "recCons = oCol(x)"

Dim recCons as typCons
Dim oCol as VBA.Collection
Dim objCons As objCons
Dim x As long

oCol = objCons.Consulta("01/01/2006")
For x = 1 to oCol.Count
recCons = oCol(x)
msgbox recCons.Descripcion
Next

Hay alguna forma de resolver este problema o tengo que reescribir mis clases
de negocio?

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
26/04/2006 - 19:16 | Informe spam
El siguiente codigo de VB2005 da error en la línea "recCons = oCol(x)"



¿Que error?
Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Cristian Rosa
26/04/2006 - 19:36 | Informe spam
El error es el siguiente:

The specified record cannot be mapped to a managed value class.
Respuesta Responder a este mensaje
#3 David MB
27/04/2006 - 08:48 | Informe spam
For x = 0 to oCol.Count - 1

Fíjate que he incluído "- 1" al final, y el bucle lo empiezo en 0 y no en 1.
El problema es que la colección va de 0 a n-1

David MB

"Cristian Rosa" escribió:

Hola, tengo un problema con dlls COM.
Tengo una serie de clases de negocio escritas en VB6 que necesito utilizar
de VB2005. El problema es que en estas clases tienen un metodo que devuelve
una colección con datos de typ UDT. Ejemplo

Public Type typCons
ID As Long
Fecha As Date
Descripcion As String
End Typ

Public Function Consulta(ByVal Fecha As String) As Collection
Dim oCol As New Collection
Dim recCons As typCons

...
'Obtengo resultado de la Base de datos
while ...
oCol.Add recCons
...
Set Consulta = oCol
End Function

El siguiente codigo de VB2005 da error en la línea "recCons = oCol(x)"

Dim recCons as typCons
Dim oCol as VBA.Collection
Dim objCons As objCons
Dim x As long

oCol = objCons.Consulta("01/01/2006")
For x = 1 to oCol.Count
recCons = oCol(x)
msgbox recCons.Descripcion
Next

Hay alguna forma de resolver este problema o tengo que reescribir mis clases
de negocio?

Muchas gracias
Respuesta Responder a este mensaje
#4 Cristian Rosa
27/04/2006 - 13:56 | Informe spam
Gracias por tu respuesta pero ese no es el problema.
Recordá que la coleccion "oCol" es un tipo VBA.Collection generada en una
clase COM. El mismo error ocurre si utilizo la línea

For each recCons In oCol

Creo que el problema es que .NET no puede leer el contenido del oCol.Item()

"David MB" escribió:

For x = 0 to oCol.Count - 1

Fíjate que he incluído "- 1" al final, y el bucle lo empiezo en 0 y no en 1.
El problema es que la colección va de 0 a n-1
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida