Hola!
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:
'================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
'==========================================================================================
La variable se llama 'chrEliminar' y contiene los distintos Chr$() separados por ",".
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