Ejemplo de CURSOR ADAPTER

784 views
Skip to first unread message

Carlos Mauricio Torres Suárez

unread,
Jun 29, 2012, 3:41:49 PM6/29/12
to publice...@googlegroups.com
Será posible que alguien me envie a mi correo un ejemplo completo para trabajar con cursor adapter y poder actualizar una tabla con MYSQL, agregar, modificar, eliminar registros.

Mucha Gracias

Saludos

Daniel Sánchez

unread,
Jun 29, 2012, 4:30:27 PM6/29/12
to publice...@googlegroups.com
Aqui un link que espuse sobre el tema, solo es un ejemplo para que te des una idea de como trabajar con cursoradapters, lo que te recomiendo es crear tu clase en base al cursoradapter con tus requerimientos, yo ya trabajo con una clase que hace lo que necesito, bueno primero el link del ejemplo sin digitar ni una línea de código, bueno claro esta fuera de tu select que tienes que escribir

Aquí el link


En cuanto a como trabajar mediante código te paso uno ejemplo

para inicializar el cursoradapter, claro que ya lo tengo en clases a si que sobre ese trabajo, en este ejemplo tengo un entorno de datos como clase y en el trabajo, lo arrastro en el form y en el ini coloco el siguiente código, managerdata es una clase adaptada teniendo como clase base cursoradapter

CCADENASQL = 'select recibobanco.*, motivocajabanco.descripcion as cmotivo, cajabancos.descripcion as banco '+;
'from recibobanco '+;
' LEFT OUTER JOIN motivocajabanco ON  motivocajabanco.codigo = recibobanco.motivo and motivocajabanco.cajabanco=2'+;
' LEFT OUTER JOIN cajabancos ON  cajabancos.codigo = recibobanco.codbco and cajabancos.subcodigo = recibobanco.scodbco '+;
' WHERE 2=1'
This.AddObject("mrecibo", "managerdata")    &&aqui adiciono un nuevo objeto mrecibo de la clase managerdata que es clase de cursoradapter
This.MRECIBO.INICIALIZAR(HANDLESQL, "recibobanco", "movb")   &&indico mi handle de conexion, la tabla en el servidor, y el cursor a obtener
This.MRECIBO.CMDSQL(CCADENASQL)  &&aqui le indico cual es la consulta a realizar
This.MRECIBO.FIELDUPDATE()    &&aqui hago que los campos sean actualizables
This.MRECIBO.FIELDNOUPDATE = 'secuencia, cmotivo, banco, tipo, cuenta, moneda, cambioaux, debe, haber, itemsasiento' &&aqui cuales no actualizar
This.MRECIBO.IDKEY('tipomov, secuencia, keyitem') &&aqui cuales son lo campos claves para que haga la actualización
If  .Not. This.MRECIBO.RUNCMDSQL()   &&aqui corro la consulta si da error en errordata me indica que error ocurrio
= ERRORDATA("Iniciando movimientos de banco")
Endif

Ahora cuando deseo hacer las consultas como ya esta todo indicado solo hago esto en mi método de carga en el form que yo llamo loadgrill, en realidad el select es mas complejo y e puesto lo necesario para que mas o menos se entienda

CCADENASQL = 'select recibobanco.*'+;
    ' from recibobanco '+;
    ' WHERE '+CCONDICION+CCONDICIONSQL+CVERITEMS+' order by recibobanco.secuencia'
Thisform.EDATOS.MRECIBO.CMDSQL(CCADENASQL)
If Thisform.EDATOS.MRECIBO.RUNCMDSQL()
Thisform.NTOTALFILTRADOS = Reccount("movb")
Thisform.GRDCURSOR.RecordSource = "movb"
Thisform.GRDCURSOR.COLUMN1.ControlSource = 'fechaenletras(movb.fecha)'
Thisform.GRDCURSOR.COLUMN2.ControlSource = 'padl(movb.secuencia,10,"0")'
Thisform.GRDCURSOR.COLUMN3.ControlSource = 'thisform.veraccion()'
Thisform.GRDCURSOR.COLUMN4.ControlSource = 'cmotivo'
Thisform.GRDCURSOR.COLUMN5.ControlSource = 'total'
Thisform.GRDCURSOR.COLUMN6.ControlSource = 'iif(tipomov>9,movb.numerocheque,movb.operacion)'
Thisform.GRDCURSOR.COLUMN7.ControlSource = 'thisform.verporconcepto()'
Thisform.GRDCURSOR.COLUMN8.ControlSource = 'fechaenletras(movb.fechad)'
Thisform.GRDCURSOR.COLUMN9.ControlSource = 'codigo'
Thisform.GRDCURSOR.COLUMN10.ControlSource = 'thisform.alaorden()'
Thisform.COLUMN11.ControlSource = 'banco'
        ...
Thisform.GRDCURSOR.SetAll("dynamicFontItalic", 'iif(EMPTY(movb.estado) or !movb.fecha=movb.fechaefectuada,.f.,.t.)', "Column")
Thisform.GRDCURSOR .SetAll("dynamicFontBold", 'iif(EMPTY(movb.firmado),.f.,.t.)', "Column")
Thisform.GRDCURSOR.COLUMN1.ForeColor = Rgb(0, 128, 0)
Thisform.GRDCURSOR.COLUMN5.ForeColor = Rgb(0, 128, 0)
Thisform.GRDCURSOR.COLUMN7.ForeColor = Rgb(255, 0, 0)
Else
= ERRORDATA("listando movimiento de banco")
Endif

Si deseas eliminar o actualizar un dato solo lo haces haciendo referencia al cursor generado y este es actualizado en el motor de BD automáticamente, con un delete en el registro o un replace en los campos deseado, en mi caso tengo otra clase para manipular registros, pero esa  ya es otra historia.

Saludos

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú
Reply all
Reply to author
Forward
0 new messages