Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-02-2005
MasterXP MasterXP is offline
Miembro
 
Registrado: ene 2005
Posts: 193
Poder: 20
MasterXP Va por buen camino
Que Tipo de Campo Usar??

Hola a todos.

Tengo un peque~o problema y es el siguiente:

Que tipo de campo MySQL se debe usar para que me guarde una ruta de un archivo/imagen. Resulta que tengo un Campo tipo Varchar en mi DB MySQL llamado "FOTO".

hago un insert como este:
Código:
 INSERT foto INTO mytable VALUES ('C:\MisImagenes\Imagen1.jpg')
el insert lo hace perfectamente, pero que hace que me convierte los espacios en "_" y los "\" los elimina, y el resultado en la base de datos queda como:

Código:
C:MisImagenesImagen1.jpg
Ley en la ayuda Mysql que en los tipos de campso varchar se sustituyen los espacios por '_', pero no logre ver ningun tipo de campo que me soporte guadar este tipo de datos (Rutas en mi caso).

Alguna idea?
Responder Con Cita
  #2  
Antiguo 18-02-2005
jbaleriola jbaleriola is offline
Miembro
 
Registrado: oct 2003
Ubicación: Murcia
Posts: 20
Poder: 0
jbaleriola Va por buen camino
Smile Utilizar la propiedad Params de una Query

Hola, yo siempre utilizo la propiedad 'Params' de una Query, esto te permite introducir en tu base de datos cualquier cadena de texto.

Por ejemplo:

SQL.Add('insert into articulos'
+ ' (codigo, nombre) values('
+ IntToStr(wcodigo.asInteger)
+ ',:pnombre)');
Params.ParamByName('pnombre').asString := wnombre.Text;
ExecSQL;

wnombre en este caso es un TEdit pero puede ser cualquier otro objeto que su propiedad devuelva un String.

Espero haberte ayudado.
Responder Con Cita
  #3  
Antiguo 19-02-2005
MasterXP MasterXP is offline
Miembro
 
Registrado: ene 2005
Posts: 193
Poder: 20
MasterXP Va por buen camino
Has probado a insertar una rura en un campo varchar??

por que aunque lo insertes desde el mismo mysql (Sin delphi) le quita los espacios y los "/"...

ayuda please..

que tipo de campo soporta que el inserten cualkier tipo de caracteres?

saludo.
Responder Con Cita
  #4  
Antiguo 19-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El caracter \ en MySql es un caracter de escape por lo que debes usarlo doble \\. Por ejemplo, en lugar de insertar

'C:\Mis Imagenes\Imagen1.jpg'

insertas

'C:\\Mis Imagenes\\Imagen1.jpg'

Lo de los espacios no me queda nada claro. Que yo sepa MySql únicamente elimina los espacios finales en un campo VarChar pero no los iniciales ni intermedios y simplemente los elimina, no los sustituye por un _. En tu ejemplo del primer mensaje no veo que te haya quedado ningun _ y el único espacio que se "pierde" podría ser el de "Mis Imagenes" pero en tu ejemplo lo insertas sin espacio.

Revisa esto de los espacios para aseguratte de lo que pasa.

// Saludos
Responder Con Cita
  #5  
Antiguo 19-02-2005
MasterXP MasterXP is offline
Miembro
 
Registrado: ene 2005
Posts: 193
Poder: 20
MasterXP Va por buen camino
Hey Roman gracias, tienes razon en todo con un doble \ me funciona perfectamente desde la linea de comandos mysql>

ejemplo:
Cita:
INSERT INTO empleados (Codigo, FOTOS) VALUES (2, 'C:\\Mis Imagenes\\06. Imagen2.Jpg');
queda muy bien.

ahora hay un pequeño problemita, como lo hago desde delphi? osea lo que tengo en Delphi es un componente Timage en conjunto con un OpenPictureDialog, y tomo la ruta del archivo con la propiedad Filename, ejemplo:

Cita:
With Datamodule1.Querygeneral Do
Begin
Close;
SQL.clear;
SQL.Add('INSERT INTO Empleados (Codigo, Fotos) Values ');
SQL.Add('( '+Edit1.Text+', '+Quotedstr(OpenPictureDialog1.FileName)+')');
entonces el problema es que delphi le enviara la rura con un solo \, y deberia ser \\.

alguna solucion a este ultimo problema sobre esto?

PD: Disculpas por tantas preguntas
Responder Con Cita
  #6  
Antiguo 19-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Sustituye

OpenPictureDialog1.FileName

por

StringReplace(OpenPictureDialog1.FileName, '\', '\\', [rfReplaceAll])

StringReplace está en la unidad StrUtils.

// Saludos
Responder Con Cita
  #7  
Antiguo 19-02-2005
jbaleriola jbaleriola is offline
Miembro
 
Registrado: oct 2003
Ubicación: Murcia
Posts: 20
Poder: 0
jbaleriola Va por buen camino
Cool Propiedad 'Params'

MasterXP escribió:

"Has probado a insertar una rura en un campo varchar??"

Por supuesto y funciona perfectamente.

"por que aunque lo insertes desde el mismo mysql (Sin delphi) le quita los espacios y los "/"..."

Eso es porque la propiedad 'Params' solamente funciona desde Delphi; además la ventaja de utilizar 'Params' es que vale para cualquier cadena incluyendo cualquier símbolo especial con independencia del motor de base de datos a utilizar.

Un saludo
Responder Con Cita
  #8  
Antiguo 19-02-2005
MasterXP MasterXP is offline
Miembro
 
Registrado: ene 2005
Posts: 193
Poder: 20
MasterXP Va por buen camino
Cita:
Empezado por roman
Sustituye

OpenPictureDialog1.FileName

por

StringReplace(OpenPictureDialog1.FileName, '\', '\\', [rfReplaceAll])

StringReplace está en la unidad StrUtils.

// Saludos
Diosssss mio roman, eres un genio hombre, ya no se ni como agradecerte, Graciassssssssssssssss. Funciona perfectamente.

Cita:
Empezado por jbaleriola
Eso es porque la propiedad 'Params' solamente funciona desde Delphi; además la ventaja de utilizar 'Params' es que vale para cualquier cadena incluyendo cualquier símbolo especial con independencia del motor de base de datos a utilizar.
Interesante, probare con params haber si se me hace mas facil.

Gracias Amigos.
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


La franja horaria es GMT +2. Ahora son las 23:26:49.


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