Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2016, 11:06   #1
Rinsvid
 
Регистрация: 03.03.2016
Сообщений: 3
По умолчанию Работа с вложениями Access через VBA

Доброго времени суток, уважаемые!

Суть проблемы: есть таблица (работы предприятия), у нее есть столбец "Вложения" с соответствующим типом данных.

Таблица большая, по ней организован поиск. В форме вывода результатов есть кнопка "Добавить вложение", по которой открывается формочка с текстовым полем и кнопкой. В поле вводится индекс работы, к которой добавляется вложение. По кнопке открывается диалоговое окно выбора файла. Файл пользователь выбирает из какого-то "своего" места, далее он копируется с присвоением ему имени = индекса и сохраняется в нужной директории.

Вопрос: как сделать, чтобы этот файл отображался в таблице базы в поле "Вложения"?
Код:
Private Sub Кнопка3_Click()

Dim addFile As String
Dim newFileName As String
Dim objFSO As Object, objFile As Object
Dim FD
Dim razr As String
Dim ind As String

'Выбор файла
Set FD = Application.FileDialog(1)
With FD
    .AllowMultiSelect = False
    .Title = "Выберите файл акта"
    .Filters.Clear
    .InitialFileName = "C:\"
    .InitialView = msoFileDialogViewDetails
    If FD.Show = 0 Then Exit Sub
End With

'Копирование файла
razr = Right(FD.SelectedItems(1), Len(FD.SelectedItems(1)) - InStr(1, FD.SelectedItems(1), "."))

If Len(Me.Index) < 5 Then
    ind = String(5 - Len(Me.Index), "0")
End If

'Адрес папки назначения
newFileName = "C:\DB\Acts\" & ind & Me.Index & "." & razr

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(FD.SelectedItems(1))
objFile.Copy newFileName

CurrentDb.Execute "UPDATE Работы SET Работы.Вложения = " & newFileName & " WHERE Работы.Код = " & Me.Index

MsgBox "Файл добавлен в базу", vbInformation, ""
DoCmd.Close

End Sub
Выдается ошибка: Run-time error 3075: Ошибка синтаксиса (пропущен оператор) в выражении запроса 'С:\*адрес папки назначения*'
Rinsvid вне форума Ответить с цитированием
Старый 09.03.2016, 14:23   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Здесь ошибка?
Код:
CurrentDb.Execute "UPDATE Работы SET Работы.Вложения = " & newFileName & " WHERE Работы.Код = " & Me.Index
Может надо newFileName в кавычках?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 09.03.2016, 15:51   #3
Rinsvid
 
Регистрация: 03.03.2016
Сообщений: 3
По умолчанию

Спасибо))
Не знаю, я все перепробовал и решил пойти другим путем)) Убрал из таблицы столбец вложений и добавил "Ссылка", а путь к файлу записал как гиперссылку #" & FileName & "#

В принципе, почти тоже самое)) Так что спасибо, тему можно закрывать
Rinsvid вне форума Ответить с цитированием
Старый 10.03.2016, 12:22   #4
Rinsvid
 
Регистрация: 03.03.2016
Сообщений: 3
Сообщение

Еще вопрос возник, надеюсь проблему можно решить.

Итак, сделал форму для добавления записей в таблицу. На форме есть поле со списком (берет информацию из другой таблицы), заблокированное поле Index, состоящее из "=Max([Id])+1)" (для отображения присваиваемого номера и использования в имени вложения), поля для заполнения, флажок с изначальным значением false и кнопка. Если флажок меняется на true, то дополнительно открывается окно выбора файла.

Я бы даже код показал (хотя скорее всего я бы не писал это сообщение тогда), но к коду претензий нет, все работало как надо. Проблема в том, что спустя какое-то время при запуске именно этой формы Access находит какую-то ошибку и закрывается сам собой. Редактор VB при этом не открыть - тоже какую-то ошибку обнаруживает и вылетает. Любые действия с этой формой приводят к одному результату - вылет.

Помогите, что делать? Вся работа встала....

Последний раз редактировалось Rinsvid; 10.03.2016 в 12:26.
Rinsvid вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка:Access VBA работа с таблицами CraSTI Microsoft Office Access 2 16.03.2014 12:51
работа с бд access через excel.(редактирование, удаление и добавление) XROMAD Microsoft Office Access 5 25.07.2012 17:58
Работа с Access через OleObject WiseRail Помощь студентам 0 06.05.2011 14:16
Работа с базой MS Access через FTP GREMI БД в Delphi 4 27.08.2009 13:51
работа базы данных Access через интернет. Леонид Microsoft Office Access 6 27.05.2008 08:54