MSAccess VBA для сохранения одного вложения в папку - PullRequest
0 голосов
/ 06 сентября 2018

Я действительно новичок в Access, поэтому я не слышал о большинстве команд для Access VBA, но я довольно хорошо знаком с Excel VBA.

То, что я пытаюсь сделать, это сохранить вложение, которое было только что введено в таблицу через форму. Я просматривал некоторые примеры в Интернете и пытался заставить его работать для меня, но код не перемещает файл в папку. Я не получаю ошибку отладки, хотя.

Вот мой текущий код. Я знаю, что он настроен на цикл прямо сейчас, где на самом деле я просто хочу, чтобы последнее вложение в таблице каждый раз, но я не знаю, как получить только последнее вложение. В любом случае, этот текущий код не перемещает ЛЮБЫЕ вложения.

Private Sub cmdAddRecord_Click()

If MsgBox("Adding a new record will save the current form. You will not be able to edit this credit request. Would you like to continue?", vbQuestion + vbYesNo, "Save current record and open new form") = vbYes Then

MkDir "C:\Users\username\Desktop\IC Transfer Back Up Attachments\" & Me.txtRequestID & "-" & "Back Up Attachments" & " " & Format(Date, "MMDDYY")

DoCmd.RunCommand acCmdSaveRecord

Dim SaveFolder As String
SaveFolder = "C:\Users\username\Desktop\IC Transfer Back Up Attachments\" & Me.txtRequestID & "-" & "Back Up Attachments" & " " & Format(Date, "MMDDYY")

Dim rsParent As DAO.Recordset2
Dim rsChild As DAO.Recordset2
Set rsParent = CurrentDb.OpenRecordset("SELECT * FROM tblICTRequested")
Set rsChild = rsParent.Fields("BackUpAttachments").Value

Do Until rsChild.EOF
    rsChild.Fields("FileData").SaveToFile SaveFolder
    rsChild.MoveNext
Loop

    DoCmd.RunCommand acCmdCloseWindow
    DoCmd.OpenForm "frmICTRequested"

End If
End Sub

Мне кажется, что большая часть этого имеет смысл, но я не уверен, что мне следует поместить в строку .Fields("FileData").SaveToFile, поскольку у меня нет поля с именем "FileData", но я перепробовал все свои существующие поля безрезультатны.

Для справки, вот некоторые онлайн-ссылки, которые я просмотрел:

https://www.experts -exchange.com / вопросы / 29005769 / MS-Access-приставка-file.html https://msdn.microsoft.com/en-us/library/office/ff191852.aspx https://access -programmers.co.uk / форум / showthread.php? Т = 282135

Есть советы? Очень ценится!

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Итак, с помощью кого-то я изменил строку:

Set rsParent = CurrentDB.OpenRecordset("SELECT * FROM tblICTRequested")

Кому:

Set rsParent = CurrentDB.OpenRecordset("SELECT * FROM tblICTRequested WHERE ID =" & Me.txtRequestedID)

Кажется, это отлично работает для моей цели! Спасибо всем, кто предоставил информацию!

0 голосов
/ 06 сентября 2018

Ты очень близко. Я использую такую ​​функцию:

Public Function SaveFileToDisk(FileName As String, FileData As DAO.Field2, Optional saveToFolder As String) As String
    Dim templatePath As String

    If saveToFolder = "" Or Not fso.FolderExists(saveToFolder) Then
        saveToFolder = Environ("temp")
    End If

    templatePath = GetAvailableFileName(FileName, saveToFolder, True) 'A function to create a unique file name

    FileData("FileData").SaveToFile templatePath
    SaveTemplateToDisk = templatePath
End Function

Это называется так:

Dim tempPath As String
Dim fileData as DAO.Field2
Dim folderToSaveTo as string

folderToSaveTo = "C:\some\folder"
set fileData = rsParent.Fields("BackUpAttachments")
tempPath = exporter.SaveTemplateToDisk("Name of file.ext", fileData , folderToSaveTo)

Поле вложения похоже на набор записей внутри поля.

...