Erro

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Erro

Mensagem por Paulo_CPV »

Boa tarde!

Gostaria de saber dos colegas o que eu estou fazendo de errado, pois não estou identificando o erro que está dando em meu sistema.

Código: Selecionar todos

Application: G:\SisComprev2\SisMain.exe
Date: 13.03.2015 Time: 22:50:58
Time from start: 0 days 0 hours 0 mins 50 secs
Error BASE/1066 Erro nos parƒmetros: condicional


Called from TELA:SETTECLADO(4373) 
Called from (b)SISTEMA_TELACADASTRO(1842) 
Called from _DOCONTROLEVENTPROCEDURE(1652) 
Called from EVENTS(1573) 
Called from _DOMESSAGELOOP(0) 
Called from _ACTIVATEWINDOW(1374) 
Called from DOMETHOD(4688) 
Called from SISTEMA:TELACADASTRO(1914) 
Called from (b)TELA_JANELA(2113) 
Called from _DOCONTROLEVENTPROCEDURE(1652) 
Called from EVENTS(1516) 
Called from _DOMESSAGELOOP(0) 
Called from _ACTIVATEWINDOW(1374) 
Called from DOMETHOD(4688) 
Called from TELA:JANELA(2580) 
Called from (b)SISTEMA_TELAPRINCIPAL(218) 
Called from _DOCONTROLEVENTPROCEDURE(1652) 
Called from EVENTS(1449) 
Called from _DOMESSAGELOOP(0) 
Called from _ACTIVATEWINDOW(1374) 
Called from DOMETHOD(4688) 
Called from SISTEMA:TELAPRINCIPAL(319) 
Called from MAIN(26) 

Parte de meu código: Formulário

Código: Selecionar todos

METHOD TelaCadastro() CLASS Sistema

    DEFINE WINDOW JanelaCadastro ;
    AT ::W(147) , ::H(237) WIDTH ::W(547) HEIGHT ::H(350) ;
    TITLE "Cadastro de Novo Aposentado" ;
    MODAL ;
    BACKCOLOR BK_JANELA
	
//--------------------------------Titulos	
	
    DEFINE LABEL LB_Matricula
	
        ROW    ::W(20)
        COL    ::H(10)
        WIDTH  ::W(55)
        HEIGHT ::H(18)
        VALUE "Matricula"
        FONTNAME "Arial"
        FONTSIZE 9
        FONTBOLD .T.
        BACKCOLOR BK_JANELA
        FONTCOLOR BRANCO
		
    END LABEL

    DEFINE LABEL LB_Nome
	
        ROW    ::W(20)
        COL    ::H(85)
        WIDTH  ::W(120)
        HEIGHT ::H(18)
        VALUE "Nome"
        FONTNAME "Arial"
        FONTSIZE 9
        FONTBOLD .T.
        BACKCOLOR BK_JANELA
        FONTCOLOR BRANCO
		
    END LABEL

    DEFINE LABEL LB_Dib
	
        ROW    ::W(78)
        COL    ::H(10)
        WIDTH  ::W(35)
        HEIGHT ::H(18)
        VALUE "DIB"
        FONTNAME "Arial"
        FONTSIZE 9
        FONTBOLD .T.
        BACKCOLOR BK_JANELA
        FONTCOLOR BRANCO
		
    END LABEL

    DEFINE LABEL LB_Sexo
	
        ROW    ::W(78)
        COL    ::H(110)
        WIDTH  ::W(35)
        HEIGHT ::H(18)
        VALUE "Sexo"
        FONTNAME "Arial"
        FONTSIZE 9
        FONTBOLD .T.
        BACKCOLOR BK_JANELA
        FONTCOLOR BRANCO
		
    END LABEL

    DEFINE LABEL LB_Nit
	
        ROW    ::W(78)
        COL    ::H(225)
        WIDTH  ::W(35)
        HEIGHT ::H(18)
        VALUE "NIT"
        FONTNAME "Arial"
        FONTSIZE 9
        FONTBOLD .T.
        BACKCOLOR BK_JANELA
        FONTCOLOR BRANCO
		
    END LABEL

    DEFINE LABEL LB_Cpf
	
        ROW    ::W(78)
        COL    ::H(350)
        WIDTH  ::W(35)
        HEIGHT ::H(18)
        VALUE "CPF"
        FONTNAME "Arial"
        FONTSIZE 9
        FONTBOLD .T.
        BACKCOLOR BK_JANELA
        FONTCOLOR BRANCO
		
    END LABEL

    DEFINE LABEL LB_TipoApo
	
        ROW    ::W(135)
        COL    ::H(10)
        WIDTH  ::W(120)
        HEIGHT ::H(18)
        VALUE "Tipo Aposentadoria"
        FONTNAME "Arial"
        FONTSIZE 9
        FONTBOLD .T.
        BACKCOLOR BK_JANELA
        FONTCOLOR BRANCO
		
    END LABEL
    
    DEFINE LABEL LB_Expediente
	
        ROW    ::W(135)
        COL    ::H(145)
        WIDTH  ::W(120)
        HEIGHT ::H(18)
        VALUE "Expediente"
        FONTNAME "Arial"
        FONTSIZE 9
        FONTBOLD .T.
        BACKCOLOR BK_JANELA
        FONTCOLOR BRANCO
		
    END LABEL

//-------------------------------- Dados de Entrada

    DEFINE TEXTBOX TX_Matricula
	
        ROW    ::W(42)
        COL    ::H(10)
        WIDTH  ::W(65)
        HEIGHT ::H(24)
        FONTNAME "Arial"
        FONTSIZE 9
		FONTBOLD .T.
        TOOLTIP "Matricula do Aposentado"
        ONENTER { || JanelaCadastro.TX_Nome.SetFocus }

    END TEXTBOX
	
    DEFINE TEXTBOX TX_Nome
	
        ROW    ::W(42)
        COL    ::H(85)
        WIDTH  ::W(435)
        HEIGHT ::H(24)
        FONTNAME "Arial"
        FONTSIZE 9
		FONTBOLD .T.
        TOOLTIP "Nome do Aposentado"
		UPPERCASE .T.
        ONENTER { || JanelaCadastro.TX_Dib.SetFocus }

    END TEXTBOX
	
    DEFINE TEXTBOX TX_Dib
	
        ROW    ::W(100)
        COL    ::H(10)
        WIDTH  ::W(90)
        HEIGHT ::H(24)
        FONTNAME "Arial"
        FONTSIZE 9
		FONTBOLD .T.
        TOOLTIP "Data do inicio do beneficio"
//		MAXLENGTH 10
		DATE .T.
        ONENTER      { || IF( ::ValidarData( This.Value ) = .F. , JanelaCadastro.TX_Dib.SetFocus , JanelaCadastro.TX_Sexo.SetFocus )}
		ONCHANGE	 { || oTela:SetTeclado( This.Value ) }

    END TEXTBOX
	
    DEFINE COMBOBOX TX_Sexo
	
        ROW    ::W(100)
        COL    ::H(110)
        WIDTH  ::W(100)
        HEIGHT ::H(100)
		ITEMS {"Masculino","Feminino"}
		VALUE 0
        FONTNAME "Arial"
        FONTSIZE 9
		FONTBOLD .T.
        TOOLTIP "Selecione o Sexo"
        ONCHANGE { || JanelaCadastro.TX_Nit.SetFocus }

    END COMBOBOX
	
    DEFINE TEXTBOX TX_Nit
	
        ROW    ::W(100)
        COL    ::H(222)
        WIDTH  ::W(120)
        HEIGHT ::H(24)
        FONTNAME "Arial"
        FONTSIZE 9
		FONTBOLD .T.
        INPUTMASK M_NIT
//		MAXLENGTH 14
        TOOLTIP "Número do PIS / PASEP"
        ONENTER      { || IF( ::ConsultaNit( This.Value ) = .T. , JanelaCadastro.TX_Nit.SetFocus , JanelaCadastro.TX_Cpf.SetFocus ) , IF( ::ValidarNit( This.Value ) = .F. , JanelaCadastro.TX_Nit.SetFocus , JanelaCadastro.TX_Cpf.SetFocus ) }
		ONCHANGE	 { || oTela:SetTeclado( This.Value ) }

    END TEXTBOX
	
    DEFINE TEXTBOX TX_Cpf
	
        ROW    ::W(100)
        COL    ::H(350)
        WIDTH  ::W(120)
        HEIGHT ::H(24)
        FONTNAME "Arial"
        FONTSIZE 9
		FONTBOLD .T.
        INPUTMASK M_NIT
//		MAXLENGTH 14
        TOOLTIP "Número do CPF"
        ONENTER      { || IF( ::ConferirCpf( This.Value ) = .T. , JanelaCadastro.TX_TipoApo.SetFocus , JanelaCadastro.TX_Cpf.SetFocus ) }
		ONCHANGE	 { || oTela:SetTeclado( This.Value ) }

    END TEXTBOX
	
    DEFINE COMBOBOX TX_TipoApo
	
        ROW    ::W(160)
        COL    ::H(10)
        WIDTH  ::W(120)
        HEIGHT ::H(100)
		ITEMS {"Especial","Idade","Inzalidez Integral","Invalidez Proporcional","Tempo de Contribuição"}
		VALUE 0
        FONTNAME "Arial"
        FONTSIZE 9
		FONTBOLD .T.
        TOOLTIP "Selecione o tipo de aposentadoria"
        ONCHANGE { || JanelaCadastro.TX_Expediente.SetFocus }

    END COMBOBOX
    
    DEFINE TEXTBOX TX_Expediente
	
        ROW    ::W(160)
        COL    ::H(145)
        WIDTH  ::W(120)
        HEIGHT ::H(24)
        FONTNAME "Arial"
        FONTSIZE 9
		FONTBOLD .T.
        TOOLTIP "Número do Expediente"
        ONENTER { || JanelaCadastro.button_1.SetFocus }

    END TEXTBOX
	
//-------------------------------- Botoes

       DEFINE BUTTONEX button_1
      
         ROW oSistema:W(240)
         COL oSistema:H(290)
         WIDTH oSistema:W(105)
         HEIGHT oSistema:H(48)
         CAPTION "&Salvar"
         PICTURE BTN_NOVOCALC
         TOOLTIP "Grava novo cadastrado"
         FONTNAME "Arial"
         FONTSIZE 9
         FONTBOLD .T.
         FONTCOLOR PRETO
         ACTION { || oArquivo:SalvaCadastro() }
      
      END BUTTONEX
      
      DEFINE BUTTONEX button_2
      
         ROW oSistema:W(240)
         COL oSistema:H(410)
         WIDTH oSistema:W(105)
         HEIGHT oSistema:H(48)
         CAPTION "&Cancelar"
         PICTURE BTN_FECHAR
         TOOLTIP "Cancela Cadastro"
         FONTNAME "Arial"
         FONTSIZE 9
         FONTBOLD .T.
         FONTCOLOR PRETO
         ACTION { || FECHA_JANELA }
      
      END BUTTONEX	
	
	END WINDOW
	
	JanelaCadastro.Center ; JanelaCadastro.Activate
Rotinas:

Código: Selecionar todos

METHOD SetTeclado( cCampo ) CLASS Tela

	LOCAL cFrmName   := ThisWindow.Name
	LOCAL cCmpName   := This.FocusedControl
	LOCAL x          := GetControlIndex( cCmpName, cFrmName )
	LOCAL nMaxLength := _HMG_aControlRangeMax[x]
	LOCAL nInputMask := LEN( _HMG_aControlInputMask[x] )

	IF nInputMask > 0

		nMaxLength := nInputMask
   
	ENDIF

	IF ! EMPTY( cCampo )

		IF nMaxLength == GetProperty( cFrmName , cCmpName , "CaretPos" )
   
			IF VALTYPE( _HMG_aControlDblClick [x] ) != 'U'
	  
				IF VALTYPE( _HMG_aControlDblClick [x] ) == 'B'
		
					IF EVAL( _HMG_aControlDblClick [x]  ) <- Aqui que dá o erro
		  
						_SetNextFocus()
			
					ENDIF
		  
				ELSE
		
					_SetNextFocus()
        
				ENDIF
      
			ELSE
	  
				_SetNextFocus()
      
			ENDIF
	  
		ENDIF
   
	ENDIF

RETURN NIL

METHOD ValidarData( cData ) CLASS Sistema

	LOCAL lRet := .T. , nDia , nMes , nAno
	
	ndia := VAL( SUBSTR( DTOC( cData ) , 1 , 2 ) )
	nMes := VAL( SUBSTR( DTOC( cData ) , 4 , 2 ) )
	nAno := VAL( SUBSTR( DTOC( cData ) , 6 , 4 ) )
	

	IF EMPTY( cData ) .OR. nMes > 12

		MSG_ALERTA( "Data digitada incorreta ! Por favor digite novamente." )
		
		lRet := .F.
		
		cFrmName := thiswindow.name
		cCmpName := this.focusedcontrol
		SETFOCUS &(cCmpName) OF &(cFrmName)		
		
	ENDIF
	
	IF nMes = 2
	
		IF INT( nAno / 4 ) = 0

			IF nDia > 29
			
				MSG_ALERTA( "Data digitada incorreta ! Por favor digite novamente." )
				
				lRet := .F.
				
				cFrmName := thiswindow.name
				cCmpName := this.focusedcontrol
				SETFOCUS &(cCmpName) OF &(cFrmName)		
				
			ELSE
			
				lRet := .T.
				
			ENDIF
			
		ELSE
		
			IF nDia > 28
			
				MSG_ALERTA( "Data digitada incorreta ! Por favor digite novamente." )
				
				lRet := .F.
				
				cFrmName := thiswindow.name
				cCmpName := this.focusedcontrol
				SETFOCUS &(cCmpName) OF &(cFrmName)
				
			ELSE
			
				lRet := .T.
				
			ENDIF		
		
		ENDIF
		
	ENDIF
	
	IF nMes = 1 .OR. nMes = 3 .OR. nMes = 5 .OR. nMes = 7 .OR. nMes = 8 .OR. nMes = 10 .OR. nMes = 12


			IF nDia > 31
			
			
				MSG_ALERTA(  "Data digitada incorreta ! Por favor digite novamente." )
				
				lRet := .F.
				
				cFrmName := thiswindow.name
				cCmpName := this.focusedcontrol
				SETFOCUS &(cCmpName) OF &(cFrmName)				
				
			ELSE
			
				lRet := .T.
			
			ENDIF
			
	ENDIF

	
	IF nMes = 4 .OR. nMes = 6 .OR. nMes = 9 .OR. nMes = 11
		
			IF nDia > 30
			
				MSG_ALERTA( "Data digitada incorreta ! Por favor digite novamente." )
				
				lRet := .F.
				
				cFrmName := thiswindow.name
				cCmpName := this.focusedcontrol
				SETFOCUS &(cCmpName) OF &(cFrmName)				
				
			ELSE
			
				lRet := .T.
			
			ENDIF
	
	ENDIF

RETURN( lRet )

METHOD ValidarPis( cNit ) CLASS Sistema

   LOCAL cPeso  , nParcial , x , nResult2 , cResult , cPis , cParte
   LOCAL cDigito , cNum

   cPis     := ALLTRIM( CHARREM( '. -' , cNit ) )
   cPeso    := "3298765432"
   cParte   := SUBSTR( cPis , 1 , 10 )
   nParcial := 0
   nResult2 := 0
//------------------------------- Calculo do digito   
   FOR x = 1 TO 10

      nParcial := nParcial + ( VAL ( SUBSTR( cParte , x ,1 ) ) * VAL( SUBSTR ( cPeso , x , 1 ) ) )
   
   NEXT x
