Página 1 de 1

Reemplazar contenido en una cadena

Publicado: Mié Abr 28, 2004 12:43 pm
por frentzendvd
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

Publicado: Sab May 01, 2004 5:38 pm
por Invitado
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

Publicado: Vie May 14, 2004 1:58 am
por raiter
podria publicar el sql que estas trabajando actualmente???

Publicado: Vie May 14, 2004 7:24 am
por ABCdatos
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.