Cómo agregar texto con autocompletar

A ver si me pueden dar una mano.

Tengo un formulario de Access 2003. Necesito que al rellenar un campo, se le agregue antes del texto ingresado un caracter de separación (guión). Esto es para que al imprimir sólo los datos en PDF, los campos queden separados por guiones.

Si esto no fuera posible, otra alternativa sería que en una caja de texto colocada entre dichos campos, se escribiera automáticamente el mencionado guión, al haber ingresado texto en el campo correspondiente.

Sería así:

Opción 1
Si ingreso "palabra" en el campo B, el texto final debe decir "- palabra"

Opción 2
Si ingreso "palabra" en el campo B, el cuadro vacío antes de B debe decir "-"

Les agradecería infinitamente si me pueden dar un ejemplo del código, ya que no sé nada de programación. Por más que me pongan algo como: "usa IF", etc, no sabría cómo definirlo (no sé cómo escribir la línea, ni definir condiciones, ni cómo van los paréntesis, etc, etc).

Disculpen las molestias.

2 Respuestas

Respuesta
1

Por Dios. Esto se hace con una función y se llama desde la consulta del informe:

CONSULTA

Observe la columna REPORTE aparecen los campos separados por -

DISEÑO DE LA CONSULTA

Observe la función que encierro en el rectángulo.

CÓDIGO DE LA FUNCIÓN

Public Function textoseparado(ParamArray varText() As Variant) As String
Dim varX As Variant
Dim strTem As String
strTem = ""
For Each varX In varText
     strTem = strTem & "-" & varX
Next
 textoseparado = mID(strTem, 2, Len(strTem))
End Function

A esta función le puede pasar cualquier cantidad de campos.

REPORTE

¡Gracias! 

No necesita almacenar los campos con espacios, esto dificultaría realizar búsquedas u otras consultas. Si quiere que el informe muestre el registro separado por determinado carácter y espacios izquierda o derecha, puede utilizar la función Replace() de Access sobre la función que suministré. Por ejemplo.

Observe que utilizo como separador - y un espacio antes del campo y después, esto lo hago llamando la función que le envíe pero anteponiendo la función REPLACE() .

DISEÑO DE LA CONSULTA

Este el texto REPORTE de la consulta:

REPORTE: Reemplazar(textoseparado([codigo_producto];[producto];[Precio listado];[Categoria]);"-";" - ")

Esto le permite utilizar otro separador y dejar los espacios necesarios.

NOTA: Si lo realiza en cada campo del formulario como hace la pregunta, tenga en cuenta 4 cosas:

1. El primer campo va a quedar con el - inicial, por ejemplo -prueba y al unir el texto con el campo - prueba2, en el reporte quedaría - prueba - prueba2. Sobra el - inicial.

2. Si por error omite el guion - después de actualizar, va quedar unido el texto.

3. Por cada campo en el formulario tendría que ejecutar el evento Después de actualizar.

4. Nunca pero nunca de deben grabar los campos con el guion - si es únicamente para dar presentación en un informe, esto se hace en una consulta.

Entiendo que en muchos casos los usuarios como no tienen conocimiento de Visual Basic para Aplicaciones (VBA), optan por la primera respuesta que le dan, pero hay que tener mucho cuidado, a veces, no son la mejor solución. Seguro que la respuesta le puede servir a usuarios más experimentados.

Respuesta
1

Si no quieres usar código tendrías que hacerlo con una consulta. Si lo prefieres así, dilo y la pongo. Pero en código, aprovechando que tienes que escribir los datos en un formulario, Si escribo algo en el cuadro de texto Texto1(puedes ver que el cursor está aún en él)

Cuando pulso Enter

O si lo prefieres, dejando un espacio

En el caso de textoA, en sus propiedades-eventos-Después de actualizar creo un procedimiento de evento Y le pongo

Private Sub Texto1_AfterUpdate()
Texto1 = "-" & Texto1
End Sub

En el caso del Texto2

Private Sub Texto2_AfterUpdate()
Texto2 = "- " & Texto2
End Sub

De todas formas, si ves que con el código no te aclaras, y quieres, repito, si quieres, mándame un mensaje a [email protected] y te mando un ejemplo con código y otro con una consulta.

Si lo haces, en el asunto del mensaje pon tu alias Carlos Páez, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas