Error al Convertir un adodb.recordset a Cursor de VFP mediante CursorAdapter

02/07/2005 - 07:58 por Manuel Calderón | Informe spam
Saludos

PRIMERO:
Necesito tener un ADOdb.recordset y moverme en sus registros,
y usar sus propiedades y metodos.
Luego utilizar este ADOdb.recordset y crear un cursor Nativo de Fox
para mostrarlo en un Grid.

El problema es que mi adodb.recordset tiene 325 registros y al converirlo
a cursor
me devuelve 425 registros.

Este es el codigo que da como resultado el problema anteriormente
mencionado:

oConeccion = CREATEOBJECT("adodb.connection")
oConeccion.Open("Provider=VFPOLEDB.1;Data Source=D:\Base\BaseDeDatos.dbc;
Password='';Collating Sequence=MACHINE")

oRecordset=CREATEOBJECT("adodb.recordset")
oRecordset.Open("SELECT campo1 FROM tabla1", oConeccion,1,3,1)


loCursorAdapter = CREATEOBJECT("CursorAdapter")
loCursorAdapter.Alias="curtabla1"
loCursorAdapter.DataSourceType="ADO"

** Convertimos el RecordSet a un cursor de VFP
lcError = loCursorAdapter.CursorFill(,,,oRecordset)

** Desincorporamos el cursor, de el objeto CursorAdapter
lcError = loCursorAdapter.CursorDetach()

browse


SEGUNDO:
Intente con un segundo codigo y la cantidad de registros recuperados
fue el correcto tanto en el ADOdb.recordset como en el cursor Generado,
pero lo malo es que no se puede utilizar algunas propiedades del
ADOdb.recordset
como el recordcount y el absolutePosition(salen con valores negativos).

Este es el codigo que si recupera la cantidad de registros correcto, pero
genera
el problema mencionado:

** Creamos y abrimos la conexión ADO
*!* lcConnString="Provider=VFPOLEDB.1;Data
Source=D:\Base\BaseDeDatos.dbc;;Password='';Collating Sequence=MACHINE"

*!* loConnection = CREATEOBJECT("ADODB.Connection")
*!* loConnection.Open(lcConnString)
*!*
*!*Ejecutamos la consulta
*!* lcQuery = "SELECT campo1 FROM tabla1"
*!* loRecordSet = loConnection.Execute(lcQuery)

*!* Creamos el objeto Cursor Adapter
*!* loCursorAdapter = CREATEOBJECT("CursorAdapter")
*!* Asignamos el nombre del cursor
*!* loCursorAdapter.Alias="curtabla1"
*!*Asignamos el tipo de datos que recibirá
*!* loCursorAdapter.DataSourceType="ADO"
*!*Convertimos el RecordSet a un cursor de VFP
*!* lcerror=loCursorAdapter.CursorFill(,,,loRecordSet)
*!* Desincorporamos el cursor, de el objeto CursorAdapter
*!* lcerror=loCursorAdapter.CursorDetach()
*!* browse

Parecen iguales, pero la diferencia esta en como se carga el contenido del
ADOdb.recordset
el primer codigo utiliza OPEN y el segundo codigo utiliza EXECUTE


Amigos, espero alguien pueda ayudarme con este problemita

Un coordial saludo

Espero sus respuestas



PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway

Preguntas similare

Leer las respuestas

#6 Esparta Palma
05/07/2005 - 06:33 | Informe spam
Tengo entendido que asi es por diseño, si su fuente de datos es un ADO
debe estar incorporado a el CursorAdaptor, desconozco si exista una
forma de darle vuelta, lo que planeas hacer es muy parecido al esquema
de trabajo de las vistas remotas, quizás solo necesites cambiarlo a ese
modelo (y crear un clase de acceso de datos)


¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º

Espartaco Palma Martínez
SysOp http://www.PortalFox.com
México D.F.
MoBlogs!
http://weblogs.golemproject.com/esparta/ <- Tech
http://www.espartha.com/blog/ <- Personal
VFP Bookmarks http://del.icio.us/esparta/vfp

Manuel Calderón wrote:
Ok

Muchas Gracias, todo salio Bien
ahora el problema es que cuando modifico un campo de un registro
del cursor y quiero saltar al siguiente registro, me sale este error:

***-***
No se puede actualizar ADODB.recordset, hasta que el cusor
creado con el metodo cursorAdapter.cursorfill, no se asocie
a un objeto cusros adapter.
***-***

Yo deseo que este cursor creado, se le pueda modificar su contenido
como cualquier cursor nativo de Fox, sin que dependa de algun
otro objeto.

Como podria hacerlo?

Bueno espero sus respuestas

Muchas Gracias.



PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida