Вопрос

Я пытаюсь создать таблицу в базе данных, в которой будут храниться все документы, связанные с базой данных.Что я действительно хочу сделать, так это загрузить файл и иметь код vba, который копирует файл в сетевое расположение, переименовывает файл путем объединения двух полей из формы таблицы документов (устраняя проблему повторяющихся имен файлов во внешнем расположении), а затем сохраняет имя файла и путь к файлу в поле пути к файлу в таблице.Я новичок в доступе и vba, поэтому мне трудно заставить все работать.Код, который у меня сейчас есть, приведен ниже:

Option Compare Database

Private Sub Command15_Click()
Dim f As Object

Set f = Application.FileDialog(3)

f.AllowMultiSelect = False

If f.Show Then
    For i = 1 To f.SelectedItems.Count
        sFile = Filename(f.SelectedItems(i), sPath)
        MsgBox sPath & "---" & sFile
    Next
End If

End Sub

Public Function Filename(ByVal strPath As String, sPath) As String
    sPath = Left(strPath, InStrRev(strPath, "\"))
    Filename = Mid(strPath, InStrRev(strPath, "\") + 1)
End Function

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

MS Access найдите файл и получите имя и путь к файлу

VBA для копирования файла из одного каталога в другой

В настоящее время я использую Microsoft Access 2010 и не хочу использовать тип поля вложения файла из-за ограничений размера базы данных.В настоящее время я нажимаю кнопку, и появляется проводник для перехода к загружаемому файлу, а путь и имя файла вводятся в строки.После этого момента я теряюсь.Если нужна какая-либо другая информация, пожалуйста, дайте мне знать.Заранее спасибо за помощь.

Это было полезно?

Решение

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

То, что вы делаете, довольно просто, но основная сложность связана с правильным управлением различными путями и именами файлов и извлечением из них нужной информации.

Это может оказаться затруднительным, если вы не используете некоторые вспомогательные функции для анализа и перекомпоновки различных частей путей.

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

Пример базы данных включает в себя Tools Модуль VBA, который имеет несколько полезных функций для разделения пути на составляющие.

По сути, база данных имеет 2 формы.

Основная форма позволяет указать сетевой путь, по которому будут сохраняться файлы.Затем вы можете выбрать заранее определенный номер счета (указанный в Account таблица), связанная с документом, затем нажмите кнопку загрузки.

Main Form

При этом создается новая запись в Document table и открывает форму, в которой вы можете отредактировать заголовок документа и нажать кнопку, чтобы загрузить файл на сервер.

Document Upload form

Выбранный пользователем файл копируется на сервер после преобразования его пути.Я предположил, что файл сохранит исходное расширение, имя файла будет переименовано в ID принадлежащий Document запись, где сохраняется информация о файле (например, 5845.pdf) и что папка, в которой файл сохраняется на сервере, будет иметь номер учетной записи, так что исходный файл, выбранный пользователем

C:\Users\user\Desktop\SuperSecretFile.pdf

будет сохранено, например, так:

\\docserver\files\123-55547\5845.pdf

Основная форма также позволяет обновить существующую запись, открыть файл с сервера, открыть папку сервера, в которой находится файл, или даже скопировать файл сервера обратно на компьютер пользователя с исходным именем файла.

Я позволю тебе поиграть с этим.Дайте мне знать, если у вас возникнут какие-либо проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top