Pregunta: | 1864 - SE ME ALENTA MI SISTEMA EN RED USANDO SET FILTER |
Autor: | Alexis Herrera Peralta |
Tengo un sistema trabando en red hecho en clipper5.2 y todas mis bases de datos las muestro filtradas "SET FILTER TO", pero el detalle es que se hace muy lenta las consultas y la apertura de las mismas en las terminales, me recomendaron quitar los set filters pero de que otra manera las filtreo, ya que los filtros es mi base para mostrarle los datos al usuario. Gracias de antemano |
Respuesta: | Daniel Portunato |
La forma más sencilla de reemplazar los filtros es con índices condicionales. Reemplazar la sentencia: SET FILTER TO Condicion_Filtro por: INDEX ON Nombre_Tabla->Campo_Ordenamiento TO Nombre_Indice FOR Condicion_Filtro Este método no será mucho más rápido, pero una vez generado el índice, el GOTOP, SKIP y GOBOTTOM responderán instantáneamente, y no se perderá el cursor vaya a saber dónde. Atención: Como estás en una red, deberás generar un nombre de índice único por puesto de trabajo. Se podría usar una variable de entorno de la siguiente forma: En un .BAT de inicio poner en cada terminal: SET PUESTO=xxx xxx diferente en cada estación. En el programa recuperar el puesto: cNomTer := GETENV ( "PUESTO" ) IF EMPTY ( cNomTer ) cNomTer := "00" ENDIF cNomInd := "TEMP" + cNomTer // Crear el índice INDEX ON Nombre_Tabla->Campo_Ordenamiento TO cNomInd FOR Condicion_Filtro Si la expresión del filtro es la del índice activo, se puede usar una forma más sofisticada con la maquinaria del TBROWSE, y esto sí es rapidísimo. Por ejemplo para traer los ítem de una factura, tabla cuyo índice es NroComprobante + NroItem. Si necesitás algo así, pedímelo por mail, ya que es un poco largo. |