Page 1 of 1

FWH2008 ERRO xBrowse (SQLRDD)

Posted: Wed Nov 18, 2020 9:26 am
by Sistem
using the SELECT (with SQLRDD)
the following error occurred:

Code: Select all

Descrição do Erro:
Error DBCMD/2001  Workarea nÆo est  em uso: ORDDESCEND
   chamado por ORDDESCEND(0)
   chamado por TXBROWSE:SQLRDD_SAVESTATE(5839)
   chamado por TXBROWSE:DRAWLINE(3141)
   chamado por TXBROWSE:PAINT(2477)
   chamado por TXBROWSE:DISPLAY(2104)
   chamado por TCONTROL:HANDLEEVENT(1793)
   chamado por TXBROWSE:HANDLEEVENT(11776)
   chamado por _FWH(3559)
   chamado por DIALOGBOXINDIRECT(0)
   chamado por TDIALOG:ACTIVATE(304)
   chamado por FEPRCT01(6796)
   chamado por (b)BUILDPOPROPR(5694)
   chamado por TMENU:ACTIVATE(1599)
   chamado por TTOOLBAR:NOTIFY(284)
   chamado por TDIALOG:NOTIFY(1595)
   chamado por TWINDOW:HANDLEEVENT(0)
   chamado por TDIALOG:HANDLEEVENT(1140)
   chamado por DIALOGBOXINDIRECT(0)
   chamado por TDIALOG:ACTIVATE(304)
   chamado por ROMA01(5523)
   chamado por (b)PEDI01(242)
   chamado por TTOOLBAR:COMMAND(239)
   chamado por TMDICHILD:COMMAND(1144)
   chamado por TWINDOW:HANDLEEVENT(0)
   chamado por TMDICHILD:HANDLEEVENT(343)
   chamado por _FWH(3559)
   chamado por WINRUN(0)
   chamado por TMDIFRAME:ACTIVATE(1097)
   chamado por MAIN(370)
 
Code Sample:

Code: Select all

   cSelect := "SELECT cod_rece, pre_rece, val_rece, ped_rece from rece where ped_rece = " + Sr_cdbvalue( Roma->Cod_Roma ) + " and substring(cod_rece,7,1) != " + Sr_cdbvalue( "B" )
   Sr_setactiveconnection ( nConn0 )
   If !Sr_existtable( "rece" )
      Sr_setactiveconnection ( nConn1 )
   Endif
   Dbusearea( .T. , "SQLRDD", cSelect, "ReceNew" )
   ReceNew->( Dbgotop() )
   Do While !ReceNew->( Eof() )
      If ReceNew->Pre_Rece < ReceNew->Val_Rece
         lEnt := .T.
      Endif
      ReceNew->(Dbskip())
   Enddo
   ReceNew->( Dbclosearea() )      <<<<==== ERRO HERE
 
Image
Image

Re: FWH2008 ERRO xBrowse (SQLRDD)

Posted: Wed Nov 18, 2020 12:36 pm
by karinha
Intente asi. Tente assim.

Code: Select all

EXTERNAL DESCEND

FUNCTION...

   cSelect := "SELECT cod_rece, pre_rece, val_rece, ped_rece from rece where ped_rece = " + Sr_cdbvalue( Roma->Cod_Roma ) + " and substring(cod_rece,7,1) != " + Sr_cdbvalue( "B" )

   Sr_setactiveconnection ( nConn0 )

   If .NOT. Sr_existtable( "rece" )

      Sr_setactiveconnection ( nConn1 )

   Endif

   Dbusearea( .T. , "SQLRDD", cSelect, "ReceNew" )

   // SET ORDER TO... // ??? NAO PRECISA?

   GO TOP

   // ReceNew->( Dbgotop() )

   WHILE( .NOT. EOF() ) // .OR. ( ReceNew )->( Eof() )

      SYSREFRESH()

      If ( ReceNew )->Pre_Rece < ( ReceNew )->Val_Rece

         lEnt := .T.

      Endif

      SKIP // .OR.

      // ( ReceNew )->( Dbskip() )

   Enddo

   CLOSE( ReceNew ) // PORQUE DEU UM CLOSE AQUI?

   // ( ReceNew )->( Dbclosearea() )      <<<<==== ERRO HERE
 
Saludos.

Re: FWH2008 ERRO xBrowse (SQLRDD)

Posted: Wed Nov 18, 2020 1:34 pm
by Sistem
não deu certo
eh algo no xbrowse ... essa area RECENEW nem faz paste do xbrowse.... estranho
karinha wrote:Intente asi. Tente assim.

Code: Select all

EXTERNAL DESCEND
Saludos.[/quote]

Re: FWH2008 ERRO xBrowse (SQLRDD)

Posted: Wed Nov 18, 2020 2:33 pm
by karinha
Mostre a parte do xBrowse, em que você dispara para a função... comente as linhas e vá religando, até descobrir onde quebra.

Re: FWH2008 ERRO xBrowse (SQLRDD)

Posted: Wed Nov 18, 2020 2:56 pm
by Sistem
karinha wrote:Mostre a parte do xBrowse, em que você dispara para a função... comente as linhas e vá religando, até descobrir onde quebra.
o erro eh:
( ReceNew )->( Dbclosearea() ) <<<<==== ERRO HERE

eh assim: posiciono o cursor no linha que quero, chamo a funcao que abre uma tabela e depois fecho a tabela, ao fechar da o erro
se eu comento a linha ( ReceNew )->( Dbclosearea() ) o erro nao acontece.... o problema eu que se o usuário abrir a função novamente o programa fecha sem msg.
eu resovi assim:

Code: Select all

   cSelect := "SELECT cod_rece, pre_rece, val_rece, ped_rece from rece where ped_rece = " + Sr_cdbvalue( Roma->Cod_Roma ) + " and substring(cod_rece,7,1) != " + Sr_cdbvalue( "B" )

   If !Empty(Select("ReceNew"))
      ReceNew->( Dbclosearea() )
   Endif
   Sr_setactiveconnection ( nConn0 )
   If !Sr_existtable( "rece" )
      Sr_setactiveconnection ( nConn1 )
   Endif
   Dbusearea( .T. , "SQLRDD", cSelect, "ReceNew" )
   ReceNew->( Dbgotop() )
   Do While !ReceNew->( Eof() )
      If ReceNew->Pre_Rece < ReceNew->Val_Rece
         lEnt := .T.
      Endif
      ReceNew->(Dbskip())
   Enddo
//   ReceNew->( Dbclosearea() )
 
coloquei o Dbclosearea no inicio e comentei o do final
mais pq acontece isso?
desde da ver 2006 estou com esse problema

Re: FWH2008 ERRO xBrowse (SQLRDD)

Posted: Wed Nov 18, 2020 3:00 pm
by Sistem
Sistem wrote:
karinha wrote:Mostre a parte do xBrowse, em que você dispara para a função... comente as linhas e vá religando, até descobrir onde quebra.
o erro eh:
( ReceNew )->( Dbclosearea() ) <<<<==== ERRO HERE

eh assim: posiciono o cursor no linha que quero, chamo a funcao que abre uma tabela e depois fecho a tabela, ao fechar da o erro
se eu comento a linha ( ReceNew )->( Dbclosearea() ) o erro nao acontece.... o problema eu que se o usuário abrir a função novamente o programa fecha sem msg.
resolvido assim:

Code: Select all

   cSelect := "SELECT cod_rece, pre_rece, val_rece, ped_rece from rece where ped_rece = " + Sr_cdbvalue( Roma->Cod_Roma ) + " and substring(cod_rece,7,1) != " + Sr_cdbvalue( "B" )

   If !Empty(Select("ReceNew"))
      ReceNew->( Dbclosearea() )
   Endif
   Sr_setactiveconnection ( nConn0 )
   If !Sr_existtable( "rece" )
      Sr_setactiveconnection ( nConn1 )
   Endif
   Dbusearea( .T. , "SQLRDD", cSelect, "ReceNew" )
   ReceNew->( Dbgotop() )
   Do While !ReceNew->( Eof() )
      If ReceNew->Pre_Rece < ReceNew->Val_Rece
         lEnt := .T.
      Endif
      ReceNew->(Dbskip())
   Enddo
//   ReceNew->( Dbclosearea() )
 
coloquei o Dbclosearea no inicio e comentei o do final
mais pq acontece isso?
desde da ver 2006 estou com esse problema

Re: FWH2008 ERRO xBrowse (SQLRDD)

Posted: Wed Nov 18, 2020 3:30 pm
by karinha
Se você tem uma função de ABERTURA dos BANCOS DE DADOS, faça o PROCESSAMENTO, feche tudo e ABRA TUDO de novo.

Eu por exemplo, tenho: ABERTURA.PRG -> Abre todos os BANCOS ao entrar no programa.

Se em algum lugar, eu precisar fazer algo e fechar os bancos, faço, e: DBCLOSEALL() - E: ABRE_BANCOS()

Simples assim.

Não entendi, porque você está fechando banco durante o PROCESSAMENTO, lógica de Português? jajajajajajajajaja -> kkkkkkkkkkkkkkkkk.

Abs.

Saludos, saudações.

Re: FWH2008 ERRO xBrowse (SQLRDD)

Posted: Wed Nov 18, 2020 9:05 pm
by Sistem
pois eh ... quando um SELECT (consultas) preciso fechar a tabela.... um simples Dbclosearea gera um erro... essa eh a questao