Page 1 of 1

TDATABASE en: FWH26.03

Posted: Thu Jul 16, 2026 7:50 pm
by karinha

Estimado Antônio: anteriormente en versiones anteriores:

--> VAR DbFunciona:END
--> VAR DbFunciona:CARGO

Esto funcionaba.
Sin embargo, ahora parece que se trata de palabras reservadas y ya no funciona; el contenido del campo no se muestra en el GET.

Ejemplo:

Code: Select all | Expand

    IF lAppend  //-> Inclusao

    DbFunciona:SetOrder( 1 )    // Ordenado Por Codigo
    DbFunciona:GoBottom()

    nCodigo := ( DbFunciona:Codigo )

    DbFunciona:SetBuffer( .T. )
    DbFunciona:Blank()

    IF EOF()
      nCodigo := [1]
      (DbFunciona:Codigo) := nCodigo // Se For a Primeira Vez Que Cadastra
    ELSE
       (DbFunciona:Codigo) := SPACE(18)
    ENDIF

    DbFunciona:Cidade     := [SAO PAULO              ]
    DbFunciona:SetOrder( 2 ) // Ordenado Por Nome do Cliente

 ELSE //-> Altera‡Æo

    IF EOF()

        MsgStop( OemToAnsi( "Aten‡Æo Usu rio:                      " ) +CRLF+ ;
                 OemToAnsi( "Banco de Dados Est  Vazio, Cadastre   " ) +CRLF+ ;
                 OemToAnsi( "os Elementos Para Esta Opera‡Æo.      " ) +CRLF+ ;
                 OemToAnsi( "Acesso NÆo Permitido ao Banco de Dados" ),       ;
                 OemToAnsi( "Mensagem de Erro Para o Usu rio.      " ) )

        GO TOP

        RETURN( .F. )

    ENDIF

    nRecNo := (DbFunciona:cAlias)->( RecNo() )
    DbFunciona:GoTo( nRecNo )
    nOldRecNo := (DbFunciona:cAlias)->( RecNo() )

     // ?  (DbFunciona:cAlias)->CARGO  palavra CARGO E RESERVADA. ??
     // MUDEI PARA FUNCAO.

ENDIF

// NO FUNCIONA EN FWH2603, ANTES FUNCIONABA

// Neste Get, entra o Endereco do funcionario
REDEFINE GET aGet[004] VAR DbFunciona:END  PICTURE "@K!"      ;
   VALID !VAZIO( DbFunciona:End )                        ;
   ID 23 OF oDlg                                              ;
   FONT oFont UPDATE                                          ;
   COLOR CLR_BLACK, CLR_WHITE                                 ;
   CURSOR  oHand                                              ;
   MESSAGE ( OemToAnsi( "Endere‡o" ) )

//-> Cargo do funcionario
REDEFINE GET aGet[025] VAR DbFunciona:CARGO ID 44 OF oDlg     ;
   PICTURE "@K !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"       ;
   FONT oFont UPDATE                                          ;
   COLOR CLR_BLACK, CLR_WHITE                                 ;
   CURSOR  oHand                                              ;
   MESSAGE ( OemToAnsi( "Cargo do Funcionario" ) )

Regards, saludos.


Re: TDATABASE en: FWH26.03

Posted: Fri Jul 17, 2026 8:38 am
by Antonio Linares

Estimado Joao,

:END se rompió porque colisiona con el METHOD End() INLINE ::Close() (añadido en 2017), que cierra la tabla en vez de llegar al OnError que resuelve campos. database.prg:306

:CARGO colisiona con DATA Cargo (existe desde 2010), así que se resuelve contra ese DATA vacío y nunca llega al OnError. database.prg:82

Solución: usa acceso explícito por campo, p.ej. (DbFunciona:cAlias)->CARGO, DbFunciona:hRec["CARGO"] o ::FieldGet/::FieldPut. database.prg:1623-1624

Cuando envías DbFunciona:CARGO ó End, el sistema de clases primero busca un método o DATA con ese nombre. Si existe, lo usa directamente y OnError nunca llega a ejecutarse. Solo si el mensaje es desconocido, OnError mira si coincide con un campo (::FieldPos) y hace FieldGet/FieldPut. database.prg:1623-1624