TDATABASE en: FWH26.03

Post Reply
User avatar
karinha
Posts: 8720
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

TDATABASE en: FWH26.03

Post 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.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
Antonio Linares
Site Admin
Posts: 44515
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: TDATABASE en: FWH26.03

Post 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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply