Problema com o Browse

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Problema com o Browse

Mensagem por Daiane »

Bom pessoal,estou tendo problema com o listBox
quando fecho a tela que contem um histórico no listbox e volto para a tela de casdatro ele dar varios erros que diz q o banco n esta aberto ou selecionado
so que fiz o teste e ele está. ja fiz de tudo mas não to conseguindo resolver
alguem pode me dar um caminho por eu onde eu posso verificar esse erro?

vou mostrar algumas partes do fonte

Tela com o listbox que ao fechar dar o erro :

Código: Selecionar todos

METHOD HistFaltas() class CadFuncFerias
   local ok := .F.
	DEFINE ICON oIcon RESOURCE "#8006" 
	DEFINE DIALOG ::DlgFaltas RESOURCE "#1160" OF ::oChild ICON oIcon;
   TITLE "Histórico de Faltas"
 
   ::xxNome    := 1->NOME
	::xxAdms    := 1->ADMISSAO
	::xxCodigo  := 1->CODIGO

	
	REDEFINE SAY ID 4007 OF ::DlgFaltas
	REDEFINE SAY ID 4005 OF ::DlgFaltas
	REDEFINE SAY ID 4009 OF ::DlgFaltas
	
	REDEFINE SAY ::gxCodigo VAR ::xxCodigo  ID 4008 OF ::DlgFaltas
	REDEFINE SAY ::gxNome 	VAR ::xxNome 	 ID 4006 OF ::DlgFaltas
	REDEFINE SAY ::gxAdms 	VAR ::xxAdms 	 ID 4010 OF ::DlgFaltas
	
	::TempFaltas()	

	REDEFINE XBROWSE ::xbrowFaltas ID 4002 OF ::DlgFaltas; 
       HEADERS "Mes", "Tipo" , "Falta" ;
      JUSTIFY .F., AL_CENTER, .T., .T., .T. ;
       COLSIZES 137,137,139 ;
	ARRAY ::aHistFal AUTOCOLS AUTOSORT 
	
	::xbrowFaltas:nMarqueeStyle   := MARQSTYLE_HIGHLWIN7
   
	
	REDEFINE BUTTON ID 4001 OF ::DlgFaltas ACTION (::DlgFaltas:End()) CANCEL
       ::UseDB()      

	ACTIVATE DIALOG ::DlgFaltas CENTER 
	  
RETURN ok
//-------------------------------------------------------------------------------------------------------------
METHOD TempFaltas() class CadFuncFerias
   ::aHistFal := {}
	Sele 29 
	SET ORDER TO 2  //"MES+CODE"
	GO TOP
	cFaltas := 0 //Zera a quantidade de faltas para não pegar a mesma quantidade para toda repetição 
	cHoras  := 0	
	do while !eof()
		IF 1->CODIGO <> 29->CODF			
			skip
		   loop
		ENDIF
		if 29->MES < LEFT(DTOS(::cFERIAS),6) .or. 29->MES > LEFT(DTOS(::cFERIAS1),6) //mes <> left(kwmes,4)	
		  skip
		  loop   
		endif	
		SELE 4
		SET ORDER TO 2 //UPPER(DESCRICAO)
		GO TOP
		DO WHILE !EOF() //Procura por faltas
			IF 4->CODIGO = 29->CODE
				IF (AT("FALTA", UPPER(4->DESCRICAO)) > 0) .AND. (4->DHV = "D") .AND. (4->PRODES = "D")
					AADD( ::aHistFal, { 29->MES,"Dia", 29->VALOR} )       
				ENDIF	 
				IF (AT("FALTA", UPPER(4->DESCRICAO)) > 0) .AND. (4->DHV = "H") .AND. (4->PRODES = "D")
					AADD( ::aHistFal, { 29->MES,"Hora", 29->VALOR} )
				ENDIF
			ENDIF
		SELE 4		
		SKIP  //PRODES
		ENDDO	
	SELE 29		
	skip //FLMONT
	enddo
RETURN  



no caso esse USEDB() volta e abre o banco que eu preciso quando saio da janela
Anexos
error.txt
(45.73 KiB) Baixado 90 vezes
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Problema com o Browse

Mensagem por Kapiaba »

Error description: Error DBCMD/2001 Workarea not in use: DBSKIPPER

Veifique estas linhas:

Código: Selecionar todos

Called from: C:\mfolhawin\CadFuncFerias.prg => (b)CADFUNCFERIAS:INCOUALT( 414 ) -> Bad - está mal

Called from: C:\mfolhawin\CadFuncFerias.prg => CADFUNCFERIAS:INCOUALT( 416 )
Called from: C:\mfolhawin\CadFuncFerias.prg => (b)CADFUNCFERIAS:POPULAR( 262 ) -> bad - está mal


   ::UseDB()     // ESTÁ DENTRO DE UM DEFINE DIALOG... ACTIVATE DIALOG...
                 // EQUIVALE A UM WHILE... ENDDO... SE O LOOPING GIRAR 1000000 DE X, ABRIRÁ 1000000 DE X E ESTOURARAR A PILHA. REVISE A ABERTURA DOS BANCOS E NÃO PONHA DENTRO DO LOOPING NUNCA.
 
   ACTIVATE DIALOG ::DlgFaltas CENTER
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Problema com o Browse

Mensagem por Daiane »

Na verdade eu ja olhei essas linhas e são as que está usando o banco
ja coloquei um prin ? select() e ele retornar .t. pro banco que eu quero
porem continua o erro

não entendo.

não encontro esse erro de DBSKIPPER
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Problema com o Browse

Mensagem por Daiane »

Linhas que possivelmente está o erro são essas:

Código: Selecionar todos

	REDEFINE BUTTON ::bAlterar ID 4002 OF ::oChild WHEN ( 900->FERCOMP>=::vPdatini ) ACTION ::IncOuAlt(.F., .F.)

METHOD IncOuAlt(inc, first) CLASS CadFuncFerias
IF ( inc .OR. ( 900->FERCOMP>=::vPdatini ) .OR. EMPTY(900->FERCOMP))
	
	DEFINE ICON oIcon RESOURCE if(inc,"#8002","#8003")
	DEFINE DIALOG ::oDlg RESOURCE "#1037" OF IF (first, ::funcWnd, ::oChild) ICON oIcon;
   TITLE if(inc, "Incluir", "Alterar") + " Movimento de Férias"
   REST FROM &(::bancos:arqParam) ADDI
	
	IF !::FuncAfast()
	   RETURN
	ENDIF
	    
	::ChekrNvPer(inc)
		   
	::InicializaVariaveis(inc, first)
	
	::nreg := recno()
	
	REDEFINE SAY ID 4025 OF ::oDlg
	REDEFINE SAY ID 4009 OF ::oDlg
	REDEFINE SAY ID 4013 OF ::oDlg
	REDEFINE SAY ID 4005 OF ::oDlg
	REDEFINE SAY ID 4006 OF ::oDlg
	REDEFINE SAY ID 4004 OF ::oDlg
	REDEFINE SAY ID 4007 OF ::oDlg
	REDEFINE SAY ID 4015 OF ::oDlg
	REDEFINE SAY ID 4016 OF ::oDlg
	REDEFINE SAY ID 4020 OF ::oDlg
	REDEFINE SAY ID 4021 OF ::oDlg
	REDEFINE SAY ID 4023 OF ::oDlg
	REDEFINE SAY ID 4028 OF ::oDlg
	REDEFINE SAY ID 4030 OF ::oDlg
	REDEFINE SAY ID 4031 OF ::oDlg
	REDEFINE SAY ID 4033 OF ::oDlg
	REDEFINE SAY ID 4035 OF ::oDlg
	REDEFINE SAY ID 4037 OF ::oDlg
	REDEFINE SAY ID 4039 OF ::oDlg
	REDEFINE SAY ID 4042 OF ::oDlg
	REDEFINE SAY ID 4044 OF ::oDlg
		 	
	REDEFINE RADIO ::gTPFER	VAR ::cTPFER ID 4017, 4024 OF ::oDlg
	
	REDEFINE SAY ::gNOME 		VAR ::cNOME     	ID 4026 OF ::oDlg
	REDEFINE SAY ::gADMISSAO	VAR ::cADMISSAO  	ID 4027 OF ::oDlg
	
	REDEFINE SAY ::gNvPerAqs 	VAR ::cNvPerAqs ID 4036 COLOR CLR_HRED OF ::oDlg 
	 
   REDEFINE GET ::gFERIAS   	VAR ::cFERIAS   	ID 4010 OF ::oDlg;
   VALID ( YEAR(::cFERIAS) >= 1990 )
   REDEFINE GET ::gFERIAS1  	VAR ::cFERIAS1  	ID 4014 OF ::oDlg;
   VALID IF( ( YEAR(::cFERIAS1) >= 1990 ), ::feriasok(inc), .F. ) .and. ::ContFaltas(inc) .and. ::clcFerColet(.T.) 
   
   REDEFINE GET ::gFERGOZO  	VAR ::cFERGOZO  	ID 4011 OF ::oDlg;
   VALID ::checkGozo() .and. !empty(::cFERGOZO)
   
   REDEFINE GET ::gFERGOZO1 	VAR ::cFERGOZO1 	ID 4012 OF ::oDlg;
   VALID ( ( ( YEAR(::cFERGOZO1) >= 1990 ) .AND. ( ::cFERGOZO1>=::cFERGOZO ) ) .OR. ( ::cFERGOZO1=CTOD("") ) ) .and. ::checkGozo1(inc) .and. !empty(::cFERGOZO1) .and. ::ChekQtdDias()
   
   REDEFINE GET ::gFERABONO 	VAR ::cFERABONO 	ID 4002 OF ::oDlg;
   VALID ( ( ( YEAR(::cFERABONO) >= 1990 ) .AND. ( ::cFERABONO > 1->ADMISSAO ) ) .OR. ( ::cFERABONO=CTOD("") ) )
   REDEFINE GET ::gFERABONO1	VAR ::cFERABONO1 	ID 4003 OF ::oDlg;
   VALID ( ( ( YEAR(::cFERABONO1) >= 1990 ) .AND. ( ::cFERABONO1>=::cFERABONO ) ) .OR. ( ::cFERABONO1=CTOD("") ) )
   
   REDEFINE GET ::gFERAVISO   VAR ::cFERAVISO   ID 4008 OF ::oDlg;
   VALID ( ( ( YEAR(::cFERAVISO) >= 1990 ) .AND. ( ::cFERAVISO > 1->ADMISSAO ) ) .OR. ( ::cFERAVISO=CTOD("") ) )
   
   REDEFINE GET ::gFERPGTO   	VAR ::cFERPGTO   	ID 4018 OF ::oDlg;
   VALID ( ( ( YEAR(::cFERPGTO) >= 1990 ) .AND. ( ::cFERPGTO  > 1->ADMISSAO ) ) .OR. ( ::cFERPGTO=CTOD("") ) )
   
   REDEFINE GET ::gFERCOMP  	VAR ::cFERCOMP  	ID 4022 OF ::oDlg;
	  VALID ( ::cFERCOMP>=::vPdatini .AND. ::cFERCOMP<=::vPdatfim .AND. ( DAY(::cFERCOMP)=1 .OR. DAY(::cFERCOMP)=30 ) ) .OR. ::cFERCOMP=CTOD("")  
	 
   REDEFINE GET ::gNFERIAS  	VAR ::cNFERIAS  	ID 4019 OF ::oDlg;
   PICTURE "99" VALID ::NFERDOBRO()

   REDEFINE GET ::gRETORNO   	VAR ::cRETORNO   	ID 4029 OF ::oDlg;
   VALID ( ( ( YEAR(::cRETORNO) >= 1990 ) .AND. ( ::cRETORNO  > 1->ADMISSAO ) ) .OR. ( ::cRETORNO=CTOD("") ) )

   REDEFINE GET ::gDiasDrt VAR ::cDiasDrt ID 4032 OF ::oDlg PICT "99" WHEN(.F.)
      
   REDEFINE GET ::gQtdDias VAR ::cQtdDias ID 4034 OF ::oDlg PICT "99" ;
   VALID ::ValideDias() .and. ::SaldoFer(inc)  
   
   REDEFINE GET ::gFaltasFer VAR ::cFaltasFer ID 4038 OF ::oDlg PICT "99" WHEN(.F.)
   REDEFINE GET ::gReducao   VAR ::cReducao   ID 4043 OF ::oDlg PICT "99" WHEN(.F.)
   REDEFINE GET ::gConceder  VAR ::cConceder  ID 4040 OF ::oDlg PICT "99" WHEN(.F.)
   REDEFINE GET ::gSaldoFer  VAR ::cSaldoFer  ID 4041 OF ::oDlg PICT "99" WHEN(.F.)  
   
   REDEFINE BUTTONBMP ::bHisFaltas ID 4045 OF ::oDlg;
							 BITMAP "#7001" ACTION ::HistFaltas() CANCEL         
   
  
   REDEFINE BUTTON ::bSalvar ID IDOK OF ::oDlg ACTION ::Confirmar(inc, first);
   WHEN (::EnableSalvar())
       /*!EMPTY(::cFERIAS   ) .AND.;
			!EMPTY(::cFERIAS1  ) .AND.;
			!EMPTY(::cTPFER    ) .AND.;
			!EMPTY(::cFERGOZO  ) .AND.;
			!EMPTY(::cFERGOZO1 ) */
		
			
	REDEFINE BUTTON ID 4001 OF ::oDlg ACTION ::Restaurar(inc, first)
	REDEFINE BUTTON ID IDCANCEL OF ::oDlg ACTION (::oDlg:End(), IF(first, ::GoTop(), ) ) CANCEL 
   	
   ACTIVATE DIALOG ::oDlg CENTERED
  
//ELSE
//	MsgAlert("Funcionário diferente do selecionado!", "Operação Inválida")
//ENDIF   
ENDIF

return nil 

Código: Selecionar todos

 REDEFINE BUTTON ID IDCANCEL OF ::oDlg ACTION (::oDlg:End(), IF(first, ::GoTop(), ) ) CANCEL

METHOD GoTop() CLASS CadFuncFerias
	SELE 43
	GO TOP
return nil
  
Tirei o UseDB() Obrigada pela dica ;)
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Problema com o Browse

Mensagem por Daiane »

Poxa,eu consegui resolver mas ainda não entendi como

era assim:

Código: Selecionar todos

DEFINE DIALOG ::DlgFaltas RESOURCE "#1160" OF ::oChild ICON oIcon;
   TITLE "Histórico de Faltas"

Com a correção passou a ser assim:
DEFINE DIALOG ::DlgFaltas RESOURCE "#1160" OF ::oDlg ICON oIcon;
   TITLE "Histórico de Faltas"
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Problema com o Browse

Mensagem por Kapiaba »

Simples,

Código: Selecionar todos

::oChild   // Janela filha - window 

Código: Selecionar todos

::oDlg  // dialogo - DIALOG - se não era uma Janela, porque referencia-la?
Responder