//--------------------------------- Calculo
	nResult2 := MOD( nParcial , 11 )
   nResult2 := 11 - nResult2
	cDigito  := IF( nResult2 > 9 .OR. nResult2 = 11 , "0" , STR( INT( nResult2 ) , 1 ) )   
//--------------------------------- Resultado
   cResult := cParte + cDigito
   cNum    := EVAL( ::MascaraCpf() , cResult )

RETURN( cNum )
//****************************************************************//
METHOD ValidarNit( cNit ) CLASS Sistema

	LOCAL cPis , cNumPis , lRet := .T. , cConsulta
	
	cNumPis := ::ValidarPis( cNit )

   cPis := ALLTRIM( CHARREM( '. -' , cNit ) )
   
   cConsulta := ::ConsultaNit( cPis )
   
   IF EMPTY( cPis )
   
      MSG_ALERTA( "Campo NIT não pode ser em branco." )
	  
      cFrmName := thiswindow.name
      cCmpName := this.focusedcontrol
      SETFOCUS &(cCmpName) OF &(cFrmName)
	  
      RETURN ( .F. )
	  
   ENDIF
   
   IF cNit <> cNumPis

	  MSG_ALERTA( "Número do NIT: " + cNit + " não confere!" )
	  
      cFrmName := thiswindow.name
      cCmpName := this.focusedcontrol
      SETFOCUS &(cCmpName) OF &(cFrmName)	  
	  
	  RETURN( .F. )
     
   ENDIF

RETURN( lRet )

METHOD ConferirCpf( cCpf ) CLASS Sistema

   LOCAL cPeso  , nParcial , x , nResult2 , cResult , vCpf , cParte
   LOCAL cDigito , cNum

   vCpf     := ALLTRIM( CHARREM( '. -' , cCpf ) )
   cPeso    := "3298765432"
   cParte   := SUBSTR( vCpf , 1 , 10 )
   nParcial := 0
   nResult2 := 0
//------------------------------- Calculo do digito   
   FOR x = 1 TO 10

      nParcial := nParcial + ( VAL ( SUBSTR( cParte , x ,1 ) ) * VAL( SUBSTR ( cPeso , x , 1 ) ) )
   
   NEXT x
//--------------------------------- Calculo
   nResult2 := MOD( nParcial , 11 )
   nResult2 := 11 - nResult2
   cDigito  := IF( nResult2 > 9 .OR. nResult2 = 11 , "0" , STR( INT( nResult2 ) , 1 ) )   
//--------------------------------- Resultado
   cResult := cParte + cDigito
   cNum    := EVAL( ::MascaraCpf() , cResult )

   IF cNum <> pCpf
   
      MsgStop('CPF núemero: ' + pCpf + ' é inválido','Atenção !!!')
      lRet := .F.
	  
      cFrmName := thiswindow.name
      cCmpName := this.focusedcontrol
      SETFOCUS &(cCmpName) OF &(cFrmName)
      
   ELSE
   
      lRet := .T.
   
   ENDIF
         
RETURN(lRet) 
Espero que algum dos colegas me ajudem a resolver este problema. Estou utilizando Minigui Extend 2.4.4 e Windows 8.1 PRO 64 bits.

Abraços,

Paulo - Jacareí/SP
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Erro

Mensagem por alxsts »

Olá!

Provavelmente a expressão abaixo está retornando um valor diferente de .T. ou .F.:

Código: Selecionar todos

EVAL( _HMG_aControlDblClick [x]  )
[]´s
Alexandre Santos (AlxSts)
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Erro

Mensagem por Paulo_CPV »

Boa tarde, Amigos do Forum!

Alguém de vocês me poderia explicar o porque quando eu pego o exemplo do colega Toledo em outro tópico do Forum não dá nenhum erro e na minha aplicação dá o erro que eu postei aqui.

O tópico aonde está o exemplo do colega Toledo:

https://pctoledo.org/forum/viewto ... =15#p87578

Desde já agradeço a atenção dos colegas.

Abraços,

Paulo - Jacareí/SP
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Erro

Mensagem por Toledo »

Paulo_CPV escreveu:na minha aplicação dá o erro
É exatamente por causa do que o nosso amigo Alexandre observou, o comando EVAL( _HMG_aControlDblClick [x] ) tem que retornar .T. ou .F., e isto não está ocorrendo.

Nos parâmetros ONENTER dos TEXTBOX do seu formulário tem um code block que não retorna um valor lógico (.T. ou .F.), então você teria que incluir no final de cada code block um .T.

Por exemplo:

Código: Selecionar todos

ONENTER      { || IF( ::ValidarData( This.Value ) = .F. , JanelaCadastro.TX_Dib.SetFocus , JanelaCadastro.TX_Sexo.SetFocus ),.T.}
Eu não testei, mas acho que vai dar certo.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Erro

Mensagem por Paulo_CPV »

Boa noite!

Toledo muito obrigado pela sua dica, resolvi o meu problema da seguinte forma:

Minha rotina anterior:

Código: Selecionar todos

ONENTER      { || IF( ::ValidarData( This.Value ) = .F. , JanelaCadastro.TX_Dib.SetFocus , JanelaCadastro.TX_Sexo.SetFocus )}
Funcionou perfeitamente desta forma:

Código: Selecionar todos

ONENTER      { || IF( ::ValidarData( This.Value ) = .F. , .F. , .T. )}
Desde já agradeço mais uma vez Toledo por me dar uma luz no meu problema.

Abraços,

Paulo - Jacareí/SP
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Erro

Mensagem por Toledo »

Paulo, no seu ONENTER anterior eu não entendi direito na validação o uso dos comandos com SetFocus e também a maneira que você usar para validar o IF(), usando ::ValidarData( This.Value ) = .F.. Bom, se a função ValidarData() já vai retornar .T. ou .F., então não havia necessidade de comparar com o = .F., bastaria inverter o conteúdo dos próximos parâmetros do IF().
Bom, se agora no seu ONENTER não tem mais o SetFocus, então poderia resumir mais ainda este código, basta usar:

Código: Selecionar todos

ONENTER      { || ::ValidarData( This.Value ) }
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Erro

Mensagem por Paulo_CPV »

Bom dia, Toledo!

Pois bem, peguei a sua sugestão e fui fazer os testes, deixei a função do jeito como você postou a única coisa que eu alterei foi na função de verificar a data. Quando eu deixo o campo data em branco ele me dá a mensagem de erro corretamente, mas quando eu digito por exemplo "19/13/2015" ele não mostra a mensagem de erro e não foca no campo para eu alterar a data. Por que ocorre este erro?

Código: Selecionar todos

ONENTER { || ::ValidarData( This.Value )  }


METHOD ValidarData( cData ) CLASS Sistema

	LOCAL lRet := .T. , nMes
	
	IF EMPTY( cData )
	
		MSG_ALERTA( "Data digitada incorreta ! Por favor digite novamente." )
		
              cFrmName := thiswindow.name
              cCmpName := this.focusedcontrol
              SETFOCUS &(cCmpName) OF &(cFrmName)

	       lRet := .F.
     
	ENDIF

      IF VAL( SUBSTR( DTOC( cData ) , 4 , 2) ) > 12 // Digitando o mês errado

		MSG_ALERTA( "Data digitada incorreta ! Por favor digite novamente." )
		
               cFrmName := thiswindow.name
               cCmpName := this.focusedcontrol
               SETFOCUS &(cCmpName) OF &(cFrmName)

		lRet := .F.
     
	ENDIF

RETURN( lRet )

Abraços,
Paulo - Jacareí/SP
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Erro

Mensagem por Toledo »

Olá Paulo, nós já falamos sobre este problema com a data neste tópico:

Controles Automáticos

Segue em anexo o demo que fiz os testes com a data vazia ou incorreta.

Abraços,
Anexos
demo.prg
(4.3 KiB) Baixado 117 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder