Page 1 of 1

Muy Urgente, por favor!!

PostPosted: Tue May 13, 2008 3:55 pm
by Loren
Compañeros:

Tengo que encontrar una solución rápida al problema que tengo:
Tengo una aplicación corriendo en una RED Local (1 PC Servidor + 2 terminales conectados mediante un HUB), pero la aplicación se ralentiza hasta 9 segundos en refrescar un Dialog si hay más de 2 o más PC activos.
En mi aplicación no tengo SET FILTER ni LOCATES, todo está a base de seek y find. Uso DBF y NTX.
El S.O. es W.vista y tiene desactivado el Fireware, Antivirus y demás...

Si accede a las DBF 1 solo PC va como un tiro... el problema es cuando acceden varios.

Que solución tiene?
Mil gracias.
LORENZO.

PostPosted: Tue May 13, 2008 4:23 pm
by derpipu
Hola Loren, para empezar yo revisaria mis cables de red, y ademas cambiaria el HUB por un SWITCH..

Saludos

P.D. tambien les daria una revisada a mis funciones con las que abro las bases de datos y ver que todo estuviera correcto.

Re: Muy Urgente, por favor!!

PostPosted: Tue May 13, 2008 5:19 pm
by Armando Picon
Loren wrote:Compañeros:

Tengo que encontrar una solución rápida al problema que tengo:
Tengo una aplicación corriendo en una RED Local (1 PC Servidor + 2 terminales conectados mediante un HUB), pero la aplicación se ralentiza hasta 9 segundos en refrescar un Dialog si hay más de 2 o más PC activos.
En mi aplicación no tengo SET FILTER ni LOCATES, todo está a base de seek y find. Uso DBF y NTX.
El S.O. es W.vista y tiene desactivado el Fireware, Antivirus y demás...

Si accede a las DBF 1 solo PC va como un tiro... el problema es cuando acceden varios.

Que solución tiene?
Mil gracias.
LORENZO.


abres y cierras las tablas? con frecuencia esto enlentece las aplicaciones que trabajan en red (además de un posible problema con cables y el Hub)

PostPosted: Tue May 13, 2008 8:48 pm
by Loren
Efectivamente compañeros:

1.- Sustituire el HUB por un SHITCH
2.- Abro las DBF al principio de mi EXE y las cierro al SALIR, pero no obstante en determinados procesos cierro (calias->(dbclosearea()) y abro ( use cDbf index cIndex shared alias cAlias) porque es la única manera de refrescarlas en la RED.

Descubrí que si un terminal crea y guarda 1 registro en una DBF y otro terminal necesita mostrar todos los registros, nunca se muestra el último introducido. Cerrando y abriendo las DBF soluciono este problema.

La cosa es que si accedo con 1 solo terminal la cosa va como 1 tiro. Si acceden varios se ralentizan enormemente.

Un saludo.
LORENZO.

PostPosted: Tue May 13, 2008 8:55 pm
by karinha
muestra como haces los REPLACES...

Saludos.

PostPosted: Tue May 13, 2008 9:09 pm
by Armando Picon
Loren wrote:Efectivamente compañeros:

1.- Sustituire el HUB por un SHITCH
2.- Abro las DBF al principio de mi EXE y las cierro al SALIR, pero no obstante en determinados procesos cierro (calias->(dbclosearea()) y abro ( use cDbf index cIndex shared alias cAlias) porque es la única manera de refrescarlas en la RED.

Descubrí que si un terminal crea y guarda 1 registro en una DBF y otro terminal necesita mostrar todos los registros, nunca se muestra el último introducido. Cerrando y abriendo las DBF soluciono este problema.

La cosa es que si accedo con 1 solo terminal la cosa va como 1 tiro. Si acceden varios se ralentizan enormemente.

Un saludo.
LORENZO.


Necesitas con urgencia refrescar tu dialogo (o los objetos que tiene en él):

oDlg:refresh() o
oWnd:refresh()

en el peor de los casos requieres hacer un comando tal como:

refreshall()

PostPosted: Tue May 13, 2008 9:50 pm
by FiveWiDi
Loren wrote:Efectivamente compañeros:

1.- Sustituire el HUB por un SHITCH
2.- Abro las DBF al principio de mi EXE y las cierro al SALIR, pero no obstante en determinados procesos cierro (calias->(dbclosearea()) y abro ( use cDbf index cIndex shared alias cAlias) porque es la única manera de refrescarlas en la RED.

Descubrí que si un terminal crea y guarda 1 registro en una DBF y otro terminal necesita mostrar todos los registros, nunca se muestra el último introducido. Cerrando y abriendo las DBF soluciono este problema.

La cosa es que si accedo con 1 solo terminal la cosa va como 1 tiro. Si acceden varios se ralentizan enormemente.

Un saludo.
LORENZO.


No abras y cierres la DBF en el PC 'x', sino en el PC 'y' donde has realizado el append o el replace seguido realiza un Goto( Recno() ). Pruébalo y cuentas.

Saludos
Carlos G.

PostPosted: Wed May 14, 2008 7:07 am
by Loren
Haber compañeros:
Esta mi pantalla de ventas:

[/img]Image[img]

Cada boton representa "Localidades" (Libres, Ocupadas y Reservadas). Si desde un terminal yo vendo el asiento 35, en el otro terminal no cambia a color ROJO como ocupado.
Al modificar una Localidad yo hago:
unlock()
replace ....
dbcommit()
dbunlock()
....
Esto no me refresca en el resto de terminales. Tengo que hacer un TIMER que sí me refresca pero revisar todos los asientos cuando hay varios terminales operando en la RED puede suponer hasta 9 seg. de espera.

¿ Alguna solución ?
Mil gracias.
LORENZO
[/img]

PostPosted: Wed May 14, 2008 9:57 am
by Carlos Mora
Hola Lorenzo,

es muy probable que el problema sean los Oportunistic Locks. Hay que desactivarlos en el servidor y las estaciones. Ahora estoy en el trabajo y no tengo las claves de registro exactas, pero si las buscas en Microsoft seguro las vas a encontrar.

Si puedes, te recomiendo que uses un samba de servidor.

Un saludo,
Carls