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: 27
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: 27
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: 23
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
  #8  
Antiguo 15-01-2008
wascar2003 wascar2003 is offline
Registrado
 
Registrado: feb 2007
Posts: 5
Poder: 0
wascar2003 Va por buen camino
Gracias Al Articulo Que Vi Que Elimina Los Espacios En Blanco Al Llamar Un Campo.

Thanks Tenia Problemas Al Consultar El Campo De Un Registro Ya Que Este Aunque Yo Le Decia En Delphi Que Me Quitara Los Espacios Con Un Trim Lo Guardaba Con Los Espacios En El Sql. Lo Que Hice Fue Al Llamarlo Usar El Trim Tambien. Ya Veo Que No Necesito El Trim Al Mandar Al Guardar Sino Al Consultar.
Responder Con Cita
  #9  
Antiguo 15-01-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por wascar2003 Ver Mensaje
Thanks Tenia Problemas Al Consultar El Campo De Un Registro Ya Que Este Aunque Yo Le Decia En Delphi Que Me Quitara Los Espacios Con Un Trim Lo Guardaba Con Los Espacios En El Sql. Lo Que Hice Fue Al Llamarlo Usar El Trim Tambien. Ya Veo Que No Necesito El Trim Al Mandar Al Guardar Sino Al Consultar.
[OFF TOPIC]

Hola wascar2003, te puedo preguntar si no te es dificil escribir como escribes , al leerlo mi mente me hizo tartamudear (Corrijo, detenerme a cada palabra), no me imagino intertar escribir así.....

[/OFF TOPIC]

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #10  
Antiguo 15-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

wascar2003, veo que eres relativamente nuevo en estos foros... y me imagino que ya te habrán remitido a la Guía de Estilo de estos foros. También me gustaría que leyeras esta otra Guía de Estilo.


Saludos...
Responder Con Cita
  #11  
Antiguo 16-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por wascar2003 Ver Mensaje
Veo Que No Necesito El Trim Al Mandar Al Guardar Sino Al Consultar.
O bien declarar el campo como varchar, pues si realmente no necesitas los espacios, ¿para qué declararlo como char?

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
  #12  
Antiguo 17-01-2008
wascar2003 wascar2003 is offline
Registrado
 
Registrado: feb 2007
Posts: 5
Poder: 0
wascar2003 Va por buen camino
Talking Gracias

Gracias Por Los Consejos. En Realidad Soy Nuevo En Los Foros. Con Respecto A Declarar Los Campos Varchar Y No Char Los Declaro Char Porque Me Han Dicho Que El Tipo Varchar Puede Llegar A Dar Problemas Luego Al Consultar. Gracias A Todos Y Espero Mejorar Pronto. Muchos Saludos.
Responder Con Cita
  #13  
Antiguo 17-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
[OFF TOPIC]

Hola wascar2003, te puedo preguntar si no te es dificil escribir como escribes , al leerlo mi mente me hizo tartamudear (Corrijo, detenerme a cada palabra), no me imagino intertar escribir así.....

[/OFF TOPIC]

Salud OS
Por favor egostar, no se trata de dificultad, se trata de cumplir el estandard Camel case .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #14  
Antiguo 17-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Al menos está separando las palabras... no me imagino:

Cita:
Empezado por wascar2003
GraciasPorLosConsejos. EnRealidadSoyNuevoEnLosForos. ConRespectoADeclararLosCamposVarcharYNoCharLosDeclaroCharPorqueMeHanDichoQueElTipoVarcharPuedeLlegar ADarProblemasLuegoAlConsultar. GraciasATodosYEsperoMejorarPronto. MuchosSaludos.


Saludos...
Responder Con Cita
  #15  
Antiguo 17-01-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
pues más bien diles a esos que te dijeron, que te digan que problemas, cuando y como pasan esos problemas. Yo no me he topado con ninguno.

Y los tipos de datos están todos por alguna razón, no nada más por que sí. En tu caso es mil veces mejor utilizar un tipo varchar... (en todo caso, podrías utilizar la función RTRIM de SQL Server). Es como usar un campo "float" para guardar datos monetarios, en ese caso te daría problemas con los redondeos y para evitar eso, está el tipo de dato "money".

En fin, por favor, ya no escribas así que nos haces tartamudear a todos. (¿De verdad te vas deteniendo en cada palabra para poner una mayúscula?)
__________________

Responder Con Cita
  #16  
Antiguo 17-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
De seguro escribe todo en MS Word en minúsculas, luego selecciona todo y hace [Shift][F3] [Shift][F3] [Shift][F3]...


Saludos...
Responder Con Cita
  #17  
Antiguo 17-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por wascar2003 Ver Mensaje
Con Respecto A Declarar Los Campos Varchar Y No Char Los Declaro Char Porque Me Han Dicho Que El Tipo Varchar Puede Llegar A Dar Problemas Luego Al Consultar.
Pues quien te ha dicho, desde mi punto de vista, no tiene idea de lo que habla. Quizás él o ella se topó con algún problema bajo ciertas circunstancias, pero generalizar de esa manera, ¡vamos!, ¡no tiene sentido!

Puedo garantizar que en las bases de datos que conozco el tipo varchar funciona decentemente bajo el comportamiento que puede esperarse de él.

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
  #18  
Antiguo 09-06-2008
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
TRIM: No me funciona.
TrimRight y TrimLeft: Si andan.

¿y como se explica eso?

un saludo.
Responder Con Cita
  #19  
Antiguo 09-06-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Cita:
Empezado por peccatum Ver Mensaje
TRIM: No me funciona.
TrimRight y TrimLeft: Si andan.

¿y como se explica eso?

un saludo.
¿y porque no te funciona?
¿lo estas usando correctamente?
¿te marca un error?

Solo espero a que tengas más experiencia en encontrar errores, para que te des cuenta cuan irritante es escuchar "no funciona" y no escuchar el porque.
__________________

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 13:43:37.


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