получить имя файла из вложения доступа - PullRequest
0 голосов
/ 10 декабря 2018

У меня немного доступа к VBA.Его целью является вывод строки с разграничением каналов для обеспечения экспорта / резервного копирования существующих таблиц.Это работает хорошо, но есть еще одна функция, которую я хотел бы добавить.В одной из таблиц, с которыми он может работать, содержатся вложения, и я хотел бы, чтобы имя файла вложения отображалось в поле «вложение».В настоящее время код просто вставляет предупреждение, но я бы хотел что-то более актуальное.

Код в настоящее время считывает каждое имя поля в назначенной таблице, разделяя их с помощью канала (|).Затем он переходит на новую строку и повторяет процесс со значениями в каждом поле.Соответствующий бит кода ниже:

Set rs = CurrentDb.OpenRecordset(Table, dbOpenSnapshot)
rs.Filter = srchString
Set rsFilt = rs.OpenRecordset()
fieldCount = rsFilt.Fields.Count
recordTot = rsFilt.RecordCount

If recordTot <> 0 Then

    rsFilt.MoveFirst

    Dim o As Integer

    For o = 0 To fieldCount - 1
        fieldNames = fieldNames & rsFilt.Fields(o).Name & "|"
    Next o


    Do While rsFilt.EOF = False
        For o = 0 To fieldCount - 1
            If rsFilt.Fields(o).Type <> 101 Then
                oldDataSet = oldDataSet & Nz(rsFilt.Fields(o).Value, "") & "|"
            Else
                oldDataSet = oldDataSet & "attached files not saved in logs" & "|"
            End If
        Next o
        oldDataSet = oldDataSet & vbNewLine
        rsFilt.MoveNext

    Loop
Else

    fieldNames = "No " & Table & " for this member."

End If

createRecordSnapshot = fieldNames & vbNewLine & oldDataSet

End Function

С каждой записью связано только одно вложение.Я бы хотел как-нибудь получить это имя файла в виде строки.

Большое спасибо,

1 Ответ

0 голосов
/ 10 декабря 2018

Насколько я могу судить, единственный способ получить доступ к этой информации - через элемент управления Attachment в Форме.Вы можете создать простую форму, используя только этот элемент управления, загрузить ее как часть своего кода и получить к ней доступ в цикле.

Вот пример циклического перебора записей в форме и чтения filenameсвойство элемента управления Attachment:

Dim frm As Form
Dim ctl As Attachment
Dim i As Long, j As Long

Set frm = Application.Forms("Form1")
Set ctl = frm.Controls("test") 'An Attachment control
frm.RecordsetClone.MoveLast
i = frm.Recordset.RecordCount
For j = 0 To i - 1
    Debug.Print ctl.FileName
    DoCmd.GoToRecord acDataForm, frm.Name, acNext
Next
...