Hola estoy intentando implementar el uso de CURSORADAPTER a un sistema en desarrollo usando tablas nativas. Tengo un formulario donde voy a actualizar ordenes de pago, las que tienen un detalle de conceptos. Por lo tanto tengo las tablas ORDENPAGO y ORDENPAGO_CONCEPTOS
En primera instancia modifiqué un código que está disponible en la web con la idea que de que me construya un CA de acuerdo a cada tabla según los parámetros que le envíe.
El código es este
PROCEDURE CrearCursorActualizable
PARAMETERS lcTabla, lcCursor, lcClave, lcFiltro
lcCA='ca_'+lcTabla
PUBLIC &lcCA as CursorAdapter
LOCAL ARRAY laError(1), laEstructura(1)
&lcCA=CREATEOBJECT('cursoradapter')
Store "" To m.lcCampos, m.lcCamposUp
For m.i = 1 To Afields(m.laEstructura, m.lcTabla)
m.lcCampos = m.lcCampos + m.laEstructura(m.i, 1) + ","
m.lcCamposUp = m.lcCamposUp + m.laEstructura(m.i, 1) + " " +;
m.lcTabla + "." + m.laEstructura(m.i, 1) + ","
Endfor
m.lcCampos = Left(m.lcCampos, Len(m.lcCampos) - 1)
m.lcCamposUp = Left(m.lcCamposUp, Len(m.lcCamposUp) - 1)
WITH &lcCA
.alias=lcCursor
.Allowdelete = .T.
.Allowinsert = .T.
.Allowupdate = .T.
.BufferModeOverride=5
.datasourcetype='Native'
.keyfieldlist=lcClave
.selectcmd=[select * from &lcTabla &lcFiltro]
.sendupdates=.t.
.tables=lcTabla
.updatablefieldlist=m.lcCampos
.updatenamelist=m.lcCamposUP
.updatetype=1
.usetransactions=.t.
IF !.cursorfill()
AERROR(laError)
MESSAGEBOX(laError(2),16,'Error')
ENDIF
ENDWITH
En mi formulario principal llamo este procedimiento desde un método de la siguiente forma
lnparametro=VAL(LEFT(thisform.cmbperi.Value,4)) && Obtengo el año/ejercicio a consultar
=CrearCursorActualizable('ordenpago', 'curOrdenpago', 'id', 'where nEjercicio=lnParametro')
Luego despliego los datos obtenidos en el cursor CURORDENPAGO en un grid. Hasta ahí todo bien.
Para actualizar datos llamo a otro formulario que trabaja sobre el cursor CURORDENPAGO agregando un registro, cargando la información y almacenando en el cursor con el comando TABLEUPDATE(.f.,.t.,'curordenpago')
Al volver al formulario principal, llamo de nuevo al método que crea de nuevo el cursor desde la tabla.
Pero el problema es que no muestra el nuevo registro en caso de haberlo agregado.
Sólo al cerrar el formulario principal y lo llamo nuevamente se despliegan los datos actualizados con el nuevo registro.
En qué le estaré errando?
Desde ya muchas gracias por su ayuda!