Reemplazar contenido en una cadena

Cuestiones y dudas acerca de lenguajes de programación diversos.

Moderador: Moderadores

Avatar de Usuario
frentzendvd

Reemplazar contenido en una cadena

Mensaje por frentzendvd » Mié Abr 28, 2004 12:43 pm

Hola a todos
Aparentemente mi problema puede parecer una tonteria pero yo llevo un par de dias estancao sin saber lo que hacer. Consiste en reemplazar la palabra OBRAS por la palabra PROMOTOR en una sql que genero mediante codigo. De esta forma los datos me los cojerá de la tabla PROMOTOR en vez de la tabla OBRAS.
El problema es que estoy programando en Visual Access 97 y las funciones "Replace" y "Substr" no me las reconoce, creo que esto es debido a que son funciones incluidas en versiones de Visual Basic posteriores al Access 97, es decir, que todavia no existian.
Otro detalle importante es que la palabra OBRAS aparece de media unas 3 veces en cada sql generada
¿Alguien podria ayudarme a modificar esta sql? Estoy desesperado.....
GRACIAS DE ANTEMANO
DAVID

Avatar de Usuario
Invitado

Mensaje por Invitado » Sab May 01, 2004 5:38 pm

Es que no entiendo muy bien lo que quieres hacer.

¿No puedes coger tu código fuente de visual basic y reemplazar obras por constructores usando el meú edición del editor de código y a partir de ahí todas las instrucciónses sql que se generen ya saldrán con constructores en vex de obras?

Explica un poco mejor lo que te pasa

Saludos

raiter
Novat@
Mensajes: 5
Registrado: Vie May 14, 2004 1:41 am

Mensaje por raiter » Vie May 14, 2004 1:58 am

podria publicar el sql que estas trabajando actualmente???

Avatar de Usuario
ABCdatos
Administrador foro
Mensajes: 673
Registrado: Dom Mar 03, 2002 1:00 am
Contactar:

Mensaje por ABCdatos » Vie May 14, 2004 7:24 am

Si dispones de la función INSTR, utilizándola conjuntamente con LEFT, RIGHT y LEN, puedes crearte la función REPLACE con relativa facilidad. También lo puedes hacer con SPLIT y JOIN si están disponibles, utilizando el texto buscado como separador.

INSTR te devuelve la primera posición donde se encuentra una cadena dentro de otra, cero si no figura. Hay que utilizar un bucle por si figurase varias veces. Sería algo tipo:

Código: Seleccionar todo

Public Function Replace (Byval Cadena as String, Byval Original as String, Byval Actual as String) as String
 Dim strTextoInicial as String
 Dim strTextoFinal as String
 Replace = Cadena
 While Instr (Cadena,Original) <> 0
  strTextoInicial = Left(Cadena,Instr (Cadena,Original))
  strTextoFinal = Right(Cadena,len(Cadena)-Instr (Cadena,Original)-len(Original))
  Replace = strTextoInicial & Actual & strTextoFinal
 Wend
End Function
Puede que haya que hacer algún ajuste agregando o quitando un carácter al definir strTextoInicial y strTextoFinal.

Otro modo, con SPLIT y JOIN sería:

Código: Seleccionar todo

Public Function Replace (Byval Cadena as String, Byval Original as String, Byval Actual as String) as String
 Dim strCadena() as String
 strCadena = Split (Cadena,Original)
 Replace = Join(Cadena,Actual)
End Function
Saludos.
Equipo ABCdatos.
http://www.abcdatos.com/

Responder