http://www.access-programmers.co.uk/forums/showthread.php?t=169056

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

 user12628427 янв. 2011 г., 09:32
это хороший ответ. Спасибо
 user12628425 янв. 2011 г., 15:07
это на самом деле хорошая идея. Но я подумал, что должна быть причина для введения этого нового типа вложения для доступа. Кроме того, мне не нужно думать о загрузке файлов вручную, доступ сделает это автоматически с типом файла вложения.
 David-W-Fenton27 янв. 2011 г., 01:15
Существует определенная причина, по которой они ввели тип поля Attachment, и это для совместимости с Sharepoint, так же как и введение многозначных полей (а поле Attachment, на самом деле, представляет собой особый тип поля MV). Я думаю, что это не очень полезно, так как в нем слишком много вещей. Все поля MV реализованы за сценой с надлежащей таблицей соединений N: N, но к этой структуре нелегко получить доступ или манипулировать. Вы должны сделать это самостоятельно, если вам нужно N: N.
 David-W-Fenton25 янв. 2011 г., 05:37
Как вы думаете, зачем вам нужно хранить двоичные данные в базе данных? Это обычно проблематично. Поля OLE достаточно сложны, но у нового типа Вложения есть проблемы с несколькими пользователями (блокировки не применяются, и пользователи могут легко переходить к изменениям друг друга). Почему бы просто не сохранить путь к изображениям и имени файла, а затем отобразить его в несвязанном OLE-кадре? Я реализовывал это много раз.

Ответы на вопрос(2)

Первоначально опубликовано HiTechCoach наhttp://www.access-programmers.co.uk/forums/showthread.php?t=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
Решение Вопроса

управляться без установленных на компьютере серверов 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

 StockB26 нояб. 2013 г., 16:52
Интересно, что'… Code to move to desired employee будет выглядеть так.

Ваш ответ на вопрос