Ricardo y Rafael

 

                               Muchas gracias a los dos.

En efecto, no era necesario usar Cursodetach().  Estaba usando el mismo
Cursoradapter, y por éso cada tabla me “cerraba” la anterior.

Todos los comentarios, super interesantes.

 

Saludos!,

Diego 

 

De: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] En nombre de Ricardo Aidelman
Enviado el: martes, 22 de mayo de 2012 05:18 p.m.
Para: GUFA List Member
Asunto: [GUFA] Cursoradapter con ADO

 

Diego:

http://sourceforge.net/projects/tieradapter/

 

Este es el ejemplo con el que yo aprendí, y utiliza ADO.

Como dijo Rafael en otro mail, tenes que tener un CursorAdapter por tabla.

La subclase rrCursorAdapter que hizo Rubén Rovira tiene algunas
consideraciones para utilizar ADO, por lo tanto es conveniente que la mires.

El método que persiste las modificaciones en el motor es Put(), de la clase
DataTierAdapter.prg

 

Basicamente, completá adecuadamente las propiedades SelectCmd, KeyFieldList,
UpdatableFieldList y UpdateNameList.

Una vez que traes el cursor con CursorFill(), pones CursorSetProp(
“Buffering”, 5 ) y lo actualizas.

Por último, haces TableUpdate() por cada tabla.

 

 

ricardo aidelman 

( socio nº 1545 )

 

 

 

 

From: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] On Behalf Of
di...@isg-alexa.com
Sent: martes, 22 de mayo de 2012 10:01
To: GUFA List Member
Subject: [GUFA] Cursoradapter con ADO

 

 

Gracias por contestar, Ricardo

                

Usamos la herramienta CABUILDER, para generar la clase, que se llama en éste
caso 'ca_alexasql'.

 

                                  loalexadb = NEWOBJECT(
'ca_facturas_cabecera', 'ca_alexasql')                           

                                  loalexadb.alias = 'facturas_cabecera'

                                  loalexadb.CursorFill()

                                  loalexadb.CursorDetach()

 

Eso nos trae la tabla con los registros de la tabla desde SQL Server.   Si
no liberamos la asociación con Cursordetach(), cada  nuevo cursor nos cierra
el anterior. No podríamos tener más de una tabla abierta a la vez.

No encontramos ningún ejemplo de CursorAttach() en internet.  Intentamos
utilizarlo por sentido común, pero no lo pudimos hacer funcionar. 

¿Vos tendrás algun ejemplo?

 

Muchas gracias!

Diego.-

 

 

De: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] En nombre de Ricardo Aidelman
Enviado el: martes, 22 de mayo de 2012 08:37 a.m.
Para: GUFA List Member
Asunto: [GUFA] Cursoradapter con ADO

 

Hola Diego:

No sé cómo lo estarás haciendo.

Supongo que con el CursorAdapter.CursorFill() te traes un cursor de la tabla
vacia del SQL, le insertas los registros provenientes de la tabla nativa, y
después hacés un TableUpdate().

Lo que interpreto de la descripción del error, es que después de traer el
cursor con CursorAdapter.CursorFill(), habrás hecho
CursorAdapter.CursorDetach().

Si es así, no deberías ejecutar el CursorDetach(), o bien deberías asociar
nuevamente el cursor con CursorAdapter.CursorAttach().

 

Salu2

 

 

ricardo aidelman 

( socio nº 1545 )

 

 

 

From: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] On Behalf Of
di...@isg-alexa.com
Sent: martes, 22 de mayo de 2012 1:07
To: GUFA List Member
Subject: [GUFA] Cursoradapter con ADO

 

 

Hola a todos

 

                Estamos migrando una aplicación de tablas nativas DBF  a SQL
Server 2008, mediante Cursoradapter y ADO. 

Todo parece funcionar bien, pero al querer guardar los cambios, salta el
siguiente error:

 

“ERROR 2082

NO SE PUEDE ACTUALIZAR ADODB.RECORDSET HASTA QUE EL CURSOR, CREADO MEDIANTE
EL MÉTODO CURSORADAPTER.CURSORFILL, NO SE ASOCIE A UN OBJETO CURSORADAPTER”

 

¿Qué estaré haciendo mal?  

¿Hay que usar ODBC?    ¿Alguien me podrá orientar?

 

Desde ya, muchísimas gracias.-

Diego Detinis

 

Responder a