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

Private Sub txtAccountID_AfterUpdate()
...
End Sub

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

Me.Parent.txtAccountID_AfterUpdate

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

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

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

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


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

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

Я вставляю подчиненную форму в главную,
мастер предлагает выбрать таблицу frmPublishDates,
потом предлагает выбрать имя подчиненой формы -
я оставляю имя frmPublishDates -- т.е. этот контрол
с именем frmPublishDates является контейнером
для формы frmPublishDates?
...
Рейтинг: 0 / 0
08.12.2003, 16:30
    #32346747
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Requery после изменения текстового поля?
имяКОНТРОЛАвкоторуювложенаподформа.SourceObject = frmPublishDates
...
Рейтинг: 0 / 0
08.12.2003, 18:18
    #32346932
ARudenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Requery после изменения текстового поля?
Блин. Разобрался. Дело, наверное, вот в чем:
главная форма -- 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
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Requery после изменения текстового поля? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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