powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обращение к полю через форму - что за объект?
25 сообщений из 25, страница 1 из 1
Обращение к полю через форму - что за объект?
    #32228435
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Этот вопрос у нас возникал при обсуждении факов, но вслух произнесен не был - наверно, по причинам фрейдистского характера. Имеется возможность писать что-нибудь типа

Код: plaintext
1.
2.
3.
4.
5.
frm.fld

где

frm - объект типа форма
fld - поле в рекордсете формы, для которого никакого контрола нет


А какого типа объект выдается таким синтаксисом? Вроде это и не поле, и не контрол. Я проверил TypeName - получилось AccessField. Что это за зверь? Какие у него есть свойства и методы? ObjectBrowser его не показывает.

Спасибо...
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32228445
Фотография Albert Gor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Value доступно для изменения. Проверено практикой :)
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32228448
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Про Value - это единственное, что я знал. :^)
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32228458
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, при включеном свойсnве Show hidden members
он показываеться. Даже их 2 штуки AccessField и _AccessField
Ничего акромя Value у него нет. В MSDN ни слова.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32228465
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ObjectBrowser сделай доступными скрытые компоненты (правая кнопка) и потом ищи. Кроме Value никаких других свойств у объектов этого типа нет.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32228471
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Senin Viktor & IgorM:

Понял, thanx! Кстати, у меня _AccessField нет, зато есть _AccessProperty и __AccessProperty. :^)
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32228482
Фотография Albert Gor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По нему без проблем связывается подчиненная форма. А подотчет иногда глючит. Приходится вытаскивать поле и делать его невидимым.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32228484
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А там в скрытых есть много интересного... Например, _CheckBoxInOption (и т.д.) и _ChildLabel - разновидности контролов на случай, когда они являются чьими-нибудь детьми.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32228486
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> А подотчет иногда глючит.

В отчетах это вообще никогда не работает. :^)
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32232215
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Кстати. А есть ли какая-нибудь коллекция, в которую они все входят? Как к ним обращаться полным синтаксисом?

frm.коллекция!fld
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32232234
Влдаимир Саныч. А зачем, если не секрет, это нужно. Если нужно поле источника и все его свойства тогда так
frm.Recordset.Fields(Index)
ну а если только значение т.е. Value тогда быстрее и короче
frm.Recordset.Collect(Index)
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32232239
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч

Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Form_Load()
    Dim frm As Form
    Set frm = Me.Sotrudnik.Form
    Dim ctlID As Control
    
    Set ctlID = frm.Controls( "ID" )
End Sub


Dim ctlID As Control может быть
Dim ctlID As TextBox , и т.д.

2 Шкуренко Александр
контрол нужен, чтобы управлять параметрами именно контрола.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32232240
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догонку, у этого подчиненного объекта и события можно перехватывать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private WithEvents ChildFrm As Form

Private Sub Form_Load()
    Set ChildFrm = Me.Sotrudnik.Form
    Dim ctl As Control
    
    Set ctl = frm.Controls( "ID" )
End Sub

Private Sub ChildFrm_BeforeUpdate(Cancel As Integer)
' валидация какая-нить...'
End Sub
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32232242
Владимир Саныч. Прошу прощения за очепятку.

to vdimas
>контрол нужен, чтобы управлять параметрами именно контрола.

В п. 1 было написано:
fld - поле в рекордсете формы, для которого никакого контрола нет

Может я чего путаю?
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32232249
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не, это я путаю...

Просто в предыдущих топах поднимался вопрос о том как добраться до полей таблицы с целью изменения ширины полей. В предложеном мною варианте эту таблицу можно было указывать в специально предназначенной форме как подчиненную. Таким образом: реальной формы, как объекта проекта нет, а вот полями, этой таблицы все-равно управлять можно. И даже логику полноценную строить - указал как события перехватывать.

Вот теперь до-конца показал.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32232273
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> frm.Recordset.Collect

Это интересно... Доберусь до Аксесса 2000, попробую. Thanx.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32524246
фыыф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел эти грабли по 100-му разу
?me.Controls("Code")
4144
но при этом в
me.Controls(i).Name
такого нет
и объявить
Dim ctl as Control
Set ctl = me.Controls("Code")
нельзя - "несоответствие типа данных"

