Hola amigos :
Necesito insertar en una BD Access múltiples imágenes(.bmp) en diferentes registros, en un sólo paso.
Utilizo el siguiente código, que a pesar de encontrarse en un ciclo
for, inserta sólo la última imagen en la BD. Este código es una parte de otro más extenso, que permite simultáneamente insertar otros valores en la BD, aparte de las imágenes, lo cual realiza sin problemas. Lo único que no logro insertar son la totalidad de las imágenes requeridas.
Código Delphi
[-]
var
I: Integer;
Bitmap1: TBitmap;
dd1: TDicomDataset;
AStream : TStream;
begin
for I := 0 to ListBox2.Items.Count - 1 do
begin
dd1:= TDicomDataset.Create;
dd1.LoadFromFile(ListBox2.Items.Strings[i]);
Bitmap1 := TBitmap.Create;
dd1.Attributes.ImageData.AssignToBitmap(Bitmap1,False);
Redimensionar(Bitmap1,80,80);
try
Data1.TablaSeries.Edit;
AStream:= Data1.TablaSeries.CreateBlobStream(Data1.TablaSeries.FieldByName('SERIES_ICON'), bmWrite);
Bitmap1.SaveToStream(AStream);
finally
Bitmap1.Free;
AStream.Free;
end;
Utilizo Edit y no Insert, porque los registros ya existen y sólo se debe agregar información en algunos campos específicos.
Si incluyo un ciclo
while para la inserción de las imágenes me genera el error de que la TablaSeries no se encuentra en estado de edición, a pesar de estarlo (Data1.TablaSeries.Edit).
ListBox2 contiene los registros a los que se apuntan en la BD, obtenidos a partir de un Query.
dd1 es un DatasetDicom, a partir del cual, por sus atributos, se generan los bitmaps.
Redimensionar es un procedimiento publicado en el foro por
Seoane, que permite justamente eso, redimensionar los bitmaps, los que finalmente pesan sólo 25Kb.
Agradezco de antemano cualquier ayuda.
Saludos y muchas gracias