Página 1 de 1

Error al Borrar un Registro en TMemDataSet Aeval( ::aData, {|v| v[ Len( v ) ] -- }, nRecno )

Publicado: Jue Dic 17, 2015 9:43 pm
por gabo1
Hola
Me esta saliendo un error al borrar un registro en un TMemDataSet en el siguiente codigo que esta en el
metodo METHOD Delete() CLASS XMemRecords

Código: Seleccionar todo

METHOD Delete() CLASS XMemRecords
   LOCAL nRecno

   nRecno := ::OrgRecno()
   ADel( ::aData, nRecno )
   ASize( ::aData, Len( ::aData ) - 1 )
//   Aeval( ::aData, {|v,e| v[ -1 ] -- }, nRecno ) IOZ: Harbour lo requiere
   Aeval( ::aData, {|v| v[ Len( v ) ] -- }, nRecno )  // AQUI MARCA EL ERROR!
   IF !::aData == ::aWork
      ADel( ::aWork, ::Recno )
      ASize( ::aWork, Len( ::aWork ) - 1 )
   ENDIF
   ::RecCount := Len( ::aWork )
   IF ::Recno > ::RecCount
      ::Eof := .T.
   ENDIF
RETURN .T.

Subsistema: BASE
 Código de error: 1087
          Estado: .F.
     Descripción: Error de argumento
       Operación: --
      Argumentos:  [ 1] = Tipo: C Valor: 14:21:30
         Fichero: 
 Código error SO: 0
 Pila de llamadas:
  (b)XMEMRECORDS_DELETE (209)
  AEVAL (0)
  TMEMRECORDS:DELETE (209)
  TMEMDATASET:DELETE (651)
Alguna idea?
Es correcto el operador -- (menos menos) sin ninguna variable

Saludos

Re: Error al Borrar un Registro en TMemDataSet Aeval( ::aData, {|v| v[ Len( v ) ] -- }, nRecno )

Publicado: Vie Dic 18, 2015 12:20 pm
por Ariel69
Hola,
me parece que deberias eliminar el espacio y quedaria asi :

Aeval( ::aData, {|v| v[ Len( v ) ]-- }, nRecno )
o
Aeval( ::aData, {|v| v[ Len( v ) ] - 1 }, nRecno )

Saludos

Re: Error al Borrar un Registro en TMemDataSet Aeval( ::aData, {|v| v[ Len( v ) ] -- }, nRecno )

Publicado: Vie Dic 18, 2015 2:55 pm
por gabo1
GRacias por contestar, Pero no es el caso.. Al parecer no se actualiza los registros del memdataset, y por eso marca el error al restar menos uno.. sigo revisando :-(