Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
1 / 1 / 0
Регистрация: 01.03.2015
Сообщений: 12

Перемещение в форме по Enter

01.06.2016, 22:03. Показов 4152. Ответов 11

Студворк — интернет-сервис помощи студентам
Доброго вечера!

Выкладываю свою наработку. Не могу победить переходы по enter.

В форме "ф_Обучение_общее" в основной форме перемещение должно быть по полям, а в подчиненной по записям. Сейчас работает переход по записям. Удобно искать и вносить имена из списка сотрудников... но если нажать Enter после выбора преподавателя или контрагента в основной форме - идёт переход на след. запись... и незавершенный ввод данных срывается.

Буду благодарен, если кто нибудь подскажет направление, где посмотреть образец на проверку заполненности формы. сейчас сделал через "обязательное поле", но бесят постоянные ошибки. Хотелось бы чтобы ошибка была одна, при нажатии кнопки сохранить, о том что обязательные поля не заполнены, и если закрыть через "крестик" - введенные данные потеряются...

Visual Basic
1
2
3
4
5
'при загрузке подч формы- Переход на следующее поле
Application.SetOption "Move After Enter", 1 
 
'при выходе из формы- Переход на следующую запись
Application.SetOption "Move After Enter", 2
Также прошу по возможности рассмотреть мой "импорт". Приложил xls файлы. Не могу "допетрить" как убрать промежуточную таблицу?!
Кнопка импорта с окном выбора файла на форме меню, слева снизу
Вложения
Тип файла: zip toForum.zip (208.2 Кб, 28 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.06.2016, 22:03
Ответы с готовыми решениями:

Перемещение в Textbox при помощи ENTER
Cкажите, как сделать, чтобы перемещаться по текстовым полям при помощи Enter, а не при помощи Tab.

Переход по ENTER-у на форме
Как сделать, чтобы на форме можно было переходить по контролах по ENTER-у так же как и по TAB-у

Enter в диалоговой форме
Выскакивает диалоговоя форма В этой форме 2 поля . Поле№1 типа Text Поле№2 типа Date/Time В поле№1 я поставил галочку на...

11
1 / 1 / 0
Регистрация: 01.03.2015
Сообщений: 12
01.06.2016, 22:09  [ТС]
Касаемо Импорта excel в access: Важная особенность в моём случае - выгрузка из сторонней программы вместо пробелов ставит неразрывные.
Можно ли при импорте заменять их на простые пробелы?
Иначе срывается поиск по ФИО при вводе пробела между именем и фамилией.
0
1 / 1 / 0
Регистрация: 01.03.2015
Сообщений: 12
03.06.2016, 10:44  [ТС]
Ну, как говорится, сам спросил, сам ответил)

Переход по клавише "Enter" по полям в родительской форме и переход по записям в подчиненной реализовал так:
В родительской форме:
Visual Basic
1
2
3
4
'при загрузке формы
Private Sub Form_Load()
    Application.SetOption "Move After Enter", 1 'Переход на следующее поле/ячейку
End Sub
в подчиненной повесил на получение фокуса переход по записям, и на потерю фокуса возврат к переходу по полям.
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub FIO_GotFocus()
'    Application.SetOption "Move After Enter", 1 'Переход на следующее поле/ячейку
    Application.SetOption "Move After Enter", 2  'Переход на следующую запись/строку
End Sub
 
Private Sub FIO_LostFocus()
1    Application.SetOption "Move After Enter", 1 'Переход на следующее поле/ячейку
'    Application.SetOption "Move After Enter", 2  'Переход на следующую запись/строку
End Sub
PS: По вопросу импорта всё ещё прошу помощи знатоков!
По проверке заполнения записей по кнопке сохранить, вроде видел примеры, попробую сам допилить до примера.
0
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
03.06.2016, 11:16
Цитата Сообщение от petro_vk Посмотреть сообщение
как убрать промежуточную таблицу?!
Всмысле удалить таблицу из базы или сделать алгоритм, которому эта таблица не нужна будет для загрузки данных?
0
 Аватар для Nslava
458 / 75 / 13
Регистрация: 06.03.2015
Сообщений: 148
03.06.2016, 11:52
Цитата Сообщение от petro_vk Посмотреть сообщение
если нажать Enter после выбора преподавателя или контрагента в основной форме - идёт переход на след. запись... и незавершенный ввод данных срывается
Думаю, SetOption тут не годится. Надо использовать свойство формы "Цикл табуляции". Для основной и подчиненной формы он может быть разный.

Добавлено через 4 минуты
Цитата Сообщение от petro_vk Посмотреть сообщение
направление, где посмотреть образец на проверку заполненности формы
Если форма подвязана на таблицу, то "условия на значение" и "обязательное поле" прописывать в таблицу, а не форму, тогда и будет ругаться только во время сохранения.

Добавлено через 10 минут
Цитата Сообщение от petro_vk Посмотреть сообщение
как убрать промежуточную таблицу?
Вот так можно:
Visual Basic
1
CurrentDb.Execute "DROP TABLE TEMP_Персонал"
0
1 / 1 / 0
Регистрация: 01.03.2015
Сообщений: 12
03.06.2016, 13:22  [ТС]
Цитата Сообщение от amd48 Посмотреть сообщение
сделать алгоритм, которому эта таблица не нужна будет для загрузки данных
Не могу понять как в запросе на импорт присвоить к именам столбцов из Excel, имена полей из Access.

На данный момент при импорте у меня создается промежуточная таблица (имена столбцов Excel становящихся в Access полями автоматом именуются F1, F2, F3, F4, F5, F6)
Visual Basic
1
DoCmd.TransferSpreadsheet acImport, , "TEMP_pers", fileName, False, "A6:F3000"
из неё все импортируется в таблицу TEMP_персонал
Visual Basic
1
2
3
DoCmd.RunSQL "INSERT INTO TEMP_Персонал ( New_Таб№, New_ФИО, New_Должность, New_Подразделение, New_МВЗ, New_МВЗ№ ) " _
        & "SELECT F1, F2, F3, F4, F5, F6 " _
        & "FROM [TEMP_pers]"
и потом удаляется временная таблица TEMP_pers
Visual Basic
1
strSQL = "DROP TABLE TEMP_pers;"
Потом уже Таблица TEMP_Персонал используется для обнаружения изменения должности, получения новых сотрудников, должностей, подразделений и проч.

В этом проблем нет. При прямом импорте из Excelв таблицу TEMP_персонал - Access ругается что не может найти поле F1/F2/F3 и т.д.

Добавлено через 2 минуты
Цитата Сообщение от Nslava Посмотреть сообщение
"обязательное поле" прописывать в таблицу, а не форму, тогда и будет ругаться только во время сохранения.
Прописал в таблице на поле "Дата". Перейти в подчиненную форму не получается. Ругается - не заполнено поле "Дата"...
Пока ищу выход)
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
03.06.2016, 13:38
Лучший ответ Сообщение было отмечено petro_vk как решение

Решение

Так попробуйте, непосредственно из запроса в таблицу TEMP_Персонал
Visual Basic
1
2
3
DoCmd.RunSQL "INSERT INTO TEMP_Персонал ( New_Таб№, New_ФИО, New_Должность, New_Подразделение, New_МВЗ, New_МВЗ№ ) " _
        & "SELECT F1, F2, F3, F4, F5, F6 " _
        & "FROM [ИмяЛиста$A6:F3000] in '" & fileName & "'[Excel 12.0;hdr=No;]"
Если у Вас версия екселя 2003, то надо заменить в прямых скобках на Excel 8.0. И надо подставить фактическое имя листа Excel
1
 Аватар для Nslava
458 / 75 / 13
Регистрация: 06.03.2015
Сообщений: 148
03.06.2016, 13:50
Цитата Сообщение от petro_vk Посмотреть сообщение
Ругается - не заполнено поле "Дата"
Вообще теперь непонятно, должно быть заполнено поле Дата или нет. Если не должно, то "обязательное поле" надо поставить "нет"
0
1 / 1 / 0
Регистрация: 01.03.2015
Сообщений: 12
03.06.2016, 14:39  [ТС]
mobile, супер! спасибо! не мог сформулировать данный запрос! кстати с параметром "Excel 8.0" (на компьютере office 2013) прекрасно импортировал таблицу "*.xlsx".
А есть ли возможность при импорте заменять неразрывный пробел на простой? О_о Ума не приложу как такое можно сделать...

Nslava, должно, но идея такова, что дату можно было бы вносить, допустим в последнюю очередь во всей форме. Сейчас же необходимо вносить в первую очередь, иначе не получится внести остальное
0
 Аватар для Nslava
458 / 75 / 13
Регистрация: 06.03.2015
Сообщений: 148
03.06.2016, 14:49
Цитата Сообщение от petro_vk Посмотреть сообщение
можно было бы вносить, допустим в последнюю очередь во всей форме
То есть подразумевается нажатие какой-то кнопки по окончанию заполнения. Тогда на эту кнопку все проверки и повесить.
Типа:
Visual Basic
1
If Isnull(me![Дата]) Then .....
0
1 / 1 / 0
Регистрация: 01.03.2015
Сообщений: 12
03.06.2016, 15:24  [ТС]
нашел код замены
Visual Basic
1
Replace(cc.Value, Chr(160), " ")
, пока думаю как прицепить к запросу

Добавлено через 30 минут
Visual Basic
1
DoCmd.RunSQL "UPDATE TEMP_Персонал SET TEMP_Персонал.New_ФИО = Replace(TEMP_Персонал.New_ФИО, Chr(160), '' '')"
ужс. всё поломал. говорит ошибка синтаксиса

upd
починил
Visual Basic
1
DoCmd.RunSQL "UPDATE TEMP_ФИО SET TEMP_ФИО.New_ФИО = Replace([New_ФИО], " & Chr(160) & ", ' ')"
0
 Аватар для Nslava
458 / 75 / 13
Регистрация: 06.03.2015
Сообщений: 148
03.06.2016, 15:27
Цитата Сообщение от petro_vk Посмотреть сообщение
всё поломал. говорит ошибка синтаксиса
А если так?
*
Visual Basic
1
DoCmd.RunSQL "UPDATE TEMP_Персонал SET TEMP_Персонал.New_ФИО = Replace(TEMP_Персонал.New_ФИО, Chr(160), "" "")"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.06.2016, 15:27
Помогаю со студенческими работами здесь

Нажать программно Enter в форме
Добрый день. Нужно программно нажать Enter в форме поиска. При нажатии Enter ни чего не происходит. Почему? Имеется форма <form...

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

Отловить кнопку Enter на форме
Привет! при открытии формы на ней 2 кнопки, если случайно нажать Enter выполняется кнопка, которая была выделена на форме.. как...

Отловить нажатие клавиши Enter в форме
private void button1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { ...

C# как enter(om) активировать кнопку в форме?
c# как enter(om) активировать кнопку в форме??? хочу Enter нажимать и что бы оно активировала кнопку "ок" даже если мой курсор...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru