Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: способ отключить колесико в главной форме я нашел, но в подчиненной не выходит
 
 автор: АлексейAlex   (28.05.2009 в 08:17)   личное сообщение
 
 

N=номер записи которую покидать нельзя. Но принажатии кнопки перехода, N будет или +1 или -1

это в главной
If Me.CurrentRecord <> N Then DoCmd.GoToRecord , , acGoTo, N

а здесь ошибка
'If Forms![главная]![подчиненная].CurrentRecord <> N Then DoCmd.GoToRecord , , acGoTo, N

  Ответить  
 
 автор: osmor   (28.05.2009 в 08:44)   личное сообщение
 
 

Forms![главная]![подчиненная].FORM.CurrentRecord

  Ответить  
 
 автор: АлексейAlex   (28.05.2009 в 10:24)   личное сообщение
17 Кб.
 
 

ошибка 438

  Ответить  
 
 автор: snipe   (28.05.2009 в 10:45)   личное сообщение
 
 

У Вас не правильное обращение к подчиненной форме - вчитайтесь сообщение Osmor и сделайте так как там написано

  Ответить  
 
 автор: АлексейAlex   (28.05.2009 в 11:25)   личное сообщение
17 Кб.
 
 

ошибся я )) но тут новая ошибка
Ошибка 2455

  Ответить  
 
 автор: АлексейAlex   (28.05.2009 в 11:43)   личное сообщение
17 Кб.
 
 

так понял что, ошибка из-за того что перехожу я в запись главной формы, а не ПОДформы.
попытался исправить

на

If Forms![Форма1]![подФорма1].Form.CurrentRecord <> 2 Then Forms![Форма1]![подФорма1].DoCmd.GoToRecord , , acGoTo, 2

ошибка 438

  Ответить  
 
 автор: snipe   (28.05.2009 в 11:47)   личное сообщение
 
 

вот раскопал тут в недрах форума......


Вопрос: Перемещение по записям в форме / подчиненной форме

Совет:
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

  Ответить  
 
 автор: АлексейAlex   (28.05.2009 в 11:49)   личное сообщение
 
 

спасибо огромное, а то я искал да сыщик из меня плохой.

  Ответить  
 
 автор: АлексейAlex   (28.05.2009 в 12:19)   личное сообщение
 
 

ерунда у меня выходит, а если вернуться к моему примеру (как перейти на запись подчененной формы).

что ставить после 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

  Ответить  
 
 автор: osmor   (28.05.2009 в 12:38)   личное сообщение
 
 

docmd это объект application
то что вы пишите... ну мягко говоря ерунда (не обижайтесь)
давайте по порядку
1. на какое событие код должен выполняться
2. в какой форме будет происходить событие? в основной или в подчиненной

  Ответить  
 
 автор: АлексейAlex   (28.05.2009 в 13:58)   личное сообщение
 
 

предполагал что ерунда)

должно быть так:
при попытке перейти на запись не равную N (скажем 2 ) акцесс должен вернуть юзера на заданную запись.
в примере это реализовано только для главной формы (как раз для неё этого и не нужно).
как добиться этого же при нахождении курсора в подчиненной форме ума не приложу.

Событие соответственно должно происходить в подчиненной, с таким же эффектом как и на главной форме, а именно:

If Me.CurrentRecord <> N Then DoCmd.GoToRecord , , acGoTo, N

этот код нужно как то модернизировать для подчиненной формы.

Вы мне подсказывали:
If Forms![главная]![подчиненная].FORM.CurrentRecord <> N Then DoCmd.GoToRecord , , acGoTo, N
но при этом находясь в подчиненной форме, переход по записям возможен и возврат на заданный номер записи (подчиненной формы) не происходит.

  Ответить  
 
 автор: osmor   (28.05.2009 в 14:17)   личное сообщение
 
 

If Me.CurrentRecord <> 2 Then DoCmd.GoToRecord , , acGoTo, 2
этот код нужно поставить на событие Текущая запись в ПОДЧИНЕННОЙ ФОРМЕ

  Ответить  
 
 автор: АлексейAlex   (28.05.2009 в 14:24)   личное сообщение
 
 

вроде все испробывал а подобную малость пропустил, спасибо большое)))

теперь колесико выключается и без заморочек

  Ответить  
 
 автор: АлексейAlex   (28.05.2009 в 14:37)   личное сообщение
 
 

сейчас обнаружил свою критическую ошибку, хохотал долго.

Я все везде прописал и тупо не понимал почему??? а сейчас смотрю свойства форм "Текущая запись", а там пусто (наверно при обновлении подФормы я упустил поставить [Процедура обработки событий)

  Ответить  
 
 автор: Гамлет   (28.05.2009 в 20:25)   личное сообщение
 
 

АлексейAlex, покажите весь код, как отключаете колёсико мыши в главной форме. Плиз

  Ответить  
 
 автор: АлексейAlex   (28.05.2009 в 20:40)   личное сообщение
 
 

N=номер записи которую покидать нельзя. Но можно задать условие что при нажатии кнопки перехода (например), N будет или +1 или -1

это код поместить во все формы где нужно отключить колесика (в свойства-текущая запись-[Процедура обработки событий)-...)
If Me.CurrentRecord <> N Then DoCmd.GoToRecord , , acGoTo, N

зы. только обратите внимание что N-число.

  Ответить  
 
 автор: Гамлет   (28.05.2009 в 21:42)   личное сообщение
 
 

Напомните как определить, что нажата кнопка перехода (не созданная, а встроенная)

  Ответить  
 
 автор: АлексейAlex   (28.05.2009 в 22:34)   личное сообщение
17 Кб.
 
 

см. работающий пример

1. любая кнопка это набор команд, которые делают свою грязную работу после того, как вы нажали на ней.
2. одной из команд можно задать цель, сохранить что-то, где-то (таким образом она оставила след, но это в долговременной шкале вечности)

зы. а вообще-то вот

if вашакнопка=true THEN делаем что можем

  Ответить  
 
 автор: Гамлет   (29.05.2009 в 00:23)   личное сообщение
 
 

В примере не работает кнопка перехода
Как сделать так, чтобы при использывании "колёсика" переход по записям - отключался, а при использывании встроенных в форму кнопок перехода по записям - переход выполнялся бы нормально.
Всё это в простой форме

  Ответить  
 
 автор: АлексейAlex   (29.05.2009 в 08:06)   личное сообщение
 
 

отредактировать код кнопок.

создайте например, ячейку скрытую на форме и присваивайте ей значение такой N (номер записи) в которую нужно перейти при нажатии кнопки.

а в событии Формы "текущая запись", создайте переменную которая берет значение ячейки, для того чтобы использовать в основном коде для переменной N:

If Me.CurrentRecord <> n Then DoCmd.GoToRecord , , acGoTo, n

  Ответить  
 
 автор: Гамлет   (29.05.2009 в 09:51)   личное сообщение
 
 

Ничего не получается
Если можно покажите работающий пример

  Ответить  
 
 автор: АлексейAlex   (29.05.2009 в 10:17)   личное сообщение
18 Кб.
 
 

пример с кнопкой перехода на одну запись вперед.

зы. в примере переход реализован только в главной форме

  Ответить  
 
 автор: Гамлет   (29.05.2009 в 10:45)   личное сообщение
 
 

Ок, спасибо
А можно ли как то сделать так, чтобы переход по записям осуществлялся НЕ при помощи созданных кнопок перехода, а используя встроенные в форму кнопки перехода по записям (те которые в нижнем левом углу формы)

  Ответить  
 
 автор: АлексейAlex   (29.05.2009 в 10:49)   личное сообщение
 
 

создай их копию а их самих выключи в свойствах (кнопки перехода кажись).

можно это событие повесить и при нажатии на форму (и при .... см. события объектов)

  Ответить  
 
 автор: П.Полиграфович   (29.05.2009 в 15:07)   личное сообщение
 
 

Встроеные будут выполнять переход по записям => будет происходить то событие, которое вы обрабатываете Form_current => это вопрос логики

  Ответить  
 
 автор: Гамлет   (29.05.2009 в 22:13)   личное сообщение
 
 

П.Полиграфович, реально ли используя встроенные кнопки перехода отключить "колесо" применяя этот подход
If Me.CurrentRecord <> n Then DoCmd.GoToRecord , , acGoTo, n

  Ответить  
 
 автор: KrukVN   (29.05.2009 в 23:29)   личное сообщение
 
 

таки этот интересный метод НЕ отключает колесо
колесо работает. просто мы синтетическим образом типа этого не замечаем

  Ответить  
 
 автор: АлексейAlex   (29.05.2009 в 23:37)   личное сообщение
 
 

Таки угу

народная мудрость на выбор:
"Зачем бороться с тем, что можно не замечать?" - если лень бороться
"Стоит ли не замечать то, с чем можно бороться?" - если бороться в кайф

  Ответить  
 
 автор: Goblin   (30.05.2009 в 09:57)   личное сообщение
 
 

По ходу дела вижу колесо не только мне одному мешало. Да и с бомжами тема чего-то действительно остро назревает. Проблема, блин. Раньше такого не было.
Но колесо сбивает только когда способствует добавлению записи. А в этом недуге Лукас оной строчкой помог. В остальном оно даже удобно.
А по теме бомжей, так там в свойствах условие на значение поставить и сообщение при невыполнении условия. Кажется достаточно.

  Ответить  
 
 автор: АлексейAlex   (30.05.2009 в 21:26)   личное сообщение
 
 

напомни как лукас лечил колесико?

бомжи:
да наверно условие достаточно.

зы. ну почему время так коротко?!

  Ответить  
 
 автор: KrukVN   (30.05.2009 в 13:42)   личное сообщение
 
 

Но есть же решения (в виде отдельных dll) с отловом и блокировкой события прокрутки колеса.

  Ответить  
 
 автор: АлексейAlex   (30.05.2009 в 15:47)   личное сообщение
 
 

я не знаю как их реализовать, куда поместить и вообще что такое dll ? я его себе туманно представляю .

  Ответить  
 
 автор: Goblin   (30.05.2009 в 17:54)   личное сообщение
 
 

Ну вы заехали. Эдак новый access изобретёте в борьбе с колёсиком. Не важно как реализовано, главное что бы работало.

  Ответить  
 
 автор: Goblin   (30.05.2009 в 22:12)   личное сообщение
 
 

Просьбу напомнить как лукас колесико лечил - упустил сразу.
Вот так: Только с этим делом не до конца все ясно. На одном компе сразу сработало, а на другом почему-то нет.
Private Sub Form_AfterInsert()
Me.AllowAdditions = False
End Sub
Поэтому код Me.AllowAdditions = False в свойство формы (Событие/Колесико) мыши и дело с концом. Помогает блин везеде. (мне надо было в подчиненной форме только одну строку что бы заполняли и на новую не переходили)

PS: Вот есби бы еще по кнопке enter и по табу на новую строку не могли перейти, но при этом добавлять записи было бы можно, то ваще класс. Но это уже из области как сначала подчиненную форму заполнить, а потом уже основную. Сначала выстрелить, а потом цель под летящую пулю загонять.

  Ответить  
 
 автор: АлексейAlex   (30.05.2009 в 23:41)   личное сообщение
 
 

тогда чекнем и на боковую.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList