Bueno, después de romperme la cabeza, la solución era mucho mas sencilla de lo que parecía.
Aquí pongo el código para el que quiera verlo.
Gracias a todos
Código Delphi
[-]procedure TForm1.CargarImagen3(directorio: string; indice: integer; visibleWEB : boolean);
var fichero: string;
Imagen : TBitMap;
Buffer : TStream;
CodigoFoto, CodigoArticulo : integer;
Visible : string;
begin
Imagen := TBitmap.Create;
Buffer := TMemoryStream.Create;
Visible := IfThen(VisibleWeb,'T','F');
fichero := directorio+'\'+FileListBox1.Items.Strings[indice];
if (ANSIUpperCase(ExtractFileExt(fichero)) = '.JPG')
or (ANSIUpperCase(ExtractFileExt(fichero)) = '.JPEG') then
begin
Imagen := ConvertJPG2BMP(fichero);
Imagen.SaveToStream(buffer);
DM.SQLQuery2.Params.ParamByName('FOTO').LoadFromStream(buffer,ftblob);
end
else
DM.SQLQuery2.Params.ParamByName('FOTO').LoadFromFile(fichero,ftblob);
DM.SQLQuery2.Params.ParamValues['REFDELPROVEEDOR'] := NombreSinExtension(FileListBox1.Items.Strings[indice]);
DM.SQLQuery2.Params.ParamValues['VISIBLEENWEB'] := visible;
DM.ClientDataSet2.Close;
DM.ClientDataSet2.Execute;
end;
Como podéis ver era tan fácil como asignar lo parámetros en el SQLQuery2 y cerrar y ejecutar la sentencia en el ClientDataSet2