Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-05-2005
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 21
fredo Va por buen camino
Question ¿cargar un campo blob por codigo?

Hola, como puedo cargar un blob por codigo en MySQL eje.

update tabla set imagen = ""
where x

nesecito hacerlo por codigo....
__________________
^_^

http://stna.cl
Responder Con Cita
  #2  
Antiguo 18-05-2005
Avatar de Kreyser
Kreyser Kreyser is offline
Miembro
 
Registrado: ago 2004
Ubicación: Barcelona
Posts: 114
Poder: 20
Kreyser Va por buen camino
Post

Hola.

Yo lo hago tal q así:

Código:
sql:='UPDATE fotos SET imagen = :PImagen ';
DataModule1.ZQuery1.ParamByName('PImagen').LoadFromFile('C:\Img.jpg', ftGraphic);
Espero te sirva o al menos oriente.
De todas formas, una búsqueda en el foro por blob + imagen te brindará otras alternativas.
Saludos.
__________________
"Es imposible hacer un programa 100% contra tontos, ya que éstos son muy ingeniosos"
Responder Con Cita
  #3  
Antiguo 18-05-2005
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 21
fredo Va por buen camino
Question Ok

OK, muchas gracias, queria hacerlo sin parametros, en DBExpress, y es muy buena idea, muchas gracias. Pero la idea es hacerlo por codigo como String, lo que pasa es que tengo una rutina que se encarga de gestionar cambios entre DBExpress y el motor de Base de Datos, esta rutina genera el codigo adecuado para actualizar, insertar o borrar registros, sin embargo esta no me sirve para los campos Blob, para todo el resto si.... asi que necesita darle soporte para Blobs. Adjunto el codigo y si alguien puede mejorarlo mejor aun.... eta funcion sirve para poner delimitadores a los diferentes tipos de datos y convertirloe en un estring aplicable a un update o insert...



Function TFrm_Main.Delimitador(DataSet:TSimpleDataSet;Campo:String;Old_Value:Boolean):String;
var d,m,a:Word;
TextoAux,Flotante:String;
i:Integer;
Nuevo:Boolean;
FloatAuxouble;
FechaAux:TDateTime;

Begin
with DataSet do
Begin
Nuevo:=False;
Try
If fieldbyname(Campo).DataType in [ftInteger,ftFloat,ftCurrency]
Then
Begin
FloatAux:=fieldbyname(Campo).OldValue;
end
else
Begin
If fieldbyname(Campo).DataType in [ftDate,ftTime,ftDateTime]
then FechaAux:=fieldbyname(Campo).OldValue
else Flotante:=fieldbyname(Campo).OldValue;
end;
except
Nuevo:=true;
end;

if fieldbyname(Campo).DataType in [ftString,ftMemo,ftBlob] then
Begin
If not(fieldbyname(Campo).DataType in [ftBlob])
then
Begin
Flotante:='';
If (Old_Value) and (not Nuevo) then TextoAux:=fieldbyname(Campo).OldValue
else TextoAux:=fieldbyname(Campo).AsSTring;
for i:=1 to length(TextoAux) do
Begin
if (TextoAux[i] = '"') or
(TextoAux[i] = '\') or
(TextoAux[i] = '''')
then Flotante:=Flotante+'\';
Flotante:=Flotante+TextoAux[i];
end;
Result:='"'+Flotante+'"';
end
else
Begin
If (Old_Value) and (not Nuevo)
then
Begin
Result:=':Foto'+Campo;
dataset.ParamByname(':Foto'+Campo).AsBlob:= fieldbyname(Campo).OldValue;
end
else
Begin
Result:=':Foto'+Campo;
dataset.ParamByname(':Foto'+Campo).AsBlob:= fieldbyname(Campo).Value;

// aqui deberia trasformar el blob en algo entendible en texto, pero no funciona, porque necesito tener el codigo ya formando parte de la quiery, por lo que se cae al hacer la insercion....
end;
end;
End
else
Begin


if fieldbyname(Campo).DataType in [ftDate,ftTime,ftDateTime] then
Begin
If (Old_Value) and (not Nuevo)
then DecodeDate(fieldbyname(Campo).OldValue,a,m,d)
Else DecodeDate(fieldbyname(Campo).AsDateTime,a,m,d);
Result:=''''+FormatFloat('00',a)+'-'+FormatFloat('00',m)+'-'+FormatFloat('00',d)+'''';
End
else
Begin
If fieldbyname(Campo).DataType in [ftInteger] then
Begin
If (Old_Value) and (not Nuevo)
then Result:=IntTostr(fieldbyname(Campo).OldValue)
else Result:=IntTostr(fieldbyname(Campo).AsInteger);
end
else
Begin
If (Old_Value) and (not Nuevo)
then
Begin
Flotante:=fieldbyname(Campo).OldValue;
end
else Flotante:=fieldbyname(Campo).AsString;
//Showmessage(Campo+':'+Flotante+' - '+fieldbyname(Campo).AsString);
for i:=1 to length(Flotante) do
begin
if Flotante[i] = ',' then Flotante[i]:='.';
end;
Result:=Flotante;
end;
end;
end;
end;
end;


Saludos y gracias....
__________________
^_^

http://stna.cl

Última edición por fredo fecha: 18-05-2005 a las 15:59:03.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 11:46:50.


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