...пока нашел, что контрола-то в действительности и нет, а есть только поле в базовом наборе...

Кстати, Саныч, получается, что к полю в базовом наборе таки можно обратиться по имени как к:
me.Controls("Code")
(чтобы вернуть/присвоить величину, а не как к объекту) :)
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32524304
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Шкуренко Александр
ОГРАМАДНАЁ ШПАСИБА - ВОТ ОНА - НАШЛАСЬ ПРОПАЖА

Блин, я Этот Collect в мозгах сыскать не смог - и "записки потерялись", а уже заявился щеголем - щас, мол, скажу...

2 Саныч
A2000 тут не при чем - Collect метод ДАО-рекорсета - это и есть тот самый "недокументированный". В 97 отменно живет.

т.е. Dim lFldPos as Long
Dim strName as String

lFldPos = tRec.Fields("ContragentName").CollectionIndex

DO WHILE NOT tRec.EOF

strName = tRec.Collect(lFldPos)
tRec.MoveNext
LOOP

Он, такой-сякой, и есть самый быстрый и самый недокументированный

ЕЩЕ РАЗ

СПАСИБО Шкуренко Александр за возврат ПОТЕРЯННЫХ ЗНАНИЙ
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32524327
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 фыыф:

Спасибо! Действительно работает.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32525656
фыыф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Владимир Саныч
да пжалста

меня извиняет мой склероз, и то, что последний раз я на это убил день -другой в году ... не помню в каком, но в прошлом веке. Очень может быть, что и в 7-м (95) аксе, какой был на редкость глюкав. Опять же я кодер не по призванию, а скорей по необходимости. Т.е. не фанат. А то бы сразу вспомнил :).

Вот подумал, как может быть устроен объект Controls. Понятно, что это не стандартный VBA.Collection, а видимо нечто наследуемое от общего предка
в VBA аналогичная функциональность могла быть такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
'в классе TControls
Private ControlsC as new collection 'содержит ссылки только на контролы
Private ControlsF as new collection 'содержит ссылки на поля
                                    ' и/или (перекрывающие)  контролы, 
'...
'как - то заполнили
'и реализация метода 
'.Item:
Public Function Item(Index)
'ругань возложим на .Item Vba.Collection
If AND VarType(Index)< 8   Then
   Item = ControlsC(Index)
elseIF VarType(Index)= 8 
   Item = ControlsF(Index)
end if
End Function
причем колеекции (внутренние)именно приватные, поскольку в Hidden свойствах формы и Controls я не нашел ничего похожего на Collect DAO.Recordset-а



2 Victosha
.Collect прекрасно понимает имя (т.е. поля вставлены в коллекцию по key), но не возвращает имен и прочих свойств. Т.ч. обратиться .Collect("anyName") можно, и нет необходимости вызывать .Fields нет необходимости, хотя, если полагать, что вызов по номеру быстрее, чем по key, то, т.к. такая полезная штука как .CollectionIndex есть токмо в DAO.Fields
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32525676
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 фыыф
ОК. спасибо.
а по индексу не обязательно быстрей (в стандартном VB|VBA Collection-е так точно медленней, хотя в акцессе это не важно). это у меня конкретная такая заморочка. опрашивать поля в цикле по номерам.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32525680
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А вот у меня мысль.

/topic/38890&pg=2#688719

В Аксессе 2 не было коллекции Controls, обращения к контролам писались просто как Me!MyControl. Но таким же образом писались и обращения к полям, которые обсуждаются в этом топике. Когда в Аксессе 95 была создана коллекция Controls, то через нее, получается, стало возможно обращаться и к тем, и к другим.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32525709
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Саныч
не понял о чем мысль - о скорости исполнения Me.ControlName, me("ControlName"), me.ControlName ?
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32525714
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Нет. Об истории возникновения синтаксиса, позволяющего обращаться к полям через слово Controls.
...
Рейтинг: 0 / 0
Обращение к полю через форму - что за объект?
    #32525717
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
агА
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обращение к полю через форму - что за объект?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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