我在谷歌搜索了很多次,所以我找不到任何关于通过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
如何使用delphi将文件保存到附件字段/从附件字段加载文件?
Attach files and graphics to the records in your database
这里的问题,在delphi中IDFile PK AutoIncField,
FileName WideStringField,
FilesAttached WideMemoFiled.
的数据类型是FilesAttached
,
当我写TWideMemoField
时,它只给出附件的名称。
我不知道如何使用delphi将文件插入/保存到该字段中。
答案 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
记录集进行反向工程,以查看如何在代码中填充此字段。但是,我还没有这样做。