Как автоматически прикрепить изображения в Access 2010 с помощью VBA / макросов? - PullRequest
1 голос
/ 25 января 2011

У меня есть таблица, в которой есть текстовое поле «Фото» с именем файла.У меня также есть фактические файлы в отдельной папке.Я хочу прикрепить эти файлы к базе данных, а не хранить их в отдельной папке.Итак, я создал отдельное поле вложения «Изображение».Но я не знаю, как я могу прикрепить эти файлы к этому полю автоматически.Можете ли вы дать мне несколько указаний?

Ответы [ 2 ]

1 голос
/ 02 февраля 2011

Вложения сильно отличаются от объектов OLE.Первые должны быть сжаты и управляться без установленных на компьютере серверов OLE.Например, когда вы добавляете объект OLE в поле MS-Access, этот объект преобразуется в своего рода растровое изображение, которое должно быть очень большим.В полях вложений несколько форматов файлов автоматически сжимаются в базе данных.Кроме того, вы можете импортировать более одного файла.В этом случае Access делает за кулисами модель реляционной базы данных для повышения эффективности.

Вы должны загрузить и сохранить форматы файлов в полях вложений следующим образом:

'  Instantiate the parent recordset. 
   Set rsEmployees = db.OpenRecordset("Employees")

   '… Code to move to desired employee

   ' Activate edit mode.
   rsEmployees.Edit

   ' Instantiate the child recordset.
   Set rsPictures = rsEmployees.Fields("Pictures").Value 

   ' Add a new attachment.
   rsPictures.AddNew
   rsPictures.Fields("FileData").LoadFromFile "EmpPhoto39392.jpg"
   rsPictures.Update

   ' Update the parent record
   rsEmployees.Update

'  Instantiate the parent recordset. 
   Set rsEmployees = db.OpenRecordset("Employees")

   '… Code to move to desired employee

   ' Instantiate the child recordset.
   Set rsPictures = rsEmployees.Fields("Pictures").Value 

   '  Loop through the attachments.
   While Not rsPictures.EOF

      '  Save current attachment to disk in the "My Documents" folder.
      rsPictures.Fields("FileData").SaveToFile _
                  "C:\Documents and Settings\Username\My Documents"
      rsPictures.MoveNext
   Wend

для получения дополнительной информациипосещение http://msdn.microsoft.com/pt-br/library/bb258184%28v=office.12%29.aspx

0 голосов
/ 22 ноября 2011

Это помогло мне:

Первоначально опубликовано HiTechCoach на http://www.access -programmers.co.uk / форум / showthread.php? Т = 169056

On Error GoTo Err_AddImage

Dim db As DAO.Database
Dim rsParent As DAO.Recordset2
Dim rsChild As DAO.Recordset2

Set db = CurrentDb
Set rsParent = Me.Recordset

rsParent.Edit

Set rsChild = rsParent.Fields("AttachmentTest").Value

rsChild.AddNew
rsChild.Fields("FileData").LoadFromFile ("c:\Sunset.jpg")

rsChild.Update
rsParent.Update

Exit_AddImage:

Set rsChild = Nothing
Set rsParent = Nothing
Exit Sub

Err_AddImage:

If Err = 3820 Then
MsgBox ("File already part of the multi-valued field!")
Resume Next

Else
MsgBox "Some Other Error occured!", Err.Number, Err.Description
Resume Exit_AddImage

End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...