Hacer consultas desde un tipeo.

¿Hola cómo estas?. Te quería hacer una consulta, espero me puedas ayudar, pasa que lo que quiero hacer más o menos lo vi en una respuesta tuya a un usuario. Lo que quiero es que cuando al tipear el código de producto en un textbox, me traiga la información necesaria del mismo, como descripción del producto, preciocosto, precio neto, etc, y me copie esa información en otros textbox. Encontré un ejemplo tuyo que es el siguiente:
IF nKeyCode = 13 
SELECT * FROM tablaproductos WHERE campocodigo = THIS.Value INTO CURSOR micursor
      IF RECCOUNT ('micursor')> 0
            THISFORM.Grid1.Column2.Text1.Value = micursor.descripcion    &&Descripcion&&
            THISFORM.Grid1.Column3.Text1.Value = micursor.precio      &&precio&&
             ELSE 
                  RETURN .F.
                    MESSAGEBOX ('El producto no existe') &&, 0 + 64)
        ENDIF
Endif
Ahora como no estoy usando un cursor temporal para los artículos, sino una tabla primaria ARTÍCULOS. Quisiera saber como modificaría el ejemplo usando la tabla mencionada
por ejemlpo diria que en tablaproductos iria ARTICULOS, campocodigo=idarticulo, tendria que poner INTO CURSOR? O como pondria?.Te comento que solo uso un cursor temporal para el detalle de la venta.Lo primero que hago es selecionar el articulo por medio de una consulta hacia un formulario donde tbn tgo los articulos, los selecciono y los traigo hacia los text, y al confirmar hago click en ok y lo guardo en un grid q esta enlazado ene l cursor temporal. Ahora bien, lo que tambien quiero es que al tipear haga lo mismo q el ejemplo anterior.Me podrias ayudar?espero me logres entender lo planteado sino me lo haces saber. Muchas gracias

1 respuesta

Respuesta
1
Disculpa la demora en contestarteee! :/ Tal como va tu caso, la solución seria así:
Hay algunas opciones:
1. Lo más "integral" que podrías hacer es establecer una condición de filtro para la tabla exactamente sobre el registro que buscas. El comando SET FILTER TO permite que podas buscar un registro en la tabla... y si dicho registro existe, se muestra unicamente ese (registro) disponible en la tabla. Si tu .dbf se llama artículos... podría ser así: suponiendo que tienes la tabla (con los campos: idarticulo, nombrearticulo, unidadmedida, fechacompra) en el entorno de datos de tu form, y que en el form tienes un text (text1) donde digitas el código del articulo a ser buscado, en el evento VALID del text1 de búsqueda, pones un código como este:
SELECT articulos 
SET FILTER TO idarticulo = (THISFORM.Text1.Value)
THISFORM.Refresh
2. Otra opción es hacer un LOCATE FOR sobre la tabla...! Este comando, busca la coincidencia del dato buscado que se asocie al primer registro de la tabla (encontrado). Funciona casi igual que SET FILTER...! Podes buscar info... o en otra consulta, preguntarme sobre el funcionamiento de los dos... y su diferencia! :) Tomando los supuestos anteriores... se procedería a realizar la búsqueda así:
SELECT articulos
LOCATE FOR idarticulos = (THISFORM.Text1.Value)
IF FOUND()    &&Si el articulo existe en el campo de la tabla
THISFORM.Textnombrearticulo.Value = articulos.nombrearticulo    
THISFORM.Textunidadmedida.Value = articulos.unidadmedida
THISFORM.Textfechacompra.Value = articulos.fechacompra
             ELSE 
                    MESSAGEBOX("El articulo buscado no esta registrado")
Endif
Proba cual de las soluciones se adecua más a tus necesidades! Si tienes problemas o dudas... consultammeeee! Con gusto te ayudare!
Saludos!
Desde Managua, Nicaragua!
Ravenn! :D :D :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas