¿Cómo puedo sustituir un carácter por otro en el programa Microsoft Access?

Y no tan expertos. Me gustaría comentaros unas dudas que tengo a la hora de realizar varias consultas en Access:
1)¿Cómo podría sustituir un carácter por otro en los valores de un campo? Me explico. Al realizar una consulta, obtengo una serie de valores en un campo "campo1" Estos valores son de la forma xxxxx-xx y me gustaría sustituir el guión por una barra de forma que al ejecutar la consulta los valores de ese campo se vean como xxxxx/xx ¿Qué criterio es necesario establecer en el campo "criterio" (si se utiliza la vista Diseño)?
2) ¿Cómo leer los caracteres hasta un cierto carácter? Si obtengo valores como los del caso anterior, es decir, xxxxx-xx, pero sólo me interea mostrar los que aparecen antes del guión ¿Cómo podría hacer la consulta en Access para que aparecieran de ese modo?

1 Respuesta

Respuesta
1
1) Utiliza la función Reemplazaqr (Replace en VBA) a la hora de mostrar el dato cambiando - por /
2) Si las xxx de antes del guion son siempre de la misma longitud, puedes utilizar la función Izq (Left en VBA) dónde indicas un número fijo de caracteres a recuperar. Si la longitud fuera variable deberías utilizar la misma función pero, en lugar de poner una cantidad fija, utilizar la función EnCad (InStr en VBA) para saber que posiciñon ocupa un determinado carácter.
Te he puesto los equivalentes VBA para que puedas consultar la ayuda. Frecuentemente está mejor explicado en VBA que en las expresiones.
Muchísimas gracias por la respuesta Xavi. En realidad ya había solucionado gran parte de mis dudas gracias a que he desenpolvado mis pocos conocimientos de Visual Basic, pero no conocía la función EnCad, que es la que tengo que utilizar para mi caso concreto, ya que la longitud de la cadena que hay antes del guión es variable. Ahora mismo la pruebo a ver qué tal. Muchas gracias de nuevo y gracias por tu rapidez ;-)
Bueno la he probado y quizás el único problema que tengo es en aquellos casos en los que el valor del campo no tiene un guión, es decir, algunos son xxxxx-xx y otros xxxxx.
Utilizando Izq([campo];EnCad([campo];"-")-1), en aquellos campos en los que no hay guión, me aparece #ERROR (con razón ya que EnCad devuelve 0 y al restarle -1, el segunda parámetro de Izq es -1, lo cual no tiene sentido)
PD: Desde luego, el criterio de especificación de valores de la tabla es lamentable, donde cada uno es de su padre y de su madre...
¿Alguna sugerencia?
Pues... complica la función evaluando si se encuentra el carácter.
SiInm(EnCad([campo];"-") = 0;[campo]; Izq([campo];EnCad([campo];"-")-1))
Por cierto... ¿no te has planteado normalizar lo existente? Aunque ahora creas que vas a perder el tiempo, ese tiempo lo vas a ahorrar a la larga con tanta virgueria...
Si fuera una Base de Datos mía, ten por seguro que no la hubiera hecho así, pero al tratarse de una BBDD de una aplicación de la empresa para la que trabajo y dado que no estoy autorizado a hacer cambios en las tablas, no queda más remedio que buscarse la vida con consultas tan complicadas. Muchas gracias por la ayuda, cuando vuelva a la oficina la probaré y te comentaré algo ;-)
Pásale las horas a quien no te autoriza a hacer los cambios a ver que cara pone... si quieres te hago un presupuesto...
;-P

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas