El MaskedEdit Control en VB

Tengo un control de este tipo atado a un campo teléfono de una base de datos access, necesito que siempre muestre el literal "(011)" delante del numero que entraría el usuario. Le pongo la siguiente mascara: "(011) 99999999999". La muestra perfectamente, pero cuando entro un nuevo valor, no me salva los literales a la base de datos. Como podría lograr que junto con la información que entra el usuario, ¿me almacene también los literales "(011)"?
Respuesta
1
Me imagino que cogerás los datos de la mascara con el .Text, en vez de eso cogelos con el .FormattedText o con el .ClipText (este ultimo depende de la propiedad Clipmode, en la cual indicas si quieres que se tomen los literales de la mascara en el ClipText).
Hola y gracias por la respuesta. Debes tener en cuenta que el masked edit esta atado a la base de datos por la propiedad text, en tiempo de disenno. Investigue lo que me dices del cliptext, y es la propiedad adecuada, pero no encuentro la manera de atar el masked edit a esta propiedad. Busco una solución para no usar código, pues me parece que es bastante elemental lo que quiero hacer y mi modesta opinión es que debe existir una solución sin código.
Saludos y espero tu respuesta
Muchas gracias
Ya entiendo, tu problema es que la edición la haces a través de una mascara "enganchada" a la base de datos por un DataControl.
Yo es que tengo la costumbre de poner y dejar los datos por código, de esa manera no me había planteado el problema.
Pues me temo que no puedes "atar" el valor del campo a otro campo que no sea el .Text.
Asegurate de que el valor Clipmode esta a 0 (mskIncludeLiterals) y si no te coge bien los valores tendrás que emplear el código (evento Change o LostFocus).
Lo siento pero no se me ocurre nada más...

3 respuestas más de otros expertos

Respuesta
1
Lester, enviame por favor el código que estas usando pues por defecto si grabas en el campo numero de teléfono de tu base de datos el texto que este en el MASKEDIT debe grabar absolutamente todo el texto que este allí, lo haya introducido el usuario o no.
Te comento que nunca he trabajado enlazando los textbox directamente a la base de datos, tengo mis reservas sobre esto, pero es cuestión de estilo . Si guardas el campo haciendo:
Recordset. Edit
recordset!campotelefono = textboxtelefono.text
recordset.update
funciona perfectamente (ya lo probe), y si te das cuenta no es tanto codigo, pero tienes razon , deberia funcionar tambien si enlazas el campo al maskededit. Dejame probarlo y te respondo tan pronto tenga algo en concreto.
Hola y gracias por tu respuesta. El único código que empleo, en el load del formulario es este:
txtPhone.DataField = txtPhone.Tag 'el nombre del campo tel
Set txtPhone.DataSource = m_recClients
'm_recClients es un recordset de la tabla clientes
Las Propiedades del masked edit:
Mask = "(011) 999-9999"
HideSelection = False
PromptInclude = False
Todo lo demas esta por default
Como te dije, me saca bien la mascara, pero cuando entro un numero de teléfono, no me salva los literales, y los necesito en la base de datos, pues otro programa se encarga de pasar faxes a través de estos números y los marca como están en la base de datos. Pudiera haber una solución alternativa con código, pero en mi modesta opinión, es algo tan sencillo que no debería hacer falta código. Espero tu respuesta, gracias
Ok, muchas gracias, espero tu respuesta
Saludos
Lester, como te comente anteriormente no he trabajado enlazando los controles a los campos de las tablas, sin embargo hice un pequeño ejemplo como el de tu programa y si me graba los literales, se me ocurre que revises la propiedad Clipmode del maskEdBox, la cual debe estar en 0 (mskincludeliterals), como te dije acá me esta funcionando bien y graba los literales.
Respuesta
1
¿Quieres qué lo guarde con literales y todo en la base?
Podes poner algo más o menos así
Rs. Addnew
rs.fields("telefono") = "(011)" & txtTELEFONO.text
Algo así podría funcionar... en la base guardaría todos los 011
O tal vez... si todos pero todos los números son con (011)
No hace falta que lo guardes en la base con eso...
Podes poner el (011) digamos en un label... adelante de los textbox donde entrarías el teléfono
Y si después haces una consulta
Podes agregárselo adelante
Bueno son algunas soluciones que se me ocurren
Respuesta
1
Hole lesterp
El maskedEdit tiene una propiedad:
ClipMode y debes poner su valor en mskIncludeLiterals.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas