Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-12-2007
eudy.net eudy.net is offline
Miembro
 
Registrado: jul 2006
Posts: 29
Poder: 0
eudy.net Va por buen camino
Question Eliminar Espacios en Blanco

Hola a todos,

Tengo una Base de Datos en SQL que me almacena la dirección de una imagen, de modo que la base de datos no se haga tan pesada.
Entonces lo que hago es guardar el FileName de la imagen, y luego cuando vaya a consultar la imagen, se cargue en un Timage sin necesidad de guardarse en la base de datos. (Tal vez mi explicacion fue un poco redundante, pero es mejor para que entiendan bien mi inquietud )

Mi problema es el siguiente: a la hora de guardar el filename de la imagen en la base de datos (se guarda en un campo que abarca hasta 100 caracteres), siempre quedan espacios en blanco, y a la hora de cargar el filename en la Timage me da el error de que no reconoce la extension de la imagen (porque siempre despues del tipo de imagen hay espacios, ejemplo: 'c:delphi.jpg ' esos dos espacios que quedaron despues del .jpg causan que delphi no pueda leer la imagen)

Existe alguna forma, truco o método de modo que pueda eliminar esos espacios en blanco, o en SQL SERVER 2000 (el que uso) puedo hacer campos que se ajusten al tamaño del registro????

Cualquier ayuda es agradecida

Se despide,

eudy.net
Responder Con Cita
  #2  
Antiguo 08-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

En MySQL, desde luego, se cuenta con el tipo "VARCHAR", que adapta su tamaño a la cadena que se guarde, incluso si hay algún límite (que tal vez por defecto ya lo haya). Quiero decir, si tengo un "VARCHAR" y guardo esto:

Código:
C:\imagen.jpg
Eso será lo que obtenga. Sólo si yo guardo espacios en blanco obtendré espacios en blanco, no sé si me explico.

Tal vez a la hora de guardar los datos debas aplicar alguna función como "Trim()" que elimine los espacios en blanco al comienzo y al final de la cadena que vas a guardar.

Y, en todo caso, siempre puedes recuperar el valor usando una función "Trim()" (si es que existe en SQL Server, en MySQL creo que sí que existe, casi seguro que así sea) o bien utilizar la función "Trim()" de Delphi antes de tratar averiguar si la imagen en cuestión existe o puedes cargarla y el "TImage".

No sé. Se me hace raro que tú no guardes espacios en blanco y esto se añadan por el motor de bases de datos... entiendo que pueda querer ajustarse a cierto tamaño un determinado campo (por cierto, ¿de qué tipo hablamos?), pero, no entiendo que se rellene con espacios en blanco, porque, estos no son caracteres "nulos", sino que pueden tener un significado claro y práctico... como puedes comprobar...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 08-12-2007
eudy.net eudy.net is offline
Miembro
 
Registrado: jul 2006
Posts: 29
Poder: 0
eudy.net Va por buen camino
Thumbs up Muchas Gracias

Oye dec Muchisimas Gracias
Usé la función Trim de Delphi y me funcionó bastante bien
Lo que pasaba era que SQL me aumentaba la longitud del registro(hasta los 100 caracteres) añandiendoles espacios en blanco, no sé porque pero lo hacía.

Se despide,

eudy.net
Responder Con Cita
  #4  
Antiguo 08-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por eudy.net Ver Mensaje
Lo que pasaba era que SQL me aumentaba la longitud del registro(hasta los 100 caracteres) añandiendoles espacios en blanco, no sé porque pero lo hacía.
¡Para cumplir con el estándar!

Porque has definido tu campo como tipo char(100) (o un equivalente en tu motor) y no como varchar(100). Ya se ha mencionado antes en este hilo.

Al hacer eso, le indicás al motor que querés que siempre te retorne cadenas de longitud fija. Para lograrlo, el motor rellenará con espacios en blanco a la derecha la cadena original... algunos de hecho, lo hacen al almacenar el dato, otros, como firebird, lo hacen al recuperarlo.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 09-12-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Cita:
Empezado por jachguate Ver Mensaje
Para lograrlo, el motor rellenará con espacios en blanco a la derecha la cadena original... algunos de hecho, lo hacen al almacenar el dato, otros, como firebird, lo hacen al recuperarlo.
Esto no lo sabía, supongo que lo hace para ahorrar espacio, ¿o no?

Punto para Firebird.
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #6  
Antiguo 10-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por Gabo Ver Mensaje
Esto no lo sabía, supongo que lo hace para ahorrar espacio, ¿o no?

Punto para Firebird.
Efectivamente, de hecho, según recuerdo haber leído, el encargado de ponerle dichos espacios, es el cliente, por lo que tampoco significan carga extra para la red.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 10-12-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Cita:
Empezado por Gabo Ver Mensaje
Punto para Firebird.
Y para Interbase... digo, hay que ser justos...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
quitar espacios en blanco de un string rmnart Varios 4 21-12-2009 15:24:32
Problemas con Espacios en blanco jfontane PHP 7 08-02-2008 15:59:25
Limpiar espacios en blanco( en string) jmlifi Varios 5 22-03-2007 18:09:05
Remover espacios en blanco de una cadena jarcmaster Varios 2 22-07-2005 21:12:18
Quitar espacios en blanco Javier_A OOP 3 09-06-2004 10:29:27


La franja horaria es GMT +2. Ahora son las 04:48:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi