FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour FAvor problemas con Meter
Posts: 330
Joined: Fri May 25, 2007 09:06 PM
FAvor problemas con Meter
Posted: Thu Aug 23, 2007 09:45 PM

Hola Amigos:

Disculpen mi ignorancia, pero necesito saber como puedo poner una METER mientras abro una base de datos, de tal forma de mostrarle un aviso en pantalla al usuario, mientras se realiza este proceso.

Saludos
Antonio

Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
FAvor problemas con Meter
Posted: Thu Aug 23, 2007 10:10 PM

Hola,

puedes hacer algo asi

DEFINE DIALOG oDlg .....

REDEFINE METER oMeter......

ACTIVATE DIALOG oDlg NOWAIT
openDB( oMeter, oDlg )

FUNCTION openDB( oMeter, oDlg )
USE ....
// abres la base de datos
// actualizar oMeter

     oDlg:end()

RETURN NIL

Solo es una idea, no lo hice antes

saludos

Marcelo

Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
FAvor problemas con Meter
Posted: Thu Aug 23, 2007 11:50 PM

No es posible hacerlo, por 2 razones basicamente:

1) Un meter requiere de "callbacks" es decir, que cada determinado tiempo se ejecute una función que actualice la posicion del meter, cosa que no es posible realizar mientras se abre una tabla, porque el proceso de apertura (USE) no produce ninguna llamada a nada, al contrario del proceso de indexacion, que se puede "interceptar" para mostrar el grado de avance del mismo.

2) Un meter requiere un valor minimo y un valor maximo ¿ como los vas a establecer ?, si tu valor maximo es el numero de registros de la base de datos, este no lo puedes saber (lastrec() o reccount()) sino hasta que la tabla está abierta, para entonces ya es demasiado tarde, la tabla se abrirá mucho antes de que pudieras establecer los valores de control del meter.

Quiero pensar que tu base de datos es demasiado grande, y tarda mucho tiempo en abrirse (lo cual es logico, hay que copiar todos los registros a la estacion de trabajo) y lo que quieres es mostrar un meter conforme se va realizando la apertura, lo cual no es posible por las razones explicadas anteriromente.

Sugerencia, utiliza un MsgWait:

MsgWait ("Espere un momento","Abriendo tabla", {|| DBUSEAREA()})

Saludos

R.F.
Posts: 330
Joined: Fri May 25, 2007 09:06 PM
FAvor problemas con Meter
Posted: Thu Aug 30, 2007 04:57 PM
Muchas Gracias por la respuesta, me queda super claro.

Saludos,
Antonio

RF wrote:No es posible hacerlo, por 2 razones basicamente:

1) Un meter requiere de "callbacks" es decir, que cada determinado tiempo se ejecute una función que actualice la posicion del meter, cosa que no es posible realizar mientras se abre una tabla, porque el proceso de apertura (USE) no produce ninguna llamada a nada, al contrario del proceso de indexacion, que se puede "interceptar" para mostrar el grado de avance del mismo.

2) Un meter requiere un valor minimo y un valor maximo ¿ como los vas a establecer ?, si tu valor maximo es el numero de registros de la base de datos, este no lo puedes saber (lastrec() o reccount()) sino hasta que la tabla está abierta, para entonces ya es demasiado tarde, la tabla se abrirá mucho antes de que pudieras establecer los valores de control del meter.

Quiero pensar que tu base de datos es demasiado grande, y tarda mucho tiempo en abrirse (lo cual es logico, hay que copiar todos los registros a la estacion de trabajo) y lo que quieres es mostrar un meter conforme se va realizando la apertura, lo cual no es posible por las razones explicadas anteriromente.

Sugerencia, utiliza un MsgWait:

MsgWait ("Espere un momento","Abriendo tabla", {|| DBUSEAREA()})

Continue the discussion