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
FAvor problemas con Meter
-
- Posts: 1033
- Joined: Fri Oct 07, 2005 3:33 pm
- Location: Cochabamba - Bolivia
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()})
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.
R.F.
-
- Posts: 330
- Joined: Fri May 25, 2007 9:06 pm
Muchas Gracias por la respuesta, me queda super claro.
Saludos,
Antonio
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()})