powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Requery после изменения текстового поля?
13 сообщений из 13, страница 1 из 1
Requery после изменения текстового поля?
    #32345888
ARudenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть главная форма в которой програмным
путем изменяется скрытое поле txtAccountID.
На форме есть подчиненная форма,
данные которой должны изменяться
в зависимости от txtAccountID
(процедура изменения данных
RequeryPublishDates).
Привязываешь Requery к AfterUpdate
текстового поля -- рефрешит, только
после изменения текстового поля
с клавиатуры вручную.
Т.е. AfterUpdate привязано к событиям
клавиатуры и на программное изменение
данных не реагирует.
Какой выход из этой ситуации?
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32345890
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да, это стандартное поведение Аксесса в отличие от VB. Решение одно - вызывать явным образом процедуру txtAccountID_AfterUpdate во всех тех местах программы, где это требуется.
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32345891
ARudenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да... теперь совсем ламерский вопрос:
Если я изменяю это поле в другой подчиненной форме,
т.е. в другом модуле формы:
Private Sub Form_Current()
Me.Parent("txtAccountID") = Me.Recordset.Fields("AccountID").Value
'по-идее тут должно генериться событие
End Sub
Как в этом случае достучаться до этого события?
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32345894
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
В той форме, где расположено это поле, есть обработчик:

Private Sub txtAccountID_AfterUpdate()
...
End Sub

Способ 1. Переправляем Private на Public и обращаемся так:

Me.Parent.txtAccountID_AfterUpdate

Способ 2. Описываем в обычном модуле процедуру, переносим весь текст обработчика в нее и обращаемся к ней.
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32345897
ARudenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По первому способу выдает ошибку 2465:
Application-defined or object-defined error:(
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32345899
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Жалко. У меня когда-то получалось. Хорошо, что есть второй способ.
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32345903
ARudenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Звиняйте, но еще один вопрос:
главная форма -- frmAccountsJournal
подчиненная -- frmPublishDates
Когда обработчик стоял в главной форме:
Me!frmPublishDates.Form.RecordSource = strFullSQL
Теперь, по второму способу, надо перенести
обработчик в отдельный модуль и напрямую
указывать ссылку на главную:
Forms("frmAccountsJournal")("frmPublishDates").Form.RecordSource = strFullSQL
Не работает:( Хотя Гетц, Литвин, Гилберт и Бэрон рядом:)
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32345982
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а сделать связь между формами по полю txtAccountID в этом случае не подходит ?

в такой консрукции для новых записей автоматически выставляется связанное значение
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32346081
ARudenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что надо програмно отслеживать
значения поля и выполнять определенные
действия, кроме обновления подчиненной
формы. Вот так.
Все-таки как из программного модуля
обратится к свойству RecordSource
подчиненной формы?
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32346096
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Forms("frmAccountsJournal")![имяКОНТРОЛАвкоторуювложенаподформа].Form.RecordSource = strFullSQL

Forms("frmAccountsJournal").controls("имяКОНТРОЛАвкоторуювложенаподформа").Form.RecordSource = strFullSQL

Forms("frmAccountsJournal").[имяКОНТРОЛАвкоторуювложенаподформа].Form.RecordSource = strFullSQL


имя контрола и имя подчиненной формы не одно и тоже
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32346714
ARudenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чем дальше в лес, тем толще партизаны...
Все начиналось с AfterUpdate...

Во всех трех примерах
имяКОНТРОЛАвкоторуювложенаподформа = frmPublishDates
выдает ошибку "Введеное выражение содержит
недопустимую ссылку на свойство "Form/Report"

Я вставляю подчиненную форму в главную,
мастер предлагает выбрать таблицу frmPublishDates,
потом предлагает выбрать имя подчиненой формы -
я оставляю имя frmPublishDates -- т.е. этот контрол
с именем frmPublishDates является контейнером
для формы frmPublishDates?
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32346747
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
имяКОНТРОЛАвкоторуювложенаподформа.SourceObject = frmPublishDates
...
Рейтинг: 0 / 0
Requery после изменения текстового поля?
    #32346932
ARudenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин. Разобрался. Дело, наверное, вот в чем:
главная форма -- frmAccountsJournal
подчиненные -- frmPublishDates, frmAccounts

Когда, например, конструкция
Forms("frmAccountsJournal")![frmPublishDates].Form.RecordSource = strFullSQL
используется в модуле главной формы, то в это время все формы
существуют в памяти, все работает.
Чтобы обойти особенности свойства AfterUpdate, приходится
вставлять в событие Current подчиненной формы frmAccounts
процедуру Requery, содержащую эту конструкцию.
Но существует, ситуация (напаример, при открытие формы
frmAccountsJournal), когда формы frmAccountsJournal,
frmAccounts существует, а форма frmPublishDates -- нет.
Происходит ошибка... Все это лечится
On Error Resume Next
Forms("frmAccountsJournal")![frmPublishDates].Form.RecordSource = strFullSQL

Это не тот вариант, который мне нужен. Предпочтительнее
было бы в ручную генерить событие AfterUpdate текстового поля
главной формы из подчиненной. А на это событие, вешать обработчик.
Но как...
Большое спасибо вем, кто уделил мне внимание...
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Requery после изменения текстового поля?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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