bg

Мой аккаунт


Забыли пароль? Напомнить


Зарегистрироваться
bg
bg
bg
bg

Поиск по сайту


bg
[#news]
[#main] [#journal]

Вопрос к читателям сайта и форума: Есть ли умельцы знающие Microsoft Access?

АвторСообщение
УмНик

УмНик


Статус: Пользователь
Возраст: 52
Город: Краснодар
Дата регистрации: 11 апр 2005
Последнее посещение: 23 авг 2019 в 9:51
Тем: 100
Сообщений: 32705
Репутация: 803
Спасибо сказали раз: 75079

Написать личное сообщение
18 сен 2014 в 0:22
Вопрос к читателям сайта и форума: Есть ли умельцы знающие Microsoft Access?

Если есть, напишите здесь, или в личку.
Есть вопрос по программированию во встроенном языке макросов.
А именно - Каким образом сделать так, чтобы в форме была кнопка, которая при нажатии открывала бы окно выбора директории?

Если кратко:
Есть база домов.
Простая.
В виде одной таблицы.
В таблице есть поле, в котором планируется хранить путь к папкам с фотографиями этих домов.
Так вот нужна кнопка (в уже готовой форме), которая бы при нажатии открывала окно выбора директории, чтобы потом сохранять полученный путь в поле таблицы.

Излазил уже весь Access, никак не пойму как это лучше реализовать.

...Можете отвечать сложно или кратко. Я пойму, так как сам немного разбираюсь в Access.
Если запостите готовый кусок кода в VBA, будет вообще замечательно.

P.S. ВСЕМ давшим ценный совет, плюс в репу, и мое искреннейшее почтение.
Ganza

Ganza


Статус: Пользователь
Возраст: 47
Город: Санкт-Петербург
Дата регистрации: 9 окт 2013
Последнее посещение: 24 апр 2019 в 2:51
Тем: 0
Сообщений: 37
Репутация: 1
Спасибо сказали раз: 99

Написать личное сообщение
18 сен 2014 в 1:49

Пусть имя кнопки cmdFileDialog
Повесить на событие Click
Такой обработчик


Private Sub cmdFileDialog_Click()

' Requires reference to Microsoft Office 11.0 Object Library.

Dim fDialog As Office.FileDialog
Dim varFile As Variant

Dim var SelectedFile


' Set up the File Dialog.
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

With fDialog

' запретить выбор более 1 файла
.AllowMultiSelect = False

' Set the title of the dialog box.
.Title = "Выберите файл"

' Фильтр по типу файлов
.Filters.Clear
.Filters.Add "jpeg pictures", "*.jpg"


' если show вернул False, значит - cancel
' а у нас в SelectedFile будет путь к одному файлу
If .Show = True Then

' если .AllowMultiSelect был бы = True - то тут
' был бы перебор всех выбранных файлов
For Each varFile In .SelectedItems
SelectedFile = varFile
Next

Else
MsgBox "Чувак нажал cancel"
End If
End With
End Sub

Спасибо сказали: УмНик

УмНик

УмНик


Статус: Пользователь
Возраст: 52
Город: Краснодар
Дата регистрации: 11 апр 2005
Последнее посещение: 23 авг 2019 в 9:51
Тем: 100
Сообщений: 32705
Репутация: 803
Спасибо сказали раз: 75079

Написать личное сообщение
18 сен 2014 в 5:09
Цитата
Пусть имя кнопки cmdFileDialog
Повесить на событие Click
Такой обработчик


Private Sub cmdFileDialog_Click()

' Requires reference to Microsoft Office 11.0 Object Library.

Dim fDialog As Office.FileDialog

Спасибо, плюс в репу и сразу уточню - база пишется на Microsoft Access 2003.
Не спрашивайте - почему.
Так надо.

Так вот Access 2003 не понимает тип данных "Office.FileDialog".
Соответственно уже на строчке объявления переменной fDialog - "Dim fDialog As Office.FileDialog" выходит сообщение об ошибке, что тип данных не определен.
Как выйти из ситуации?

P.S. И еще уточню. Событие на кнопке должно возвращать не имя файла, а имя директории. Но это уже можно допилить в процессе.

Спасибо сказали: Ganza

Ganza

Ganza


Статус: Пользователь
Возраст: 47
Город: Санкт-Петербург
Дата регистрации: 9 окт 2013
Последнее посещение: 24 апр 2019 в 2:51
Тем: 0
Сообщений: 37
Репутация: 1
Спасибо сказали раз: 99

Написать личное сообщение
18 сен 2014 в 9:41
За плюс спасибо:-)

Тип не определен, потому что не
добавлена ссылка на библиотеку ms office 11 object library.

Добавить можно так- когда открыт редактор с кодом на vba, в меню сервис выберите команду ссылки.

В диалоговом окне ссылки-Имя базы данных установите флажок Библиотека объектов Microsoft Office 11.0 и нажмите кнопку ОК. Пишу по памяти, доеду до работы- перепроверю.


Для того, чтобы выбирать не имя файла, а имя директории, надо вместо msoFileDialogFilePicker написать msoFileDialogFolderPicker. Вроде бы так.

Спасибо сказали: УмНик

УмНик

УмНик


Статус: Пользователь
Возраст: 52
Город: Краснодар
Дата регистрации: 11 апр 2005
Последнее посещение: 23 авг 2019 в 9:51
Тем: 100
Сообщений: 32705
Репутация: 803
Спасибо сказали раз: 75079

Написать личное сообщение
18 сен 2014 в 10:02
Цитата
В диалоговом окне ссылки-Имя базы данных установите флажок Библиотека объектов Microsoft Office 11.0 и нажмите кнопку ОК. Пишу по памяти, доеду до работы- перепроверю.

Для того, чтобы выбирать не имя файла, а имя директории, надо вместо msoFileDialogFilePicker написать msoFileDialogFolderPicker. Вроде бы так.

Ага, разобрался.
Поставил галочку для Microsoft Office 12.0
Заменил msoFileDialogFilePicker на msoFileDialogFolderPicker.
Теперь все работает.
Только непонятно в какой переменной хранится
А путь к выбранной в окне диалога директории хранится в "SelectedFile".

К этому сообщению прикреплены файлы, но у Вас нет прав на их загрузку.

Ganza

Ganza


Статус: Пользователь
Возраст: 47
Город: Санкт-Петербург
Дата регистрации: 9 окт 2013
Последнее посещение: 24 апр 2019 в 2:51
Тем: 0
Сообщений: 37
Репутация: 1
Спасибо сказали раз: 99

Написать личное сообщение
18 сен 2014 в 11:30
Заработало, супер А что непонятно в какой переменной хранится?
УмНик

УмНик


Статус: Пользователь
Возраст: 52
Город: Краснодар
Дата регистрации: 11 апр 2005
Последнее посещение: 23 авг 2019 в 9:51
Тем: 100
Сообщений: 32705
Репутация: 803
Спасибо сказали раз: 75079

Написать личное сообщение
18 сен 2014 в 13:03
Цитата
Заработало, супер А что непонятно в какой переменной хранится?

Все понятно, все ясно, все работает.
Спасибо.

Еще один вопрос:
Допустим есть путь к папке "C:\MyDoc".
Какой скрипт повесить на кнопку, которая бы при нажатии открывала эту папку?
Ganza

Ganza


Статус: Пользователь
Возраст: 47
Город: Санкт-Петербург
Дата регистрации: 9 окт 2013
Последнее посещение: 24 апр 2019 в 2:51
Тем: 0
Сообщений: 37
Репутация: 1
Спасибо сказали раз: 99

Написать личное сообщение
18 сен 2014 в 13:32
У FileDialog есть свойство InitialDirectory.

...
.AllowMultiSelect = False
.InitialDirectory = "C:\MyDoc"
...

:-)

Спасибо сказали: УмНик

УмНик

УмНик


Статус: Пользователь
Возраст: 52
Город: Краснодар
Дата регистрации: 11 апр 2005
Последнее посещение: 23 авг 2019 в 9:51
Тем: 100
Сообщений: 32705
Репутация: 803
Спасибо сказали раз: 75079

Написать личное сообщение
18 сен 2014 в 13:37
Не совсем то.

Уже разобрался.
Вот какой нужен скрипт:
Private Sub Кнопка95_Click()
On Error GoTo Err_Кнопка98_Click

Dim stAppName As String

stAppName = "explorer.exe " + [ФотоП]
Call Shell(stAppName, 1) ' здесь идет открытие папки, имя папки берется из поля на форме с именем [ФотоП]

Exit_Кнопка98_Click:
Exit Sub

Err_Кнопка98_Click:
MsgBox Err.Description
Resume Exit_Кнопка98_Click
End Sub
Ganza

Ganza


Статус: Пользователь
Возраст: 47
Город: Санкт-Петербург
Дата регистрации: 9 окт 2013
Последнее посещение: 24 апр 2019 в 2:51
Тем: 0
Сообщений: 37
Репутация: 1
Спасибо сказали раз: 99

Написать личное сообщение
18 сен 2014 в 15:21
А, ясно, я неправильно понял вопрос.


У Вас нет прав писать в этот форум. Попробуйте зарегистрироваться или написать администратору.