FoxPro/Visual FoxPro - BUSQUEDA DE UN REGISTRO DIGITANDO UNA LETRA

 
Vista:

BUSQUEDA DE UN REGISTRO DIGITANDO UNA LETRA

Publicado por FIDEL AUGUSTO (1 intervención) el 10/06/2009 00:25:33
ENCONTRE ESTA RUTINA EN LA WEB Y LA MODIFIQUE PARA TENER COMO CONSULTA EN MI PROGRAMA DE ARTICULOS DE MI BASE DE DATOS ME FUNCIONA BIEN LO QUE QUIERO ES QUE CUANDO BUSQUE EN EL BROWSE EL PRODUCTO DIGITE LA PRIMERA LETRA Y ME APARESCA EN MI PANTALLA DE CONSULTA CON UN ENTER.SE LOS AGRADECERIA ENORMEMENTE EL PROGRAMA ESTA EN FOXPRO 2.6
SALUDOS DE PERU.
GRACIAS.
****************************************************
Select 4
index on armpcart to art
PUBLIC wCod, wdes

Store Space(9) To wCod
store Space(55) To wdes

Clear

ON KEY LABEL Alt+F1 DO FNAyuda WITH VARREAD( )

@1,1 SAY 'Codigo :' GET wCod PICTURE "!!!-99999" VALID FNCodigo(wCod) ;
MESSAGE "Digite Codigo de Empresa ó <ALT+F1> Si quiere Ayuda"
@2,1 SAY 'Nombre :' GET wdes PICTURE "@!" WHEN wCod = '9999999999'
READ

* La Opcion WHEN wkCod = '9999999999' que figura en el GET de wkNom y wkDir
* es una Mintira Util (Solo para que el Cursor NO se Detenga en estos Campos)
*
RELEASE wCod, wdes
RETURN

*
* FNAyuda
*
PROCEDURE FNAyuda
PARAMETERS pField
**
** El DO CASE es para que sirva como una rutina de ayuda
** para diferentes campos en una tabla o en tablas distintas.
**
sele 4
use armpsyst
ON KEY LABEL F1
ACTIVATE SCREEN
ON KEY LABEL ENTER KEYBOARD "{Ctrl+W}"
DEFINE WINDOWS WLISTADO FROM 20,3 TO 42,78 TITLE "Relaci¢n de Art¡culos"
ACTIVATE WINDOWS WLISTADO
BROWSE FIELDS armpcart : H="Codigo", armpnart : H="Producto";
NOMODIFY NOAPPEND NODELETE NOMENU
deactivate window all
ON KEY LABEL ENTER
DO CASE
CASE pField = "WCOD"
SELECT 4
IF LASTKEY() <> 27
wCod = armpsyst.armpcart
wdes = armpsyst.armpnart
SHOW GET wCod
SHOW GET wdes
_CUROBJ = OBJNUM(wCod)
KEYBOARD '{ENTER}'
ENDIF

CASE pField = ""
CASE pField = ""
ENDCASE
RETURN

*
* FNCodigo
*
FUNCTION FNCodigo
PARAMETERS pCod
sele 4
*USE armpsyst AGAIN ALIAS dd ORDER TAG 4
index on armpcart to art
IF Not SEEK(pCod, 'armpsyst')
WAIT WINDOW "ERROR !!! No Existe Codigo de Producto !!!" NOWAIT
RETURN(.F.)
ENDIF
wdes = armpsyst.armpnart
SHOW GET wdes
RETURN(.T.)

*****************************************************************
ADEMAS ENCONTRE ESTA RUTINA DONDE SI BUSCA POR LA LETRA DIGITADA
SET TALK OFF
DEFINE WINDOW example FROM 24,3 TO 41,76 TITLE ' P & F Dentals Products ' ;
FLOAT SHADOW SYSTEM COLOR SCHEME 1
*** Fill the array cityarray with city data ***
***Cityarray llenar la matriz con datos de la ciudad****
SELECT DISTINCT armpnart FROM armpsyst INTO ARRAY armpnartarray
SELECT armpsyst
*** Define a popup that contains the structure of customer ***
***Definir una ventana emergente que contiene la estructura del Armpsyst***
DEFINE POPUP popstru PROMPT STRUCTURE SCROLL MARGIN MARK CHR(16)
*** Define a popup containing data from the company field ***
***Definir una ventana emergente que contiene los datos de la empresa sobre el terreno***
DEFINE POPUP popfield PROMPT FIELD armpnart SCROLL MARGIN MARK CHR(16)
ACTIVATE WINDOW example
@ 1,3 SAY 'Structure Popup:'
*** Get information using predefined popstru popup ***
***Obtener información predefinida utilizando popstru emergente***
*@ 2,2 GET liststructure POPUP popstru SIZE 11, 20;
* DEFAULT FIELD(1,'armpsyst') WHEN refresh( );
* VALID dispitem(liststructure) COLOR SCHEME 9
*@ 13,3 SAY liststructure SIZE 1, 18
*@ 1,26 SAY 'Field Popup:'
*** Get information using predefined popfield popup ***
*@ 2,25 GET listfield POPUP popfield SIZE 11, 20 ;
* DEFAULT armpnart WHEN refresh( ) VALID dispitem(listfield) COLOR SCHEME 9
*@ 13,26 SAY listfield SIZE 1, 18
@ 1,2 SAY 'Lista de Productos:'
*** Get information using predefined array ***
***Obtener información predefinida utilizando popfield emergente****
@ 2,2 GET arrayitem FROM armpnartarray SIZE 11, 68 ;
DEFAULT armpnartarray(1) WHEN refresh( ) VALID dispitem(arrayitem);
COLOR SCHEME 2
@14,60 GET ok FUNCTION '*t !OK' DEFAULT 1 SIZE 1, 6
READ CYCLE SHOW popshow( ) && Activate gets
RELEASE WINDOW example
RELEASE POPUPS popstru, popfield

*FUNCTION refresh
*** Refresh window information without calling subroutine ***
***Actualizar ventana de información sin poner subrutina***
SHOW GETS OFF

*FUNCTION dispitem
***Display which item has been chosen***
***Mostrar que el tema se ha elegido***
PARAMETER items
WAIT WINDOW 'You have chosen: ' + ALLTRIM(ITEMs) NOWAIT ;

*FUNCTION popshow
*** Display current items for each list ***
***Mostrar los artículos en cada una de las listas***
*@13,3 say LISTSTRUCTURE SIZE 1, 18
*@13,26 say LISTFIELD SIZE 1, 18
@14,3 say arrayitem SIZE 1, 18
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:BUSQUEDA DE UN REGISTRO DIGITANDO UNA LETRA

Publicado por Pablo (argentina) (433 intervenciones) el 10/06/2009 01:31:51
Hola Amigo , Mira mucho ya no me acuerdo del fox 2.6 pero una Sugerencia y si podes, empeza a programar todo en Visual, a mi me pasaba que ya en el 2.6 no se pueden hacer un monton de cosas que con visual con las veas es increible. Trata de empezar a hacer algo en visual si es que podes. Si tu aplicacion esta toda hecha en foxpro 2.6 y te decides a empezar con visual. Lo que puedes hacer es bajarte de internet el REFOX y con eso decompilas tu aplicacion y la haces para visual, obviamente vas a tener que hacerle muchos ajustes pero para ir viendo, el REFOX lo podes bajar de la pagina de taringa.net ahi esta todo bien explicado. Es solo un comentario.

Igualmente alguien te va a ayudar con tu problema como me vienen ayudando a mi. Suerte!!!!!!!!!!!!!!!!

Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BUSQUEDA DE UN REGISTRO DIGITANDO UNA LETRA

Publicado por Jose Gamboa (33 intervenciones) el 10/06/2009 23:51:47
no entendi muy bien cual es el resultado que quieres obtener, pero justamente yo tengo una clase hecha en vfp6 que te busca no en un campo sino en todos los campos de una tabla un valor numerico o alfanumerico, la idea es escribir en un textbox el valor a buscar y llamar a una funcion que devuelve la id de registro y luego saltar a esa id por otra funcion.
Puedes utilizar la funcion AT o ATC (no se si funcionen en el 2.6) para buscar caracteres dentro de una cadena
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar