Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Связанные ссылки на файлы
 
 автор: Maloy   (07.07.2008 в 15:19)   личное сообщение
6 Кб.
 
 

Уважаемые коллеги!

Помогите решить задачу. Существует некая простая ленточная форма с подвалом внизу. В этом подвале строго друг под другом размещено три поля типа "Гиперссылка" в которые копируются относительные сетевые пути на .pdf файлы в некой расшаренной папке.
Вполне очевидно, что файлы беспроблемно открываются, в случае, если на это поле единожды нажать.
Но как, кроме как путем простого копирования выбирать и записывать в соответствующие поля эти самые пути ну, например, с помощью кнопочки Browse?
Необходимо на выходе получить только путь к некому файлу в сети - не более того. Разместить рядом три маленькие кнопочки место позволяет.

Большое всем заранее спасибо!

  Ответить  
 
 автор: Анатолий (Киев)   (07.07.2008 в 15:48)   личное сообщение
 
 

Классическое решение - API функция GetOpenFileName. Примеров в инете не счесть.
Другой способ - использовать WizHook (скрытый дочерний объект Access):

    WizHook.Key = 51488399
    
    wzhwndOwner = 0&
    wzAppName = ""
    wzDlgTitle = "Выберите хоть что нибудь..."
    wzOpenTitle = "Выбрать"
    wzInitialDir = "c:\"
    wzfOpen = True
    wzflags = 0
    wzView = 0
    
    wzFile = String(255, Chr(0))
    wzFilter = "Файлы Excel (*.xls;*.xla;*.mxl)|Все файлы (*.*)"
    wzFilterIndex = 0   'Для "Файлы Excel"

    ret = WizHook.GetFileName(wzhwndOwner, _
        wzAppName, wzDlgTitle, wzOpenTitle, wzFile, _
        wzInitialDir, wzFilter, wzFilterIndex, _
        wzView, wzflags, wzfOpen)

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

  Ответить  
 
 автор: Maloy   (07.07.2008 в 16:42)   личное сообщение
 
 

Спасибо за ответ, Анатолий.
Но я, мягко говоря, небольшой в VB специалист. Каким образом прикрепить это, например, к кнопке с именем "Knopka1" и как к полю типа "гиперссылка", например, с именем "File1", которое и будет хранить собственно само значение (сетевой путь).
Ну или, например (что лучше), чтобы окошко для выбора файла (Browse) открывалось по двойному щелчку по самому полю, дабы не плодить лишние элементы управления в виде кнопок.
Спасибо.

  Ответить  
 
 автор: FORMAT   (07.07.2008 в 17:22)   личное сообщение
 
 

Вот пример использования FileDialogOpen
Этот код можно повесить на кнопку Browse




' Определение пути таблицы Excell

Dim FName As String
Dim result As Integer
With Application.FileDialog(1)
.Title = "Поиск таблицы Excell"
.ButtonName = "Добавить"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "All", "*.*", 1

result = .Show


' Закоментированный фрагмент не дает возможности выйти пока не загрузится файл
'******************************************************************************
'If result = 0 Then
'Do Until (result <> 0)
'MsgBox ("Необходимо внести файл в базу")
'result = .Show
'Loop
'End If
'*********************************************************************************


FName = Trim(.SelectedItems.Item(1))

End With

  Ответить  
 
 автор: Maloy   (07.07.2008 в 18:23)   личное сообщение
 
 

Спасибо, FORMAT, но мне необходимо универсальное решение. почему именно Excel?
Ну или, в принципе, если была бы конкретная заточка под файлы формата .pdf - это было бы вообще идеальным решением.

Спасибо.

P.S. Насколько я понимаю, вешать необходимо было именно на событие "Нажатие кнопки"?
Как выглядел бы полный листинг, если бы, например, кнопка называлась бы, ну, например, "Knopka1"? Просто я не вижу и не совсем понимаю, где участвует сама привязка процедуры к имени кнопки. Реально ли реализовать сию схему именно с помощью события "двойное нажатие кнопки" на поле типа "гиперссылка"?

  Ответить  
 
 автор: FORMAT   (07.07.2008 в 18:53)   личное сообщение
 
 

Эксель - это из моего примера. Замените Эксель на ПДФ и все.
Этот код полностью копируется в процедуру knopka1_Click
Обычно обрабатывается одинарное нажатие кнопки. Если уж так хочется то обрабатывайте событие
Knopka1__DblClick

В переменную FName - возвращается путь к файлу. Присваивайте полю гиперссылка значение FName.

  Ответить  
 
 автор: Maloy   (08.07.2008 в 11:15)   личное сообщение
 
 

Как именно изменить формат на PDF? Кстати, окошко Browse теперь безошибочно открывается, но при выборе файла, в поле FName типа "Гиперссылка" его значение почему-то не вставляется, а ведь должна вставляться ссылка, насколько я понимаю и ожидаю. В чем может быть дело?
И как понять "Присваивайте полю гиперссылка значение FName" - как это сделать - просто переименовать поле на "FName"? Этого достаточно? Все рано не работает. Ссылка в поле в результате не вставляется.

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

  Ответить  
 
 автор: osmor   (08.07.2008 в 12:08)   личное сообщение
14 Кб.
 
 

так?

  Ответить  
 
 автор: Maloy   (08.07.2008 в 17:43)   личное сообщение
 
 

Да, Osmor, именно так! Спасибо тебе огромное! Ты действительно очень выручил! Там, правда, нужно было удалить дублирующую часть (" & "#" & strFile"), - в таком случае ссылка дублировалась дважды. А так, все именно так, как было нужно!

Также спасибо Format'у и Анатолию!

  Ответить  
 
 автор: Maloy   (09.07.2008 в 14:30)   личное сообщение
 
 

Кстати исходя из всего этого у меня появился еще один маленький вопрос: каким образом сделать, чтобы открывающееся окно у всех пользователей открывалось по умолчанию, например, в сетевой папке \\Server\Folder\?

Помогите пожалуйста с реализацией данной возможности!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList