0 / 0 / 0
Регистрация: 18.01.2018
Сообщений: 4
1

Поле OLE в форме Access

18.01.2018, 12:11. Показов 5732. Ответов 6
Метки ole, vba (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Помогите решить проблему:
в форме есть поле OLE.
Хочу добавлять в него данные и просматривать с пом кнопок, а не с пом диалогового окна самого поля.

вот это не работает:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub InsertFile_Click()
Dim FileAdress As String
Application.FileDialog(msoFileDialogOpen).Filters.Clear 
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False 
 
Do While Not FileAdress Like "*"  
    If Application.FileDialog(msoFileDialogOpen).Show = False Then Exit Sub 
    FileAdress = Application.FileDialog(msoFileDialogOpen).SelectedItems(1) 
Loop
 
Me![FileData].OLETypeAllowed = acOLEEmbedded
Me![FileData].SourceDoc = FileAdress
Me![FileData].Action = acOLECreateEmbed
 
End Sub
говорит, что нет такого метода:
Visual Basic
1
Me![FileData].Action = acOLECreateEmbed
вот это тоже не работает:
Visual Basic
1
2
Me.FileData.Verb = acOLEVerbOpen
Me.FileData.Verb = acOLEVerbClose
если поле изначально пустое, то ругается, что нет объекта
если поле это ворд, то ничего не происходит
и только если поле - это картинка, то открывается диалоговое окно выбора файла
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2018, 12:11
Ответы с готовыми решениями:

Свободное OLE поле в ленточной форме
Добрый день! Подскажите, пожалуйста, можно ли сделать следующее: В ленточной форме по запросу...

Экспорт из Access в Excel. Поле ole
Привет, есть БД с полем ole, стоит задача экспорта в Excell с картинкой, которая храниться в ole. В...

Показать на одиночной форме изображение хранящееся в поле типа OLE объект
Не attachments! Как это сделать? Через image или Bound Object Frame? Нужна срочная помощь!

Поле для поиска на форме в Access
Здравствуйте! Подскажите ,пжл, как создать на форме поле для поиска, при вводе данных в которое...

6
Эксперт MS Access
7395 / 4532 / 295
Регистрация: 12.08.2011
Сообщений: 14,015
19.01.2018, 03:46 2
У меня открытие было вот так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 Dim sFileName As String
    Dim dlgOpenFile As Object 
    
    Set dlgOpenFile = Application.FileDialog(1) 'msoFileDialogFolderPicker
    
    With dlgOpenFile
    .Filters.Clear
    .InitialFileName = "путь" 
    .AllowMultiSelect = False
    .Title = "Выбор договора"
   
     If dlgOpenFile.Show = 0 Then
     Exit Sub
     Else
    
     sFileName = Trim(dlgOpenFile.SelectedItems(1))
     End If
     End With
     Set dlgOpenFile = Nothing
     With Me.полеоле
      .SourceDoc = sFileName
      .Action = acOLECreateEmbed
     End With
0
0 / 0 / 0
Регистрация: 18.01.2018
Сообщений: 4
19.01.2018, 11:52  [ТС] 3
Спасибо. Но оно не работает.
Если файл - это не картинка, то все ок.
А вот если картинка, то
Me.полеоле.Action = acOLECreateEmbed не срабатывает. говорит не может это сделать.

А также проблема, если в поле OLE картинка и я ее открыл.
Поле становится закрашено точками и в таком состоянии оно больше не обновляется.
и ему не может быть присвоено значение Enabled = False

Как с этим бороться не знаю.
0
Эксперт MS Access
7395 / 4532 / 295
Регистрация: 12.08.2011
Сообщений: 14,015
21.01.2018, 13:15 4
Как говорит? Скриншот увидеть можно?
настройки у поля на форме такие? -->
Миниатюры
Поле OLE в форме Access  
0
0 / 0 / 0
Регистрация: 18.01.2018
Сообщений: 4
21.01.2018, 13:32  [ТС] 5
настройки не такие
команда 0
если команда -2, то при двойном клике картинка не открывается, а запрашивается адрес файла для замены этой картинки

Добавлено через 3 минуты
я не разобрался как вставлять сриншот не через вложение

Добавлено через 6 минут
Расскажу по порядку:

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

2. Для добавления файла делаю так:
Visual Basic
1
2
3
Me![FileData].Enabled = True
Me![FileData].Action = acOLEInsertObjDlg
Me![FileData].Enabled = False
все гуд, добавляется

3. Сохраняю запись в таблицу.

4. Возвращаюсь вновь к этой форме с уже сохраненным файлом.

5. Открываю файл так:
Visual Basic
1
Me.FileData.Action = acOLEActivate
все гуд, он открывается.
НО
после открытия это поле становится как бы закрашено пунктиром (или точками в мелкую сетку)
и отсюда начинаются проблемы.
судя по всему эта закраска означает, что поле активно или типа того.
и поэтому в таком состоянии не получается больше сделать

Me![FileData].Enabled = False
т.е. заменить файл я уже не могу, т.к. часть кода
Visual Basic
1
Me![FileData].Enabled = False
не срабатывает.

Начинает работать, только если закрыть форму и открыть заново и не открывая картинку сразу ее заменить, пока это поле не закрашено сеточкой.

Добавлено через 1 минуту
если же идти другим путем сохранения файла через диалоговое окно и адрес:
Visual Basic
1
2
3
'Me![FileData].OLETypeAllowed = acOLEEmbedded
'Me![FileData].SourceDoc = FileAdress
'Me![FileData].Action = acOLECreateEmbed
то в этом случае не срабатывает Me![FileData].Action = acOLECreateEmbed, если файл - это картинка.
Хотя для всех остальных типов работает.
0
0 / 0 / 0
Регистрация: 18.01.2018
Сообщений: 4
21.01.2018, 13:39  [ТС] 6
во вложении скрин
Вложения
Тип файла: pdf Doc1.pdf (367.3 Кб, 37 просмотров)
0
Эксперт MS Access
7395 / 4532 / 295
Регистрация: 12.08.2011
Сообщений: 14,015
23.01.2018, 03:20 7
Вы описали совершенно правильное поведение поля OLE. Именно так оно и работает.
Если хотите открывать OLE и при этом работать в форме, то вам нужно сделать отдельную форму для открытия OLE.
по кнопке запускаете форму 2, на форме 2 делаете запуск OLE при открытии

Visual Basic
1
2
3
4
5
6
7
Private Sub Form_Open(Cancel As Integer)
DoCmd.MoveSize 1, 1, 1, 1
With me!поле_с_оле
    .Action = acOLEActivate
    .Verb = acOLEVerbOpen
End With
End Sub
и форму 2 делаете невидимой или как в примере практически незаметной.

А сами работаете в форме 1. Только не забудьте закрыть форму 2 при выходе из формы 1.

Это на случай, если вам нужно просматривать документ и одновременно что-то заносить в другие поля таблицы.
Менять данные в поле OLE нужно при закрытом поле OLE.
0
23.01.2018, 03:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2018, 03:20
Помогаю со студенческими работами здесь

Как сделать поле HTML в форме access 2003?
Подскажите, пожалуйста, как сделать поле HTML в форме access 2003?

Свободное поле на форме использующее SQL запрос Access 2007
Таблицы уже связаны по другим полям а мне нужно добавить сободное поле на форму и...

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

Вставка фотографий сотрудников через поле подстановки (Поле объекта OLE)
Добрый день! Помогите плиз. Смысл такой, необходимо, чтобы при смене работника, менялась его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru