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
Leer las respuestas