Ayuda con error de lectura al acceder de forma concurrente a una aplicación en red

Tengo las siguientes inquietudes:
Tengo una Aplicación que lo estoy compartiendo en red (tabla temporal), pero cuando quiero salir de una terminal y si una de ellas la esta utilizando me sale que no puede salir porque es de solo lectura. Apatentemente todos mis formularios funcionan bien en la red, solamente al querer salir y estar usando un usuario em formulario de ventas ocurre el problema antes mencionado. En mi formulario para salir del sistema tengo esto:
CLOS ALL
SELECT TEMPORAL
IF FLOCK()
Dele all
PACK
Endif
quit
Quisiera poder hacer una consulta de productos que tengo en una tabla mostradas en un brid, pero por descripción del producto; por ejemplo tengo angulo 1 1/2" SIDER, angulo 1 3/4" ACEROS; cuando haga la consulta ni bien ingrese la palabra sider me muestre el primero; estoy usando lo siguiente en un cuadro de texto procedimiento interactivechange:
SELECT articulos
SET FILTER TO UPPER(ALLTRIM(detalle_art))=UPPER(ALLTRIM(thisform.txtbuscar.value))
thisform.grid1.Refresh
esto me muestra los productos pero con las letras que empieza el producto mas no por cualquier letra que tenga el producto.

1 respuesta

Respuesta
1
Con respecto al primer problema, PACK no puedes usar en modo compartido, es un comando que necesita acceso exclusivo a la tabla, si usas delete all
y SET DELETE esta en ON, entonces ya no mostraran los datos, aunque físicamente estarán allí, pero PACK no puedes usar en estas condiciones. Para ello existen los cursores en fox, para que puedas tener un temporal que solamente se cree en la memoria de cada terminal, CREATE CURSOR TEMPORAL(código N(2), nombre C(30))
Y soporta prácticamente todos los comandos de las tablas, hasta puedes indexarlos.
Con respecto al segundo tema para ello esta la funcon AT() o ATC(), ATC() no diferencia mayusculas de minúsculas por lo tanto es mas completo, y seria asi
set filter to atc(alltr(thisform.txt_buscar.value),detalle_art) > 0
Y listo, te traera la palabra sin importar donde este, inclusive si no esta escrito completamente, por ejemplo
x="david"
?atc('vid',x)
Devuelve 3, indica que encontró la cadena en la tercera posición, es decir si es mayor que cero, ya esta listo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas