Autocompletar los text box :)
Buenas Noches Ing., tengo una situación con los ejemplos que hay en internet referente a la propiedad de autocompletar los texbox, el detalle es que en los ejemplos esta muy funcional y perfecto, solo que no logro incorporarlo a un textbox definido por mi en mi formulario, podrías ayudarme a que sea totalmente funcional directamente en un formulario? Ya le he dado muchas vueltas y estoy estancado siendo que se ve "sencillo"
en mi formulario copio exactamente de acuerdo al código por ejemplo;
Te código original del init del procedimiento del programa
PROCEDURE INIT LOCAL lcDbfAuto, lcDbfOrigen *-- Ruta y nombre de la tabla AutoCompletar lcDbfAuto = ADDBS(SYS(2023)) + "MiAutoComp.dbf" *-- Creo la tabla AutoCompompletar THISFORM.CrearTablaAutoComp(lcDbfAuto) *-- Ruta y nombre de la tabla Origen lcDbfOrigen = ADDBS(HOME(2))+ "NorthWind\Customers.dbf" *-- Inserto los registros para cada campo *-- y configuro las propiedades de cada TextBox THISFORM.InsertarReg(lcDbfOrigen,lcDbfAuto,"AC_COMPANIA","CompanyName") THISFORM.txtCompania.AUTOCOMPLETE = 1 THISFORM.txtCompania.AUTOCOMPSOURCE = "AC_COMPANIA" THISFORM.txtCompania.AUTOCOMPTABLE = lcDbfAuto ENDPROC
código adaptado a mi formulario en el procedimiento init
LOCAL lcDbfAuto, lcDbfOrigen *-- Ruta y nombre de la tabla AutoCompletar lcDbfAuto = "E:\clientes\dta\MiAutoComp.dbf" *-- Creo la tabla AutoCompompletar THISFORM.CrearTablaAutoComp(lcDbfAuto) *-- Ruta y nombre de la tabla Origen lcDbfOrigen = "E:\clientes\dta\dbf_clientes.dbf" *-- Inserto los registros para cada campo *-- y configuro las propiedades de cada TextBox THISFORM.InsertarReg(lcDbfOrigen,lcDbfAuto,"AC_NOMBRE","nombre") THISFORM.txtCompania.AUTOCOMPLETE = 1 THISFORM.txtCompania.AUTOCOMPSOURCE = "AC_NOMBRE" THISFORM.txtCompania.AUTOCOMPTABLE = lcDbfAuto
código original del programa
PROCEDURE CrearTablaAutoComp(tcDbfAuto) *-- Crea mi tabla Autocompletar SET SAFETY OFF CREATE TABLE (tcDbfAuto) FREE ; (SOURCE C(20), DATA C(254), COUNT I, Weight I, ; Created T, UPDATED T, USER M) *-- Indexo la tabla INDEX ON UPPER(SOURCE + LEFT(DATA,30)) + PADL(COUNT,8) ; TAG DATA FOR NOT DELETED() *-- Cierro tabla USE IN SELECT(JUSTSTEM(tcDbfAuto)) ENDPROC
PROCEDURE InsertarReg(tcDbfOrigen, tcDbfAuto, tcSource, tcData) *-- Inserto los registros a la tabla Autocompletar INSERT INTO (tcDbfAuto) ; SELECT DISTINCT UPPER(tcSource) AS SOURCE, ; EVALUATE(tcData) AS DATA, 0 AS COUNT, 0 AS Weight, ; DATETIME() AS Created, DATETIME() AS UPDATED, .F. AS USER ; FROM (tcDbfOrigen) *-- Cierro tablas USE IN SELECT(JUSTSTEM(tcDbfAuto)) USE IN SELECT(JUSTSTEM(tcDbfOrigen)) ENDPROC ENDDEFINE
en el formulario creo el método CrearTablaAutoComp
y copio el código del procedimiento luego así mismo creo el método InsertarReg y de igual manera copio el código del procedimiento del programa
al momento de correrlo me manda el primer error No PARAMETER statement is found, al ignorarlo el siguiente Variable "TCDBFAUTO" is not found y al fin lo cancelo, pues los errores continúan me puedes ayudar?
copio el código entero, para si me puedes orientar en donde esta mi error
PUBLIC goMiForm goMiForm = CREATEOBJECT("MiForm") goMiForm. SHOW(1) RETURN DEFINE CLASS MiForm AS FORM AUTOCENTER = .T. CAPTION = "Ejemplo de Autocompletar en TextBox" NAME = "MiForm" ADD OBJECT txtCompania AS TEXTBOX WITH ; HEIGHT = 24, ; LEFT = 84, ; TOP = 24, ; WIDTH = 264, ; NAME = "txtCompania" ADD OBJECT lblCompania AS LABEL WITH ; AUTOSIZE = .T., ; BACKSTYLE = 0, ; CAPTION = "Compañía", ; LEFT = 12, ; TOP = 28, ; NAME = "lblCompania" PROCEDURE INIT LOCAL lcDbfAuto, lcDbfOrigen *-- Ruta y nombre de la tabla AutoCompletar lcDbfAuto = ADDBS(SYS(2023)) + "MiAutoComp.dbf" *-- Creo la tabla AutoCompompletar THISFORM.CrearTablaAutoComp(lcDbfAuto) *-- Ruta y nombre de la tabla Origen lcDbfOrigen = ADDBS(HOME(2))+ "NorthWind\Customers.dbf" *-- Inserto los registros para cada campo *-- y configuro las propiedades de cada TextBox THISFORM.InsertarReg(lcDbfOrigen,lcDbfAuto,"AC_COMPANIA","CompanyName") THISFORM.txtCompania.AUTOCOMPLETE = 1 THISFORM.txtCompania.AUTOCOMPSOURCE = "AC_COMPANIA" THISFORM.txtCompania.AUTOCOMPTABLE = lcDbfAuto ENDPROC PROCEDURE CrearTablaAutoComp(tcDbfAuto) *-- Crea mi tabla Autocompletar SET SAFETY OFF CREATE TABLE (tcDbfAuto) FREE ; (SOURCE C(20), DATA C(254), COUNT I, Weight I, ; Created T, UPDATED T, USER M) *-- Indexo la tabla INDEX ON UPPER(SOURCE + LEFT(DATA,30)) + PADL(COUNT,8) ; TAG DATA FOR NOT DELETED() *-- Cierro tabla USE IN SELECT(JUSTSTEM(tcDbfAuto)) ENDPROC PROCEDURE InsertarReg(tcDbfOrigen, tcDbfAuto, tcSource, tcData) *-- Inserto los registros a la tabla Autocompletar INSERT INTO (tcDbfAuto) ; SELECT DISTINCT UPPER(tcSource) AS SOURCE, ; EVALUATE(tcData) AS DATA, 0 AS COUNT, 0 AS Weight, ; DATETIME() AS Created, DATETIME() AS UPDATED, .F. AS USER ; FROM (tcDbfOrigen) *-- Cierro tablas USE IN SELECT(JUSTSTEM(tcDbfAuto)) USE IN SELECT(JUSTSTEM(tcDbfOrigen)) ENDPROC ENDDEFINE
Saludos y muchas gracias por la molestia que te tomas