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

1 respuesta

Respuesta
1

La variable que lleva el nombre de la tabla (lcDbfAuto) al llamar el crear tabla llega como CREATE TABLE (tcDbfAuto) debes controlar con el depurador del fox (correr el form linea a linea) si llega correctamente el valor a esta variable también cuando va a llenarse los text se usa así el nombre de la tabla controla eso y me avisas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas