MS Access数据库中的Delphi和附件文件

时间:2017-09-02 07:13:43

标签: delphi delphi-10-seattle

我在谷歌搜索了很多次,所以我找不到任何关于通过delphi处理附件的事情,所以我决定写这个问题。

我在[{"model":"main.mymodel","pk":258160,"fields":{"idn":920087058,"name":null,"ico":null,"street":"PO BOX 149","city":"HYDER","state":"AK","zip":"99923"}}] 数据库中有一个名为 Files 的数据库,其中包含以下字段:

.accdb

enter image description here

如何使用delphi将文件保存到附件字段/从附件字段加载文件?

Attach files and graphics to the records in your database

这里的问题,在delphi中IDFile PK AutoIncField, FileName WideStringField, FilesAttached WideMemoFiled. 的数据类型是FilesAttached, 当我写TWideMemoField时,它只给出附件的名称。

我不知道如何使用delphi将文件插入/保存到该字段中。

1 个答案:

答案 0 :(得分:1)

似乎很难找到使用.accdb附件字段的VBA / C#示例,这些字段应该很容易地转换为Delphi。然而,结果却比我想象的更难找到a)没有误解附件字段实际上是什么以及b)实际工作的东西。跳到下面的更新部分。

例如,谷歌搜索

  

accdb在vba中创建附件

给出了很多点击,包括这个

http://sourcedaddy.com/ms-access/working-with-attachment-fields.html

您可以尝试作为起点。它使用MS DAO对象,并包含直接的代码,用于将文件存储到附件字段以及访问它们。你需要为DAO类型的库创建一个Delphi包装器单元,如果你还没有,使用IDE Import Type Library

如果你更喜欢基于ADO的东西,你可以看看

https://www.codeproject.com/Questions/843001/Handling-fields-of-Attachment-type-in-MS-Access-us

更新通过" aspen"查看帖子中的函数OpenFirstAttachmentAsTempFile (日期= 4/11/2012 07:18 am)在这个帖子中

https://access-programmers.co.uk/forums/showthread.php?t=224112&page=2

显示了从attachment字段中提取文件的明显成功尝试(该线程还包含了编写此函数的其他几种尝试)。

特别注意这一行

Set rstChild = rstCurrent.Fields(strFieldName).Value ' the .Value for a complex field returns the underlying recordset

表示附件字段的Value可以返回包含附件的记录集。

据推测,将最新版本的DAO类型库导入Delphi是可以的 一个Delphi应用程序执行相同的操作,然后可以对rstChild记录集进行反向工程,以查看如何在代码中填充此字段。但是,我还没有这样做。