Estoy haciendo una pequeña aplicación de aficionado, en la que tengo que eliminar de una cadena (en realidad del campo Apellido) determinados caracteres: espacios vacíos, guión, apostrofos... etc. Son caracteres a quitar para generar un 'NombreUsuario' limpio de esos caracateres extraños.
Lo he hecho, claro, con un Replace, y funciona normalmente... Pero al darle una pensada, quería hacer que los cacracteres a eliminar los pueda tomar de una variable, que controlo desde la base de datos. Para ello, genero un "Scripting.Dictionary" (esto lo aprendí en este foro... y lo uso bastante en otras aplicaciones).
Lo hice primero poniendo en ese campo (que luego se convierte en variable) el codigo Crh$(32) (por ejemplo: ese es el espacio vacio...). lo hago así:
Código:
La variable se llama 'chrEliminar' y contiene los distintos Chr$() separados por ",".'================PRIMERO CARGAMOS TODAS LAS VARIABLES QUE GESTIONAN LA APLICACIÓN ========= codigo_aplicacion = 5 Set variables1 = CreateObject("ADODB.Recordset") Set variables1 = db.Execute("Select * from aplicacion_web where codigo=" & codigo_aplicacion & "") Set variables = CreateObject("Scripting.Dictionary") Do While Not variables1.EOF strclave = variables1("clave") strvalor = variables1("valor") variables.Add strclave, strvalor variables1.movenext Loop strClavesArray = variables.Keys strValoresArray = variables.Items Dim caracteres() As String caracteres = Split(variables.Item("chrEliminar"), ",") MsgBox (variables.Item("chrEliminar")) 'Esto está aquí para comprobar que se han cargado... For i = 0 To UBound(caracteres()) MsgBox (caracteres(i)) Next '==========================================================================================
Luego para poder hacer el replace de forma 'dinámica', lo hago así:
Código:
Set rsdatos2 = CreateObject("ADODB.Recordset") Set rsdatos2 = db.Execute(todaselect, 1, 1) el_apell1 = rsdatos2("apell1") el_apell2 = rsdatos2("apell2") el_nombre = rsdatos2("nombre") 'Este lo pongo para probar 'a manini...: el_nombre_limpio = Replace(el_nombre, Chr$(32), "") cuantos = UBound(caracteres()) For i = 0 To cuantos que_buscar = caracteres(i) 'MsgBox (que_buscar) el_apell1 = Replace(el_apell1, que_buscar, "") el_apell2 = Replace(el_apell2, que_buscar, "") el_nombre = Replace(el_nombre, que_buscar, "") Next MsgBox (el_apell1) MsgBox (el_nombre) MsgBox (el_nombre_limpio)
... Pues no funciona... tanto el_apell1, como el_apell2 y el_nombre no aplica el replace. Sin embargo el_nombre_limpio que he generado 'a manini'... si que funciona
La variable "que_buscar" la he generado para poderle aplicar funciones de conversión previas, del tipo de cstr(), pero nada...
En cada una de las iteraciones del Do While muestro con un Msgbox el valor, y lo saca bien : Chr$(32), por ejemplo, y aparentemente sin comillas ni caracteres previos extraños...
seguro que es algo fácil... pero se me escapa
Gracias por contestar!!!
Fernando