Timer y Red Local

Timer y Red Local

Postby Manuel Aranda » Mon Mar 02, 2009 6:09 pm

Nunca antes hasta ahora había tenido necesidad de usar un timer, por lo que probablemente esté haciendo algo mal. La cuestión es la siguiente: En un ambiente de red local necesito refrescar un oSay contenido en un diálogo (Función Colas() ) con el contenido de un campo de un fichero dbf que cambia de valor por acción dada desde cualquier terminal.(Función Siguiente() ) El hecho es que si lo hago desde el mismo terminal en que abro el diálogo el oSay1 se refresca convenientemente; sin embargo si el cambio se realiza desde cualquier otro terminal no se mueve. He comprobado que el dato se graba en el fichero. Este es el código usado:
Code: Select all  Expand view

*********************************
STATIC FUNCTION COLAS()
********************************
Local oDlg
Local oSay1
Local cNumero:=STR(FRECU3->ANTERIOR,2)
//
DEFINE DIALOG oDlg RESOURCE "COLAS"
REDEFINE SAY oSay1  PROMPT cNumero  ID 201 OF oDlg
//
ACTIVATE DIALOG oDlg CENTER ON INIT MiTimerOn(oSay1,oDlg) NOMODAL
//
RETURN NIL

**********************************************************
STATIC FUNCTION  MiTimerOn(oSay1,oDlg)
**********************************************************
DEFINE TIMER oTimer OF oDlg INTERVAL 1000 ACTION TimerAction(oSay1)
ACTIVATE TIMER oTimer
RETURN NIL

**********************************************
STATIC FUNCTION TimerAction(oSay1)
**********************************************
Local cAnterior:= STR(FRECU3->ANTERIOR,2)
Local cNumero  := STR(FRECU3->NUMERO,2)
//
IF cNumero <> cAnterior
   //
     oSay1:SetText(cNumero)
     //
     IF FRECU3->(!RecLock(5))
       TONE(400,2)
       TONE(200,2)
       //
       MsgInfo("No es posible la modificación;inténtelo más tarde, por favor.")
      //
      ELSE
         REPLACE FRECU3->Anterior WITH FRECU3->Numero
         FRECU3->(DbRunLock())
         FRECU3->(DbCommit())
      ENDIF
      //
ENDIF
//
RETURN NIL

**************************************
STATIC FUNCTION SIGUIENTE()
**************************************
Local nNumero  := FRECU3->Numero
 nNumero = nNumero+1
  //
     IF FRECU3->(!RecLock(5))
        TONE(400,2)
        TONE(200,2)
        //
        MsgInfo("No es posible la modificación;inténtelo más tarde, por favor.")
      //
      ELSE
         REPLACE FRECU3->Numero WITH nNumero
         FRECU3->(DbRunLock())
         FRECU3->(DbCommit())        
      ENDIF
      //
//ENDIF
//
RETURN NIL
 
Un saludo,
Manuel

xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: Timer y Red Local

Postby Patricio Avalos Aguirre » Mon Mar 02, 2009 7:11 pm

hola

Haz lo siguiente

Code: Select all  Expand view
STATIC FUNCTION TimerAction(oSay1)
**********************************************
Local cAnterior, cNumero

Frecu3->( dbSkip(0) ) //aqui refrescamos el registro

cAnterior:= STR(FRECU3->ANTERIOR,2)
cNumero  := STR(FRECU3->NUMERO,2)
//
IF cNumero <> cAnterior
Last edited by Patricio Avalos Aguirre on Tue Mar 03, 2009 6:52 pm, edited 1 time in total.
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: Timer y Red Local

Postby Manuel Aranda » Tue Mar 03, 2009 2:59 pm

Muchísimas gracias Patricio. Ha funcionado perfecto.
Un saludo,
Manuel

xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 63 guests