MODIFICAR CAMPO, eliminar en cadena texto acotado.

Buenas tardes,
Mi consulta es la siguiente. Tengo una tabla en la que aparecen varios campos, entre ellos "Descripcion" y "Tema".
Quiero eliminar en cadena (en cerca de 18000 registros), el texto final del campo descripción (que coincide con el contenido de Tema). La parte del texto que quiero eliminar va acotada entre dos puntos, el penúltimo punto y el punto final. Por ejemplo:
Blablablablabla. Historia-arte. En este caso, querría eliminar "HISTORIA-ARTE."
El campo descripción sería "Blablablablabla. HISTORIA-ARTE." y el campo Tema sería "HISTORIA-ARTE."
¿Qué tipo de consulta tendría que hacer?
He buscado muchas veces pero no logro dar con la solución.
De antemano, muchas gracias.

1 Respuesta

Respuesta
1
Yo no utilizaría una consulta para realizar esa acción. Más que nada es que la función Replace no se lleva muy bien con las consultas de acción. Te digo como lo enfocaría yo.
Abriría un recordset sobre la tabla en cuestión recuperando unicamente los 2 campos implicados. Evaluaría que, en cada registro, al final del campo descripción, aparece el contenido de Tema. Si así es, edito el valor eliminando esas palabras. Dado que el tema podría repetirse textualmente dentro del resto de la descripción, yo optaría por recortar la cadena por el final.
Oséase:
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT Descripcion, Tema FROM laTabla")
If rst.EOF Then
MsgBox "Houston, tenemos un problema: la tabla está vacia!", vbCritical, "AVISO"
rst.Close
Set rst = Nothing
Else
Do Until rst.EOF
If Right(rst!Descripcion, Len(rst!Tema)) = rst!Tema Then
rst.Edit
rst!Descripcion = Left(rst!Descripcion, Len(rst!Descripcion) - Len(rst!Tema))
rst.Update
End If
rst.MoveNext
Loop
End If
rst.Close
Set rst = Nothing
MsgBox "Proceso finalizado.", vbInformation, "AVISO"
Ah! Los experimentos se hacen con gaseosa!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas