Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/121: Рейтинг темы: голосов - 121, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 02.06.2015
Сообщений: 8

Код для кнопки "сохранить запись" на VBA

17.06.2015, 00:55. Показов 26477. Ответов 94
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Есть форма ввода. Нужно сделать на ней кнопку "сохранить".
Форма по-умолчанию открывается на "новой записи".
Одна кнопка закрывает форму и отменяет запись.
А другая сохраняет.

Функции сделаны макросами и, в принципе, работают, НО возникла необходимость запустить кнопкой "сохранить" еще код VBA на запуск запросов на изменение без сообщений и предупреждений, так что поменял "макрокоманды" на "процедуры обработки" и теперь нужно реализовать стандартную макрокоманду "СохранитьЗапись" в коде VBA.

Задача типовая, НО решения из интернета не привели к результату.
Не мог бы кто-нибудь предложить вариант кода?
Сейчас кнопка работает отлично и после создания записи еще и переход на новую запись происходит сразу (т.е. форма очищается)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.06.2015, 00:55
Ответы с готовыми решениями:

VBA для вывода сообщения об ошибке для кнопки добавить запись на форме
Здравстуйте всем!!! Прошу помощи в следующем вопросе: дана таблица, содержащая поля - код, поле1, поле2 (поле1, поле2 - обязательные,...

Код VBA для кнопки на листе Excel
Всем добрый день вечер ночь утро! Подскажите пожалуйста, может кто-нибудь знает чего прописать в коде VBA элемента "Кнопка"...

Пожалуйста, дайте код vba для кнопки, для расчета нечетных чисел в заданном интервале
Ввод должен осуществляться с клавиатуры( ввод интервала) Заранее спасибо!

94
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
17.09.2017, 00:57
Студворк — интернет-сервис помощи студентам
п.с. В файле только одна форма.
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,632
17.09.2017, 01:11
Цитата Сообщение от sana555 Посмотреть сообщение
Можно на ОбязательноеПоле_AfterUpdate, повесить проверку на заполненность и если заполнено, то вырубать таймер и приводить цвета в норму.
Это иначе делается, и довольно сложно.
Можно перекрасить (на лету) обязательные к заполнению, но не заполненные поля. Эти выкрутасы для уж совсем не внимательных.
Игра свечек стоит?

А можно использовать аналог функции (выще) и просто выводить индикатор о том что не всё заполнено.
А при сохранении - опять - и если что не даст сохранить ... как подсказывал mobile.

Добавлено через 4 минуты
И вообще тут можно "поиграться" - если не лень, и так, и эдак.
Я обычно просто использую способ описанный выше.
0
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
17.09.2017, 01:14
Цитата Сообщение от Eugene-LS Посмотреть сообщение
индикатор о том что не всё заполнено
Судя по всему под индикатором вы имеете ввиду сообщение о не заполненности полей. С этим у меня проблем нет и сообщения выводятся подобным кодом. Здесь речь больше о вспомогательном визуальном привлечении внимания. Сообщение вышло, курсор перешел в не заполненное поле и к примеру контур поля начал мигать.
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
17.09.2017, 01:21
Цитата Сообщение от sana555 Посмотреть сообщение
попробуйте не заполнить поле Статус, нажмите кнопку закрыть и вернитесь заполнить это поле, потом снова закройте и после этого должна всплыть эта ошибка.
Кнопки Закрыть нет. При переходе на другую запись действительно выходит ошибка. Но только потому, что нет обработки события BeforeUpdate формы. Добавить его, хотя бы в самом простом виде и ошибки точно не будет
Visual Basic
1
2
3
4
5
6
Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Me.Статус & "" = "" Then
        MsgBox "Не заполнены поля"
        Cancel = True
    End If
End Sub
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,632
17.09.2017, 01:25
Цитата Сообщение от sana555 Посмотреть сообщение
Сообщение вышло, курсор перешел в не заполненное поле и к примеру контур поля начал мигать.
Ясно!
Ну это усложнения и работа с таймер формы - я приблизительно такое видел тут.

А зачем такие сложности - просто выделите лейблы обязательных полей другим цветом!
И пользователь вас поймёт ...
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
17.09.2017, 01:32
Цитата Сообщение от mobile Посмотреть сообщение
При переходе на другую запись действительно выходит ошибка.
ошибка update или cancelupdate без addnew или edit или Индекс или ключ не может содержать пустое значение (Null)?
Цитата Сообщение от mobile Посмотреть сообщение
Добавить его, хотя бы в самом простом виде и ошибки точно не будет
Но почему тогда, точно такая же база переведенная в .mdb не вызывает данной ошибки без события BeforeUpdate?
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,632
17.09.2017, 01:59
Цитата Сообщение от sana555 Посмотреть сообщение
ошибка update или cancelupdate без addnew или edit или Индекс или ключ не может содержать пустое значение (Null)?
Ну так вам машина ТОЧНОЕ ОПИСАНИЕ ОШИБКИ и пишет (что бывает не всегда) - Так в чём вопрос?

Добавлено через 5 минут
Цитата Сообщение от sana555 Посмотреть сообщение
Но почему тогда, точно такая же база переведенная в .mdb не вызывает данной ошибки без события BeforeUpdate?
.accdb и .mdb - ничем (в данном разрезе) не отличаются.

Добавлено через 1 минуту
sana555, на схему данных гляньте пожалуйста - ничего не смущает?

Добавлено через 4 минуты
sana555, попробуйте источником записи формы "Новая Квартира" сделать сохранённый запрос, а не динамический:
T-SQL
1
SELECT Недвижимость.КодНедвижимости, Недвижимость.Операция, Недвижимость.ТипНедвижимости, Недвижимость.ВидОбъекта, Недвижимость.[Кол-воКомнат], Недвижимость.Город, Недвижимость.Район, Недвижимость.Улица, Недвижимость.[№Дома], Недвижимость.Корпус, Недвижимость.[№Квартиры], Недвижимость.Этаж, Недвижимость.ЭтажностьДома, Недвижимость.ПлощадьОбщая, Недвижимость.ПлощадьЖилая, Недвижимость.ПлощадьКухни, Недвижимость.Состояние, Недвижимость.Серия, Недвижимость.Планировка, Недвижимость.Санузел, Недвижимость.[Балкон/лоджия], Недвижимость.ВысотаПотолков, Недвижимость.ГодПостройки, Недвижимость.Описание, Недвижимость.Цена, Недвижимость.Комиссия, Недвижимость.Примечание, Недвижимость.ИсточникИнформации, Договора.КодДоговора, Договора.[№Договора], Договора.ДатаДоговора, Договора.КодНедвижимости, Договора.[КодСотрудника], Договора.КодКлиента, Договора.СуммаЗадатка, Договора.ДатаЗадатка, Договора.Покупатель, Договора.ДатаСделки, Договора.Статус, Договора.ДатаОкончанияДоговора, Недвижимость.Фото, Недвижимость.МатериалСтен FROM Недвижимость INNER JOIN Договора ON Недвижимость.[КодНедвижимости] = Договора.[КодНедвижимости] ORDER BY Договора.[№Договора];
И вы всё поймёте и найдёте.

Добавлено через 10 минут
BTW: Использование источником данных форм сохранённых запросов а не динамических является рекомендвцией разработчика (MS) - простите не помню статью.
Почему:
В динамическом варианте создаётся временный (мусорный) запрос по любому (насколько я разумею всю эту систему).
1
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
17.09.2017, 02:02
sana555, посмотрите вариант с миганием границ. У поля на котором фокус мигания нет. Также сделана обработка на событии BeforeUpdate
Вложения
Тип файла: rar sana555.rar (64.5 Кб, 21 просмотров)
1
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
17.09.2017, 02:05
Цитата Сообщение от Eugene-LS Посмотреть сообщение
.accdb и .mdb - ничем (в данном разрезе) не отличаются.
Отличаются. DAO иной вариант. Более того, отдельной библиотеки DAO нет, все функции находятся в Microsoft Office XX.0 Access database engine Object Library.
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,632
17.09.2017, 02:17
Цитата Сообщение от mobile Посмотреть сообщение
посмотрите вариант с миганием границ.
Щас гляну - интересно!
Но там IMHO со связкой данных трабла ещё у ТС

Добавлено через 2 минуты
Цитата Сообщение от mobile Посмотреть сообщение
Отличаются. DAO иной вариант. Более того, отдельной библиотеки DAO нет, все функции находятся в Microsoft Office XX.0 Access database engine Object Library.
Да ладно!

А типа я не знал ....
Мишь! - просветитель, ты наш!
Спасибо!

Добавлено через 2 минуты
Цитата Сообщение от mobile Посмотреть сообщение
Более того, отдельной библиотеки DAO нет, все функции находятся в Microsoft Office XX.0 Access database engine Object Library.
Библиотечка есть - проверено, и подхватывается легко при первом же упоминании.
И... позднего связывания пока никто не отменял

Добавлено через 5 минут
Цитата Сообщение от mobile Посмотреть сообщение
посмотрите вариант с миганием границ.
Лихо!
Мне нравиться - ща код гляну ... (уверен что то новенькое) ... Аж слюну сглотнул....
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
17.09.2017, 02:19
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Библиотечка есть - проверено, и подхватывается легко при первом же упоминании.
И немедленно сообщается, что конфликт имен с Microsoft Office XX.0 Access database engine Object Library. Или ее удалять и вставлять DAO. Только зачем?

Позднее связывание здесь ни к чему. Все функции в указанной выше библиотеке есть.
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,632
17.09.2017, 02:29
Цитата Сообщение от mobile Посмотреть сообщение
посмотрите вариант с миганием границ. У поля на котором фокус мигания нет. Также сделана обработка на событии BeforeUpdate
Универсализация по "жёсткой схеме"
А Комменты где?
Вы в своём репертуаре ...

Я то читаю ... а ТС?

Добавлено через 3 минуты
Цитата Сообщение от mobile Посмотреть сообщение
И немедленно сообщается, что конфликт имен с Microsoft Office XX.0 Access database engine Object Library.
Не уловил - сижу на MSA 2010 x32 = Всё "пучком".

Добавлено через 2 минуты
mobile, Спорно:
Visual Basic
1
2
3
    Dim i
    require = Array("КодКлиента", "Улица", "№Дома", "КодРиелтора", "ИсточникИнформации", _
    "№Договора", "Статус")
Ибо в форму могут быть добавлены и иные обяз. поля ....
Тут нужно описалово!


Добавлено через 2 минуты
mobile, А если набирать массив по свойствам полей (Обяз - не обяз) - как так?
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
17.09.2017, 02:31
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Не уловил - сижу на MSA 2010 x32 = Всё "пучком".
Что ж тут непонятного? Сейчас у Вас прописана Microsoft Office XX.0 Access database engine Object Library. Если следовать совету "подхватывается легко при первом же упоминании", т.е. вставить дополнительно dao360.dll, то будет сообщение "Name conflicts with existing module, project, or library". И указать дополнительно DAO не удастся. Все функции DAО уже есть в другой, штатной библиотеке.
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,632
17.09.2017, 02:32
Maks1m, извините пожалуйста - увлёкся на ....
Вариант от mobile (как всегда), щикарен.
0
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
17.09.2017, 02:32
Цитата Сообщение от mobile Посмотреть сообщение
вариант с миганием границ.
Прикольно. Но только думаю, что слишком..) Я в том плане, что не зачем сразу включать мигалку, а включать ее только в том случае, если не заполнил и решил перейти к следующей записи или закрыть форму.
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
17.09.2017, 02:33
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Ибо в форму могут быть добавлены и иные обяз. поля ....
Тут нужно описалово!
Я с самого начала говорил, что желательно обязательные поля прописывать в специальной, служебной табличке. Я думаю, что ТС с этим прекрасно справится. Если захочет.
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
17.09.2017, 02:34
Цитата Сообщение от Eugene-LS Посмотреть сообщение
на схему данных гляньте пожалуйста - ничего не смущает?
завтра гляну, седня чет голова уже не варит..)
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,632
17.09.2017, 02:43
Цитата Сообщение от mobile Посмотреть сообщение
Все функции DAО уже есть в другой, штатной библиотеке.
Так я это и мел ввиду!

Но предпочитаю штатную.
По моим наблюдениям = надёжнее.

Добавлено через 6 минут
mobile, Так как насчёт массив по свойствам полей (Обяз - не обяз)???

Добавлено через 38 секунд
Код будет универсальным!
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
17.09.2017, 02:55
Цитата Сообщение от Eugene-LS Посмотреть сообщение
mobile, Так как насчёт массив по свойствам полей (Обяз - не обяз)???
Код будет универсальным!
Если сделать спец.таблицу, то это оправдано. А только для формы слишком много возни. Форма построена на нескольких таблицах, изыскивать какое поле от какой таблицы, потом брать TableDef, смотреть свойство Required - много возни. Сделать один раз таблицу для всех таблиц, собрать туда обязательные поля это другое дело. Выполнимо в реальные сроки. А для одной формы построенной на многотабличном запросе не стоит. Соотношение достигнутого эффекта к затратам времени слишком мало.
1
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,632
17.09.2017, 03:05
Цитата Сообщение от mobile Посмотреть сообщение
Если сделать спец.таблицу, то это оправдано. А только для формы слишком много возни.
Примерно то же самое я и напечатал, с 10-к постов назад ....


Добавлено через 5 минут
mobile, Напоминаю:
Если задать цвет фона контрола, а потом сменить его на прозрачный, при попадании фокуса он возвращает цвет (ранее заданный).
Часто пользуюсь этим глюком для подсветки контролов (частный случай)

Добавлено через 3 минуты
mobile, А код ваш был хорош!
Хоть и же тема = вид сбоку.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.09.2017, 03:05

Код для кнопки "сохранить и выйти"
Ребята помогите пожалуста с кодом: у меня курсовая работа:для кнопки мне нужен код который выполняет такую функцию как "сохранить и...

Запись данных в таблицы только нажатием кнопки «Сохранить» на составной форме
Здравствуйте. Как можно осуществить запись данных в таблицы (главную и подчиненную) через связанную с ними составную форму только после...

Переписать код с С++ на VBA (сортировка массивов и запись в файл)
#include <algorithm> #include <iostream> #include<windows.h> using namespace std; //newGap Function double createGap( double gap...

Vba для кнопки
Здравствуйте, у меня есть форма и на ней есть: выпадающий список, который состоит из дней недель; подчиненная форма из запроса на день...

Перевести код макроса VBA в код скрипта для гугл таблицы
Ребят, помогите пожалуйста перевести маленький кусок кода из VBA в JS для гугл таблицы. Программа считает время отключения приборов за...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru