Página 1 de 1

Mensaje de error -TDbfDataSet not destroyed correctly.

Publicado: Mar Feb 22, 2022 2:42 pm
por alexandrasoft
#2: Object TDbfDataSet (COL_ARTI.DBF) not destroyed correctly.
Ese error se produce porque crea datasets QUE NO ESTÁN asignados a ningún formulario y por lo tanto no se destruyen automáticamente. Tiene que hacerlo usted mismo.

Saludos

Re: Mensaje de error -TDbfDataSet not destroyed correctly.

Publicado: Mar Feb 22, 2022 8:28 pm
por Hurricane
Olá,

use apenas destroy e sem condicionais ( já faz o :close() ):

Código: Seleccionar todo

AEVAL(oDataSource:aDataSet, {|o|o:destroy()})
Versão mais compacta e parametrizável:

Código: Seleccionar todo

FUNCTION CerrarTodoDS( aDS )
   local oDS
   LOCAL nPos

   aDS:=IF( aDS == NIL, DataSources(), aDS )
   for nPos:=Len(aDS) TO 1 STEP -1
      oDS:=aDS[nPos]
      AEVAL(oDS:aDataSet, {|o|o:destroy()})
      oDS:end()
   next

   RETURN NIL
Lembre-se de compilar com Debug para ver se a mensagem ainda aparece.
hb_gcAll() - se realmente for necessário, acho que ficaria melhor na última linha para única execução.
alexandrasoft escribió: Mar Feb 22, 2022 2:42 pm #2: Object TDbfDataSet (COL_ARTI.DBF) not destroyed correctly.

Re: Mensaje de error -TDbfDataSet not destroyed correctly.

Publicado: Lun Mar 28, 2022 5:21 pm
por alexandrasoft
alexandrasoft escribió: Mar Feb 22, 2022 2:42 pm
#2: Object TDbfDataSet (COL_ARTI.DBF) not destroyed correctly.
Ese error se produce porque crea datasets QUE NO ESTÁN asignados a ningún formulario y por lo tanto no se destruyen automáticamente. Tiene que hacerlo usted mismo.

Saludos
Hola si los destruia pero no en el lugar correcto quiza
Muchas gracias
Saludos

Re: Mensaje de error -TDbfDataSet not destroyed correctly.

Publicado: Lun Mar 28, 2022 5:22 pm
por alexandrasoft
Hurricane escribió: Mar Feb 22, 2022 8:28 pm Olá,

use apenas destroy e sem condicionais ( já faz o :close() ):

Código: Seleccionar todo

AEVAL(oDataSource:aDataSet, {|o|o:destroy()})
Versão mais compacta e parametrizável:

Código: Seleccionar todo

FUNCTION CerrarTodoDS( aDS )
   local oDS
   LOCAL nPos

   aDS:=IF( aDS == NIL, DataSources(), aDS )
   for nPos:=Len(aDS) TO 1 STEP -1
      oDS:=aDS[nPos]
      AEVAL(oDS:aDataSet, {|o|o:destroy()})
      oDS:end()
   next

   RETURN NIL
Lembre-se de compilar com Debug para ver se a mensagem ainda aparece.
hb_gcAll() - se realmente for necessário, acho que ficaria melhor na última linha para única execução.
alexandrasoft escribió: Mar Feb 22, 2022 2:42 pm #2: Object TDbfDataSet (COL_ARTI.DBF) not destroyed correctly.
Olá, suas informações resolveram quase todos os meus problemas. Ainda preciso corrigir alguns fechamentos. Muito obrigado pela ajuda e desculpas pelo meu português