Foros del Web » Programando para Internet » ASPX (.net) »

Problemas con cadenas (srtring)

Estas en el tema de Problemas con cadenas (srtring) en el foro de ASPX (.net) en Foros del Web. Hola a todos, tengo un problema curioso que no llego a comprender. Tengo una función que llama a un procedimiento almacenado en una base de ...
  #1 (permalink)  
Antiguo 05/07/2006, 09:37
Avatar de Nizam  
Fecha de Ingreso: abril-2002
Ubicación: Madrid
Mensajes: 78
Antigüedad: 22 años, 1 mes
Puntos: 0
Problemas con cadenas (srtring)

Hola a todos,

tengo un problema curioso que no llego a comprender.

Tengo una función que llama a un procedimiento almacenado en una base de datos Oracle.

Crea la cadena de conexion
Me.cadenaConexion = CON
Llama al procedimiento
Me.fCrearUSP("usp_PCgetValorConstante")
Crea los parametros de entrada
Me.fCrearParametroUSP("@idEntorno", Int, 4, Input,1)
Me.fCrearParametroUSP("@Clave", VarChar, 50, Input, NombreConstante)
Crea los parametros de salida
Me.fCrearParametroUSP("@Valor", VarChar, 1000,Output)
Ejecuta el procedimiento
Return Me.fEjecutarUSP("@Valor")

En rojo os pongo la linea conflictiva. En la base de datos está dada de alta como VarChar2 de 1000. En la llamada indico que es VarChar de 1000.
Como es lógico me devuelve una cadena de 1000 aunque el contenido de la cadena no tiene mas de 27 caracteres.

Despues del rollo os comento mi problema. No se por que extraña razón si recupera la cadena tal cual de la bd, no me funciona un link a una url.
La cadena la recupero en una variable de tipo string llamada gEntorno.
La longitud es gEntorno.length = 1000
Necesitaría que me devolviera la cadena con una longitud igual al contenido de ella, es decir si recupero 'hola', gEntorno.length = 4
Es como si el resto de espacio que hay desde el final de la cadena hasta los 1000 caracteres, lo rellenara con algo que no son espacios pq uso la funcion Trim y le da lo mismo.
Sin embargo si pongo gEntorno.Substring(0,5) funciona correctamente.

¿Alguna idea?

Estoy desesperado.

Muchas gracias.
  #2 (permalink)  
Antiguo 05/07/2006, 15:23
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
no se porque le pasas el tipo de datos varchar a tu varchar2.. se supone que deberías tener algo así :

Cita:
...
Me.fCrearParametroUSP("@Clave", OracleDbType.Varchar2, 50, Input, NombreConstante)
...

Ahora no se bien como tienes tu estructura pero en ultimo de los casos podrías hacer ésto:

Cita:
gEntorno = gEntorno.Substring(0,gEntorno.IndexOf(" "));
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 05/07/2006, 15:44
Avatar de Nizam  
Fecha de Ingreso: abril-2002
Ubicación: Madrid
Mensajes: 78
Antigüedad: 22 años, 1 mes
Puntos: 0
Muchas gracias por responder,

yo tampoco entiendo por qué está eso asi hecho (y eso ni se me habia ocurrido). Es más hay muchas más cosas que están hechas de una manera distinta a como yo lo haría.

Es un proyecto que ha pasado por muchas personas y ahora me ha tocado a mi y me he encontrado con esto.

Haré lo que me cuentas a ver que pasa. En realidad el problema está en que esa variable global contiene una url (cristalfarm.midominio.es/) que se la pasa a otra función (a la cual no solo no puedo acceder sino que nadie sabe como funciona. Es estupendo !!!!) y es en esa función en la cual cuando la recibe de la consulta, falla, pero si la escribo en codigo, funciona !!!. La única diferencia que hay es el tamaño.
La solución que he encontrado es igual que la segunda que tú me das pero, en vez de buscar un blanco, busco el ultimo simbolo / que da el final de la url. gEntorno = gEntorno.Substring(0,gEntorno.IndexOf("/"));
Sin embargo esta solución la considero como un parche, puesto que si el día de mañana les da por cambiar la url en la base de datos y quitarle la barra del final, daría un error y viendo como está la gestión de errores, no se que es mejor.

Intentaré la primera opción.

Mil gracias.
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 07:21.