5

背景:我们有一个旧的(但对业务至关重要的)SQL Server 数据库和一个 MS Access ADP 前端;这最初是从一系列 Access 数据库升级到 SQL Server 的。

该数据库为我们的客户跟踪危险材料,并存储大量图像。这些图像是从 MS Access 插入的,并作为 OLE 对象放入数据库中。

问题是:

  • 除了 Access/Office 之外的任何内容都很难阅读
  • 存在巨大的存储开销 - 约 10GB 的图像占用 600+ GB 的存储空间(!)

我的问题是:你建议用什么方法将这些臃肿的对象转换回简单的 JPEG?一旦我们这样做了,我们最终可以将我们的前端从 Access 迁移到一个简单的基于 Web 的系统上,我们的备份时间将再次变得易于管理!

4

4 回答 4

5

从这里获取 *.bas 文件http:http://stackoverflow.com/Content/img/wmd/ul.png//www.access-im-unternehmen.de/index1.php?BeitragID=337&id=300(不幸的是是德语)。

它使用 MS 的 GDI+ 库(包含在 Win 标准安装中)将图片导入/导出到 Access OLE。

界面粗略翻译:

  • IsGDIPInstalled:检查 GDI+ 的安装
  • InitGDIP:GDI+的初始化。
  • ShutDownGDIP:GDI+ 的 Deinit(重要且要使用!)
  • LoadPictureGDIP:在 StdPicture 对象(bmp、gif、jp(e)g、tif、png、wmf、emf 和 ico)中加载图片。
  • ResampleGDIP:将图片缩放到新的尺寸并在需要时锐化。
  • MakeThumbGDIP:制作缩略图并用颜色填充边框。
  • GetDimensionsGDIP:以像素为单位获取 TSize-Struktur 中的尺寸。
  • SavePicGDIPlus:将文件中的图片对象保存为 BMP、GIF、PNG 或 JPG(具有给定质量的 jpg)
  • ArrayFromPicture:返回图片的字节数组,将图片放入表的OLE字段
  • ArrayToPicture:创建包含图片的表的 OLE 字段的字节数组
于 2008-09-22T11:42:27.917 回答
1

Use Access MVP Stephen Lebans ExtractInventoryOLE tool to extract the OLE objects from a table to separate files.

http://www.lebans.com/oletodisk.htm

According to Lebans: "Does NOT require the original application that served as the OLE server to insert the object. Supports all MS Office documents, PDF, All images inserted by MS Photo Editor, MS Paint, and Paint Shop Pro. Also supports extraction of PACKAGE class including original Filename."

Also, Access 2007 stores OLE objects much more efficiently than the historical BMP formats of previous versions, so you would have a smaller storage space and be able to keep your Access app if you converted it from the 600+GB storage of SQL Server to Access 2007 accdb format. Your backup times would be manageable and you wouldn't need to spend time converting an Access front end to a web front end.

于 2008-09-22T11:59:22.867 回答
1

这里又是链接:http ://www.access-im-unternehmen.de/index1.php?BeitragID=337&id=300

于 2008-09-22T11:44:10.563 回答
0

我认为您的数据库变得如此臃肿的原因是 JPG 也作为位图存储在“OLE 对象”结构中,或者我已经看到,这取决于插入 JPEG 的方法。

这不是最佳的,但是:对于数据库中的每个图像,我将以编程方式创建一个仅包含图像的虚拟 .doc,然后通过 OpenOffice 转换传递它,并从生成的 OpenOffice 文档的图像子文件夹中提取 JPEG(即一个 ZIP 文件)。

然后我会用原始 JPEG 数据替换数据库中的 OLE 文档,但是我无法让您在自定义应用程序中清楚地显示它们(除非它是一个 Web 应用程序)。

于 2008-09-22T11:41:15.843 回答