Foros del Web » Programando para Internet » ASP Clásico »

Cáracteres ANSI

Estas en el tema de Cáracteres ANSI en el foro de ASP Clásico en Foros del Web. Buenas a todos, A ver si me podéis ayudar. Tengo una aplicación web que intenta insertar datos en una base de datos SQL Server que ...
  #1 (permalink)  
Antiguo 14/01/2009, 16:08
yz!
Invitado
 
Mensajes: n/a
Puntos:
Cáracteres ANSI

Buenas a todos,

A ver si me podéis ayudar.

Tengo una aplicación web que intenta insertar datos en una base de datos SQL Server que me tira en ocasiones este error:

Código:
Microsoft OLE DB Provider for SQL Server error '80040e21'
La operación de múltiples pasos de OLE DB generó errores. Compruebe los valores de estado de OLE DB si es posible. No se realizó ningún trabajo.
He comprobado que el error es producido porque intentan insertar un elemento de lista sacado de un word (con su elemento de lista y tabulación) aunque he intentado limpiar la cadena con varios replace sigo sin poder limpiarlo.

Por separado he conseguido limpiar el elemento y la tabulación pero nunca conjuntamente.

¿Alguien sabe cual es el código ansi del elemento y su tabulación?

Última edición por yz!; 15/01/2009 a las 01:52
  #2 (permalink)  
Antiguo 14/01/2009, 19:17
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: Cáracteres ANSI

Trata chr(10)

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 15/01/2009, 04:48
yz!
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cáracteres ANSI

Nada, tampoco.

He podido comprobar que si que reconoce el carácter tabulación y lo limpia, pero el otro no.

El carácter es este: 

Aunque no se si con eso ayudo.
  #4 (permalink)  
Antiguo 15/01/2009, 07:06
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
Respuesta: Cáracteres ANSI

una vez me paso algo similar con un XML que venia con un texto sacado de WORD y era imposible mostrarlo por pantala.
Intente CDATA y todo tipo de trucos (ISO, CHAR SETS, etc) y no pude sacarmelo de encima.

En definitiva termine por hartarme y en vez de sacar el caracter que me molestaba, me hize una funcion que solo me dejaba los caracteres que yo deseaba y asi workarrondie el problema.

La solucion a este problema quizas tenga una version mas digna, pero lo que hize fue lo siguiente:

Funcion que soluciona el problema

Código PHP:
function deja_solo_caracteres_permitidos(manga_caracteres_permitidos,cadena_a_limpiar)
    
on error resume next
    dim x
,str,salida,letra,manga,cantidad
    deja_solo_caracteres_permitidos 
false
    
if cadena_a_limpiar false then  exit function
    if 
manga_caracteres_permitidos false then 
        manga 
=    UCASE("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_")
    else
        
manga manga_caracteres_permitidos
    end 
if
                
    
str cadena_a_limpiar    
    salida 
str 
    cantidad 
len(cadena_a_limpiar)
    for 
1 to cantidad
        letra 
Mid(str,x,1)
        if 
checa_existencia(manga,letra) = false then
            salida 
=  replace(salida,letra,"")
        
end if
    
next
    
if err.number 0 then 
        deja_solo_caracteres_permitidos 
salida
    end 
if
    
err.Clear
    
exit function     
end function 
Funciones requeridas para la anterior

Código PHP:
function checa_existencia(cadena,patron)
  
dim regexmatchmatches    ,x
  set regex 
= new regexp            
  regex
.pattern fixER(patron)            
  
regex.ignorecase false    
  regex
.global = true        
  set matches 
regex.execute(cadena)    
      for 
each match in matches    
      x 
1
    next
    
if 1 then
        checa_existencia 
true
    
else
        
checa_existencia false
    end 
if
end function

function 
fixER(x)
    
SELECT CASE x
    
CASE "?"         fixER "\?"
    
CASE "."         fixER "\."        
    
CASE "\"         fixER = ""            
    CASE "
*"         fixER = "*"                
    CASE ELSE 
         fixER = x
    END SELECT
end function 

y se usa asi

dim cadena,manga,x

rem donde manga es un STR que contiene todos los caracteres que quieres permitir y cadena es el texto que deseas limpiar.

cadena = "hola como estan todos"
manda = "aeiou "
x = deja_solo_caracteres_permitidos(manga,cadena)

rem el resultado en X seria "oa oo ea oo"


Espero te sirva
  #5 (permalink)  
Antiguo 16/01/2009, 13:09
yz!
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cáracteres ANSI

Supongo que será la mejor opción.

Voy a implementarlo.

Gracias por vuestra ayuda. Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:17.