Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
vivat7
29 / 15 / 0
Регистрация: 31.05.2010
Сообщений: 100
1

Как программно перевести форму, открытую на просмотр записей в режим добавления записи

23.05.2011, 21:13. Просмотров 3231. Ответов 11
Метки нет (Все метки)

Здравствуйте. Как ПРОГРАММНО перевести форму, открытую на просмотр записей в режим добавления записи НЕ ЗАКРЫВАЯ формы. При открытии формы это делается легко:
Visual Basic
1
DoCmd.OpenForm "форЗатраты", , , , acFormAdd
Ключевым здесь является acFormAdd. А вот как это сделать при уже открытой форме и при отображенных всех записях.
Спросите зачем это надо? При просмотре формы новая запись добавляется в конец списка, что не удобно. Удобно, когда на экране присутствует лишь одна добавляемая запись.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 21:13
Ответы с готовыми решениями:

Как перевести форму в режим добавления записи?
есть кнопочка в панели навигации по таблице - 'добавить запись' надо чтобы...

Проблема программного добавления записей в подчинённую форму !!!
Такая трабла : Есть главная форма и подчинённая форма . Главная форма основана...

Как переключить фокус на другую открытую форму?
Открыто 2 формы. Надо из одной переключить фокус на другую. Пробовал разные...

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

Запрет добавления новой записи на форму до выполнения условия
имеется: Таблица "Название фазы" код названия - счетчик (ключ) название...

11
Maxess
95 / 74 / 3
Регистрация: 28.12.2009
Сообщений: 164
23.05.2011, 22:31 2
Цитата Сообщение от vivat7 Посмотреть сообщение
ПРОГРАММНО перевести форму, открытую на просмотр записей в режим добавления записи
Me.Form.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
1
vivat7
29 / 15 / 0
Регистрация: 31.05.2010
Сообщений: 100
23.05.2011, 22:40  [ТС] 3
Цитата Сообщение от Maxess Посмотреть сообщение
Me.Form.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
За участие, конечно, спасибо, но
PureBasic
1
Me.Form.AllowAdditions = True
лишь разрешает добавление записей (ну, если вдруг было запрещено по умолчанию)
а
Bash
1
DoCmd.GoToRecord , , acNewRec
добавляет запись В КОНЕЦ СПИСКА, т.к. предыдущая инструкция не перевела форму в режим добавления записи, т.е. форма по прежнему в режиме отображения всех записей.
Итак, проблема пока не решена.
Ещё раз говорю: в режиме добавления записи в форме отображается только одна запись - добавляемая.
Этого можно добиться, если в конструкторе формы на вкладке Данные поставить опцию "ввод данных" на "да" (по умолчанию там "нет")
0
Maxess
95 / 74 / 3
Регистрация: 28.12.2009
Сообщений: 164
23.05.2011, 23:21 4
Цитата Сообщение от vivat7 Посмотреть сообщение
форму, открытую на просмотр записей
я понял так, что записи в форме нельзя редактировать, поэтому я написал:Me.Form.AllowAdditions = True, что програмно разрешает добавление записей

а DoCmd.GoToRecord , , acNewRec добавляет новую запись и делает её текущей.

но видимо я вас не понял.

Вы хотите чтобы при открытии формы со множественными данными, форма была в режиме редактирования и вы видели только одну строку с новой записью?
1
vivat7
29 / 15 / 0
Регистрация: 31.05.2010
Сообщений: 100
23.05.2011, 23:49  [ТС] 5
Вы хотите чтобы при открытии формы со множественными данными, форма была в режиме редактирования и вы видели только одну строку с новой записью?
Нет я этого не хочу. Это легко делается при открытии формы, как я и указывал в первом посте.
Форма открыта для просмотра и редактирования всех записей. Надо перевести её в режим ввода данных С ОТОБРАЖЕНИЕМ ТОЛЬКО ОДНОЙ ЭТОЙ вводимой строки.
Пока задачу решил совсем ЛЕВЫМ СПОСОБОМ:
Visual Basic
1
2
3
DoCmd.GoToRecord , , acNewRec 'добавление новой записи
DoCmd.GoToControl "КодРек"
Screen.ActiveControl.Dropdown 'раскрыть список
При выполнении двух последних строчек Access чудесным способом загоняет прокруткой все строки наверх и отображает лишь последнюю (естественно, если массив строк занимает изначально весь экран).
Потом на событие обновления поля "КодРек" вешаем рефреш формы и запись оказывается отсортированной вверх (так задана сортировка). У пользователя создается иллюзия, что запись добавлялась не в конец списка, а в начало.
НО всё таки, хотелось бы решить поставленную выше задачу цивилизованно.
0
Maxess
95 / 74 / 3
Регистрация: 28.12.2009
Сообщений: 164
24.05.2011, 00:27 6
мне кажется что при вашем способе если новая запись видна на форме, то ваш код не сработает
0
vivat7
29 / 15 / 0
Регистрация: 31.05.2010
Сообщений: 100
24.05.2011, 00:38  [ТС] 7
Цитата Сообщение от Maxess Посмотреть сообщение
мне кажется что при вашем способе если новая запись видна на форме, то ваш код не сработает
Мне гадать не приходится. Этот левый способ практически проверен и работает.
А Access2003 похоже опять подкачал. Открыть форму в режиме ввода данных можно только при открытии формы. Уже открытую форму не перевести в этот режим. Жаль.
Забыл сказать ввод происходит в подчиненную форму. Может в этом и есть нюанс, в котором вы сомневаетесь.
0
Maxess
95 / 74 / 3
Регистрация: 28.12.2009
Сообщений: 164
24.05.2011, 00:44 8
почему нельзя, на кнопку событие - Me.DataEntry = True

Добавлено через 1 минуту
вы не могли бы выложить файл с вашим левым способом?
1
vivat7
29 / 15 / 0
Регистрация: 31.05.2010
Сообщений: 100
24.05.2011, 00:52  [ТС] 9
почему нельзя, на кнопку событие - Me.DataEntry = True
Спасибо это именно то, что нужно.
А процедура моя простая:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub кнПлюс_Click()
If IsNull(Me.поКодС.Value) Then
MsgBox "Сотрудник не выбран!"
Exit Sub
End If
Forms!форЗатраты.AllowAdditions = True 'ВАЖНО!! разрешаем добавление в основную форму
Forms!форЗатраты!пфЗатраты.Form.AllowAdditions = True 'ВАЖНО!! разрешаем добавление в подчиненную форму
DoCmd.GoToControl "пфЗатраты"
DoCmd.GoToRecord , , acNewRec 'добавление новой записи
DoCmd.GoToControl "КодРек"
Screen.ActiveControl.Dropdown 'раскрыть список
End Sub
 
Private Sub КодРек_AfterUpdate()
Me.ЦенаИстория.Value = Me.КодРек.Column(4)
DoCmd.RunCommand acCmdSaveRecord
 
Forms!форЗатраты.Refresh
Forms!форЗатраты.AllowAdditions = False 'запрещаем добавление в основную форму
Forms!форЗатраты!пфЗатраты.Form.AllowAdditions = False 'запрещаем добавление в подчиненную форму
 
End Sub
Но теперь, с учетом вашей подсказки может её и перепишу, хотя и так уже устраивает.
0
Maxess
95 / 74 / 3
Регистрация: 28.12.2009
Сообщений: 164
24.05.2011, 01:07 10
так вы тут говорили о главной форме с подчиненной?
2
vivat7
29 / 15 / 0
Регистрация: 31.05.2010
Сообщений: 100
24.05.2011, 01:50  [ТС] 11
Цитата Сообщение от Maxess Посмотреть сообщение
так вы тут говорили о главной форме с подчиненной?
Именно. Элемент кнПлюс находится на главной форме. Элемент КодРек (одно из полей данных) - на подчиненной форме. Ещё раз спасибо за помощь.
0
Agapov_stas
3339 / 1742 / 82
Регистрация: 05.08.2010
Сообщений: 4,449
Завершенные тесты: 1
24.05.2011, 08:37 12
Цитата Сообщение от Maxess Посмотреть сообщение
так вы тут говорили о главной форме с подчиненной?
+1
0
24.05.2011, 08:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2011, 08:37

После добавления новых элементов в форму не функционирует отбор записей через поле со списком
Создал базу в access. Работает корректно. Однако при добавлении в основную...

Как программно перевести монитор в спящий режим?
Подскажите, как программно перевести монитор в спящий режим?

Как сделать форму для добавления записей в базу
Народ расскажите как сделать форму для добавления записей в базу. У меня есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru