Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-12

actualizacion de un campo Bytea

2 messages · 2 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Christian Ortiz

Hola a todos, tengo un problema e la actualizacion de una tabla para un campo Bytea [BLOB], tengo el procedimiento descrito abajo, el cual me deber�a permitir actualizar un registro de la tabla, en particular un campo donde guardo las im�genes. El problema est� que me actualiza TODOS los registros y no solo el que deseo. Alguna idea de como solucionarlo?

*Procedure /Tsqlmanage.AddImage/*(/sTable,sImageField: String;
Imagen:TImage;sCondicion:string/);
*var *SQLupdate:TZUpdateSQL;
   TheImage:TStream;
*begin*
    TheImage:=TMemoryStream.Create;
    Imagen.Picture.Bitmap.SaveToStream(TheImage);
    TheImage.Position:=0;
*with *Query *do begin*
      Close();
      Params.Clear;
      SQL.Clear;
      SQL.Add('select ' + sImageField );
      SQL.Add('from '+ sTable);
      SQL.Add('where '+ sCondicion);
      Open;
      Edit;
      TBlobField(FieldByName(sImageField)).LoadFromStream(TheImage);
      Post; ///Probe con ApplyUpdates y fue lo mismo/
      FreeAndNil(TheImage);
*end;
end; *
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20101211/dd7490ba/attachment.html>

Reply by email

José Mejuto
to Christian Ortiz

Hello Christian,

Saturday, December 11, 2010, 9:37:31 PM, you wrote:

CO>       SQL.Add('select ' + sImageField );
CO>       SQL.Add('from '+ sTable);
CO>       SQL.Add('where '+ sCondicion);
CO>       Open;
CO>       Edit;
CO> TBlobField(FieldByName(sImageField)).LoadFromStream(TheImage);
CO>       Post; ///Probe con ApplyUpdates y fue lo mismo/
CO>       FreeAndNil(TheImage);
CO> *end;
CO> end; *

Sin ver "sCondition" es un poco dif�cil. Si tabla tiene un primary key, seleccionala tambi�n en el select, por que aparenta un bug en el query al generar el update sql sin un campo "primary key".

De todos modos, lo l�gico ser�a hacer eso son un EXECSQL no con un Open :-?

SQL.Text:='Update :pTable Set :pfield=:pfieldvalue where '+sCondition;
ParamByName('pTable').asString:=sTable;
ParamByName('pField').asString:=sImageField;
ParamByName('pField').LoadFromStream(TheImage);
ExecSQL;

Aunque yo nunca he hecho nada con im�genes y/o blobs.

Best regards, Jos�

Reply by email