Hola Manu..
despues de tiempo te molesto
resulta que tengo problemas de lectura luego de grabar un dato,
sucede algo asi :
1. Leo un campo de una tabla ctsec (numerico) es un contador
2. Luego le agrego el valor + 1 y lo grabo ...
3. Al leerlo, sigue con el mismo valor anterior, pese a que si
paralelamente lo veo por un programa externo para leer la tabla
SQLYog , el valor si ha sido grabado correctamente.
4. lo curioso es q si salgo del modulo y vuelvo al mismo modulo sin
salir del programa.. lo lee bien
Aqui parte del codigo...
**********************************************
LOCAL xTotal:=0
LOCAL oTabla
LOCAL oCmd:=TMSCommand():New( oCon )
LOCAL xCmd:=""
IF xValue = nil
xValue=1 && Asumimos un contador 1
ENDIF
*Creamos la Condicion SQL para leer el valor actual
xCmd := "select * from "+ cNmTabla +" where " + xcId +" = " + str
(xnID,12,0)
oTabla := TMSQuery():New( oCon,xCmd) // ejecutamos el query
IF .not. oTabla:Open() // abrimos la data en un
cursor con la Condicion cWhere
FSG_ERROR("SQL_IDACUMULA","No se pudo consultar nuevo valor
acumulado segun Cmd:>>> "+xCmd+" <<< Tome Nota e Informe al
Supervisor!!!")
RETURN 0
ELSE
oTabla:GoTop() // reubicar al inicio de
la tabla
ENDIF
IF oTabla:RecCount()=1 && Nro de Registros
xtotal=LeeCampo(oTabla,xCampo)
ELSE
FSG_ERROR("SQL_IDACUMULA","Se trato de leer el valor actual y no
se encontro registro Id segun Cmd:>>> "+xCmd+" <<< Tome Nota e
Informe al Supervisor!!!")
ENDIF
msginfo("leemos el campo "+xcampo+" ="+str(xtotal,10,0) )
xtotal=xtotal+xvalue
msginfo("le sumamos 1 al campo "+xcampo+" ="+str(xtotal,10,0) )
xCmd := "update "+ cNmTabla +" set "+ xCampo + " = " + ALLTRIM(str
(xtotal,12,0))+ " where " + xcId +" = " +ALLTRIM(str(xnID,12,0))
msginfo(xCmd)
IF .NOT. oCmd:ExecDirect( xCmd )
FSG_ERROR("SQL_IDACUMULA","No se pudo acumular el valor segun
Cmd:>>> "+xCmd+" <<< Tome Nota e Informe al Supervisor!!!")
return 0
ENDIF
oTabla:refresh()
xtotal=LeeCampo(oTabla,xCampo)
msginfo("despues del refres "+str(xtotal,5,0))