powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / You can't reference a property or method for a control unless the control has focus VBA
4 сообщений из 4, страница 1 из 1
You can't reference a property or method for a control unless the control has focus VBA
    #39309007
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, ребят!
Не могу понять почему Access не хочет брать значение.

Форма, на ней объект edit имя у него Edit_Article

В базе хранится запрос, в запросе функция F_art() :

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT 
a.[ArtSubSys]
, a.ArtName
, a.ArtNameAlt
, a.MainCategoryName
, iif(isnull(o.OrdF)
     ,s.[Доступно]
     ,s.[Доступно]-o.OrdF) AS Аvailable
FROM (Assortment AS a LEFT JOIN Stockreserv AS s 
              ON a.[ArtSubSys]=s.[Subsys артикул]) LEFT JOIN 
                            (
                            select id_sybsys, sum(OrderFact) as OrdF 
                            from OrdersFSD 
                            where Dispatched=0 
                            group by id_sybsys					 
                            )  AS o 
ON a.[ArtSubSys]=o.id_sybsys
WHERE cstr(a.[ArtSubSys]) like F_art()



код функции :
Код: vbnet
1.
2.
3.
Public Function F_art() As String
       F_art = "*" & Form_Form_Orders.Edit_Article.Text & "*"   
End Function



Проблема возникает в этой фокусировке, когда пользователь нажимает вывести результат запроса, после того как укажет номер артикула в поле Edit_Article, то функция не видит значение в поле, а выдает ошибку .value=null/.text=ошибка.

Пробовал:
Код: vbnet
1.
2.
3.
Public Function F_art() As String
       F_art = "*" & Form_Form_Orders.Edit_Article.value & "*"   
End Function



Почитал на я и г, пишет о том, что перед получением значения необходимо сделать фокусировку, ок пробовал так:
Код: vbnet
1.
2.
3.
4.
Public Function F_art() As String
       Form_Form_Orders.Edit_Article.SetFocus
       F_art = "*" & Form_Form_Orders.Edit_Article.value & "*"   
End Function



Тогда он мне ничего не возращает, value=null/text="".

Как эту хрень обойти, после нескольких нажатий в разные места на форме, все работает как часы.
.value=null мне понятно почему, потому что еще значение не присвоено объекту, но как мне получить введеное значение пользователем .text
...
Рейтинг: 0 / 0
You can't reference a property or method for a control unless the control has focus VBA
    #39309024
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FochaКак эту хрень обойти
На событие изменения поля написать обработчик, который изменённое значение скопирует в доступное место (например, в глобальную переменную). И именно эту копию использовать в коде.
...
Рейтинг: 0 / 0
You can't reference a property or method for a control unless the control has focus VBA
    #39309031
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha,

Что такое Form_Form_Orders ???
Это такое имя формы ???

Попробуйте сделать временную кнопочку и в её событии клик вставьте
Код: vbnet
1.
MsgBox F_art()


как работает кнопочка при изменении значения фильтра?

Я бы просто использовал для задания фильтра обычное текстовое поле

Код: vbnet
1.
F_art = "*" & Forms!ИмяФормы!ИмяПоля & "*" 
...
Рейтинг: 0 / 0
You can't reference a property or method for a control unless the control has focus VBA
    #39309041
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaFochaКак эту хрень обойти
На событие изменения поля написать обработчик, который изменённое значение скопирует в доступное место (например, в глобальную переменную). И именно эту копию использовать в коде.


отличная идея.

Код: vbnet
1.
2.
3.
Private Sub Edit_Article_AfterUpdate()
        Module1.ForOther = Edit_Article.Text
End Sub





vmagFocha,

Что такое Form_Form_Orders ???
Это такое имя формы ???

Попробуйте сделать временную кнопочку и в её событии клик вставьте
Код: vbnet
1.
MsgBox F_art()


как работает кнопочка при изменении значения фильтра?

Я бы просто использовал для задания фильтра обычное текстовое поле

Код: vbnet
1.
F_art = "*" & Forms!ИмяФормы!ИмяПоля & "*" 



Что такое Form_Form_Orders ???
Да я забыл, что аксес всегда подставляет в название тип, название формы Form_Orders, а он еще подставил Form_ вот и получилось Form_Form_Orders

Это такое имя формы ???
ну или объекта(форма) Form_Form_Orders

Forms!ИмяФормы!ИмяПоля
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / You can't reference a property or method for a control unless the control has focus VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]