|
|
|
| N=номер записи которую покидать нельзя. Но принажатии кнопки перехода, N будет или +1 или -1
это в главной
If Me.CurrentRecord <> N Then DoCmd.GoToRecord , , acGoTo, N
а здесь ошибка
'If Forms![главная]![подчиненная].CurrentRecord <> N Then DoCmd.GoToRecord , , acGoTo, N | |
|
| |
|
|
|
| Forms![главная]![подчиненная].FORM.CurrentRecord | |
|
| |
|
17 Кб. |
|
| ошибка 438 | |
|
| |
|
|
|
| У Вас не правильное обращение к подчиненной форме - вчитайтесь сообщение Osmor и сделайте так как там написано | |
|
| |
|
17 Кб. |
|
| ошибся я )) но тут новая ошибка
Ошибка 2455 | |
|
| |
|
17 Кб. |
|
| так понял что, ошибка из-за того что перехожу я в запись главной формы, а не ПОДформы.
попытался исправить
на
If Forms![Форма1]![подФорма1].Form.CurrentRecord <> 2 Then Forms![Форма1]![подФорма1].DoCmd.GoToRecord , , acGoTo, 2
ошибка 438 | |
|
| |
|
|
|
| вот раскопал тут в недрах форума......
Вопрос: Перемещение по записям в форме / подчиненной форме
Совет:
Function GoToRec(frm As Form, rs As DAO.Recordset, Optional Record As Long, Optional Offset As Long)
On Error Resume Next ' при отладке это убрать
If IsMissing(Record) Then Record = acNext
If IsMissing(Offset) Then Offset = 0
Select Case Record
Case acFirst
rs.MoveFirst
Case acGoTo
rs.Move Offset
Case acLast
rs.MoveLast
Case acNewRec
' не знаю
Case acNext 'Default
rs.MoveNext
Case acPrevious
rs.MovePrevious
End Select
frm.Bookmark = rs.Bookmark
End Function | |
|
| |
|
|
|
| спасибо огромное, а то я искал да сыщик из меня плохой. | |
|
| |
|
|
|
| ерунда у меня выходит, а если вернуться к моему примеру (как перейти на запись подчененной формы).
что ставить после Then?
пробовал:
1.Then Forms![Форма1]![подФорма1].FORM.DoCmd.GoToRecord , , acGoTo, 2 ' ошибка 2465
2.Then Forms![Форма1]![подФорма1].DoCmd.GoToRecord , , acGoTo, 2 ' ошибка 438
3.Then Forms![Форма1]![подФорма1].FORM.GoToRecord , , acGoTo, 2 'ошибка 2465
4.Then Forms![Форма1]![подФорма1].GoToRecord , , acGoTo, 2 'ошибка 438 | |
|
| |
|
|
|
| docmd это объект application
то что вы пишите... ну мягко говоря ерунда (не обижайтесь)
давайте по порядку
1. на какое событие код должен выполняться
2. в какой форме будет происходить событие? в основной или в подчиненной | |
|
| |
|
|
|
| предполагал что ерунда)
должно быть так:
при попытке перейти на запись не равную N (скажем 2 ) акцесс должен вернуть юзера на заданную запись.
в примере это реализовано только для главной формы (как раз для неё этого и не нужно).
как добиться этого же при нахождении курсора в подчиненной форме ума не приложу.
Событие соответственно должно происходить в подчиненной, с таким же эффектом как и на главной форме, а именно:
If Me.CurrentRecord <> N Then DoCmd.GoToRecord , , acGoTo, N
этот код нужно как то модернизировать для подчиненной формы.
Вы мне подсказывали:
If Forms![главная]![подчиненная].FORM.CurrentRecord <> N Then DoCmd.GoToRecord , , acGoTo, N
но при этом находясь в подчиненной форме, переход по записям возможен и возврат на заданный номер записи (подчиненной формы) не происходит. | |
|
| |
|
|
|
| If Me.CurrentRecord <> 2 Then DoCmd.GoToRecord , , acGoTo, 2
этот код нужно поставить на событие Текущая запись в ПОДЧИНЕННОЙ ФОРМЕ | |
|
| |
|
|
|
|
| сейчас обнаружил свою критическую ошибку, хохотал долго.
Я все везде прописал и тупо не понимал почему??? а сейчас смотрю свойства форм "Текущая запись", а там пусто (наверно при обновлении подФормы я упустил поставить [Процедура обработки событий) | |
|
| |
|
|
|
| АлексейAlex, покажите весь код, как отключаете колёсико мыши в главной форме. Плиз | |
|
| |
|
|
|
| N=номер записи которую покидать нельзя. Но можно задать условие что при нажатии кнопки перехода (например), N будет или +1 или -1
это код поместить во все формы где нужно отключить колесика (в свойства-текущая запись-[Процедура обработки событий)-...)
If Me.CurrentRecord <> N Then DoCmd.GoToRecord , , acGoTo, N
зы. только обратите внимание что N-число. | |
|
| |
|
|
|
| Напомните как определить, что нажата кнопка перехода (не созданная, а встроенная) | |
|
| |
|
17 Кб. |
|
| см. работающий пример
1. любая кнопка это набор команд, которые делают свою грязную работу после того, как вы нажали на ней.
2. одной из команд можно задать цель, сохранить что-то, где-то (таким образом она оставила след, но это в долговременной шкале вечности)
зы. а вообще-то вот
if вашакнопка=true THEN делаем что можем | |
|
| |
|
|
|
| В примере не работает кнопка перехода
Как сделать так, чтобы при использывании "колёсика" переход по записям - отключался, а при использывании встроенных в форму кнопок перехода по записям - переход выполнялся бы нормально.
Всё это в простой форме | |
|
| |
|
|
|
| отредактировать код кнопок.
создайте например, ячейку скрытую на форме и присваивайте ей значение такой N (номер записи) в которую нужно перейти при нажатии кнопки.
а в событии Формы "текущая запись", создайте переменную которая берет значение ячейки, для того чтобы использовать в основном коде для переменной N:
If Me.CurrentRecord <> n Then DoCmd.GoToRecord , , acGoTo, n | |
|
| |
|
|
|
| Ничего не получается
Если можно покажите работающий пример | |
|
| |
|
18 Кб. |
|
| пример с кнопкой перехода на одну запись вперед.
зы. в примере переход реализован только в главной форме | |
|
| |
|
|
|
| Ок, спасибо
А можно ли как то сделать так, чтобы переход по записям осуществлялся НЕ при помощи созданных кнопок перехода, а используя встроенные в форму кнопки перехода по записям (те которые в нижнем левом углу формы) | |
|
| |
|
|
|
| создай их копию а их самих выключи в свойствах (кнопки перехода кажись).
можно это событие повесить и при нажатии на форму (и при .... см. события объектов) | |
|
| |
|
|
|
| Встроеные будут выполнять переход по записям => будет происходить то событие, которое вы обрабатываете Form_current => это вопрос логики | |
|
| |
|
|
|
| П.Полиграфович, реально ли используя встроенные кнопки перехода отключить "колесо" применяя этот подход
If Me.CurrentRecord <> n Then DoCmd.GoToRecord , , acGoTo, n
|
| |
|
| |
|
|
|
| таки этот интересный метод НЕ отключает колесо
колесо работает. просто мы синтетическим образом типа этого не замечаем | |
|
| |
|
|
|
|
| По ходу дела вижу колесо не только мне одному мешало. Да и с бомжами тема чего-то действительно остро назревает. Проблема, блин. Раньше такого не было.
Но колесо сбивает только когда способствует добавлению записи. А в этом недуге Лукас оной строчкой помог. В остальном оно даже удобно.
А по теме бомжей, так там в свойствах условие на значение поставить и сообщение при невыполнении условия. Кажется достаточно. | |
|
| |
|
|
|
| напомни как лукас лечил колесико?
бомжи:
да наверно условие достаточно.
зы. ну почему время так коротко?! | |
|
| |
|
|
|
| Но есть же решения (в виде отдельных dll) с отловом и блокировкой события прокрутки колеса. | |
|
| |
|
|
|
| я не знаю как их реализовать, куда поместить и вообще что такое dll ? я его себе туманно представляю . | |
|
| |
|
|
|
| Ну вы заехали. Эдак новый access изобретёте в борьбе с колёсиком. Не важно как реализовано, главное что бы работало. | |
|
| |
|
|
|
| Просьбу напомнить как лукас колесико лечил - упустил сразу.
Вот так: Только с этим делом не до конца все ясно. На одном компе сразу сработало, а на другом почему-то нет.
Private Sub Form_AfterInsert()
Me.AllowAdditions = False
End Sub
Поэтому код Me.AllowAdditions = False в свойство формы (Событие/Колесико) мыши и дело с концом. Помогает блин везеде. (мне надо было в подчиненной форме только одну строку что бы заполняли и на новую не переходили)
PS: Вот есби бы еще по кнопке enter и по табу на новую строку не могли перейти, но при этом добавлять записи было бы можно, то ваще класс. Но это уже из области как сначала подчиненную форму заполнить, а потом уже основную. Сначала выстрелить, а потом цель под летящую пулю загонять. | |
|
| |
|
|
|
| тогда чекнем и на боковую. | |
|
| |