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