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

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

17.06.2015, 00:55. Показов 26516. Ответов 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
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
18.09.2017, 10:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Eugene-LS
А не могли бы вы, потратить пару часиков, и сотворить наглядный пример на эту тему?
Думаю, он прославил бы вас на данном форуме, да и я бы с удовольствием его сохранил и рекомендовал бы всем нуждающимся.
На 99% я воспринимаю Ваше предложение как своеобразную шутку.
Ведь это - элементарно, и весь код уже показан.
Но, поскольку остается 1% за то, что Вы и правда хотите увидеть
"практическое воплощение", я могу сделать примерчик.
Часа через два, возможно.
0
Эксперт MS Access
 Аватар для Eugene-LS
13269 / 5946 / 1529
Регистрация: 05.10.2016
Сообщений: 16,639
18.09.2017, 10:12
Capi, Да я люблю юмор, с ним веселее, но не в этот раз.
Всё было написано всерьёз.
(Я же свои примеры, например, не ради развлечения делаю)

Добавлено через 4 минуты
И подписать пример не забудьте, Страна должна знать своих героев!
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
18.09.2017, 10:14
Eugene-LS,

Как подписать?
Электронной подписью?
0
Эксперт MS Access
 Аватар для Eugene-LS
13269 / 5946 / 1529
Регистрация: 05.10.2016
Сообщений: 16,639
18.09.2017, 10:17
Цитата Сообщение от Capi Посмотреть сообщение
Как подписать?
Электронной подписью?
Да как хотите!

Принято приблизительно так:
Сделано: Имя или ник
Дата: ....
Номер версии: ...
Ссылка на сайт ... (факультативно)
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
18.09.2017, 14:43
Eugene-LS,

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

В примере 30 полей - 10 текстовых, 10 числовых, 10 дата/время.
В окне редактирования три числовых поля представлены полями со списком,
с выбором текстовых значений из словарей.
Ну, чтобы по максимуму проверить.
Поэтому пришлось еще добавить функцию (универсальную) включения нового значения в словарь.

Вроде файл подключился...
Вложения
Тип файла: zip ПризнакНезаполненныхПолей.zip (32.5 Кб, 22 просмотров)
3
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
18.09.2017, 14:46
Если не удалят, конечно, как отступление от темы.
0
Эксперт MS Access
 Аватар для Eugene-LS
13269 / 5946 / 1529
Регистрация: 05.10.2016
Сообщений: 16,639
18.09.2017, 15:08
Capi, У вас рассмотрен случай когда все поля формы обязательны (насколько я понял), но мы обсуждали вариант когда некоторые обязательны, а некоторые - нет.
Причём нужно подсвечивать именно не заполненные ЭТИ - некоторые.

Дальше:
Пример оформляется папочкой.
В папке:
- Файл примера
- Текстовик с описанием
- Скрин-Шотик (несколько)
- Прочее (факультативно)

Ну вы же для людей делаете...

Добавлено через 11 минут
Цитата Сообщение от Capi Посмотреть сообщение
Если не удалят, конечно, как отступление от темы.
Никто ничего не удалит - это как раз очень в ТЕМУ!
Что за негативный настрой!?

У вас отличный пример! - правда пока не про суть темы, но вполне наглядный и интересный.
И подписать его ... - поскромничали?
Примеры не Боги делают, никто из разрабов темы на 100% не знает - и неможет знать, ибо путь к совершенству бесконечен.
И чем проще пример - тем он ближе к народу.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
18.09.2017, 15:08
Eugene-LS,

Не знала, что готовлю материалы к сдаче в ГОСФАП.
То бишь, Государственный фонд алгоритмов и программ.
А то ведь там еще виза нормоконтролера нужна.

С Вами и Вашими шуточками все ясно.

У вас рассмотрен случай когда все поля формы обязательны
У меня это не имеет значения.
Доделать с учетом этого, думаю, несложно.
Сейчас пока некогда.
Вечерком, возможно.
И выложу.
Вы ведь знаете, "заставь дурака...". Правда же?
0
Эксперт MS Access
 Аватар для Eugene-LS
13269 / 5946 / 1529
Регистрация: 05.10.2016
Сообщений: 16,639
18.09.2017, 15:15
Capi, посмотрел код - не откомментирован, а примеры рассчитываться на на пополнение знаний.
Добавьте комментов к коду, ну хотя бы на ключевых пунктах, и будет ЗАМЕЧАТЕЛЬНО.

Добавлено через 1 минуту
Цитата Сообщение от Capi Посмотреть сообщение
Сейчас пока некогда.
А никто и не торопит!
Take your time!

Успехов!
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
18.09.2017, 15:25
Eugene-LS,

Я считаю, что код должен быть самодокументиремым,
то есть, должен читаться без лишних комментариев.

Может, чего и добавлю.
Где Вам было особенно непонятно?

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

Могли бы и спасибо сказать.
Сами Вы довольно ревностно относитесь к отсутствию таковых в свой адрес,
как я успела заметить.
1
Эксперт MS Access
 Аватар для Eugene-LS
13269 / 5946 / 1529
Регистрация: 05.10.2016
Сообщений: 16,639
18.09.2017, 15:35
Цитата Сообщение от Capi Посмотреть сообщение
Я считаю, что код должен быть самодокументиремым,
то есть, должен читаться без лишних комментариев.
Мне всё понятно, но нужно учитывать РАЗНЫЙ уровень подготовки тех кто на этот код смотрит.

Цитата Сообщение от Capi Посмотреть сообщение
Где Вам было особенно непонятно?

Смотрите выше .

Цитата Сообщение от Capi Посмотреть сообщение
И про обработку ошибок у меня тоже есть свое мнение - делать только необходимое и достаточное,
не перебарщивать с обработчиками, лучше вводить профилактические проверки для выявления
Согласен на 1 000 000 000 %
Тут пере ... - не следует - точно.

Цитата Сообщение от Capi Посмотреть сообщение
Могли бы и спасибо сказать.
Сказал уже - смотрите выше по теме.
Но!
Я вам ещё 200 "Спасибо" скажу (мне не жалко), но от остальных не ждите - у нас народ суровый.

Цитата Сообщение от Capi Посмотреть сообщение
Сами Вы довольно ревностно относитесь к отсутствию таковых в свой адрес,
Ну раз вы так считаете - пусть будет так.
Да!


Пишите мелким почерком.
Вечно ваш Eugene-LS
1
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
18.09.2017, 15:45
Цитата Сообщение от Eugene-LS
Пишите мелким почерком.
Вечно ваш Eugene-LS
Крупный закрепили за собой?)))

А в целом, Ваша реакция мне льстит - значит, хорошо сделано.
Да.

Ладно. Пора поработать.
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
18.09.2017, 23:12
Даже и не знаю, что лучше через таблицу, или просто вот так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Public Sub ЗаполнитьОбязательныеПоля(frm As Form) 'Для продажи недвижимости с договором
    xxx = False
    Dim i
'Исходя из какой формы запрос, выбираем нужный массив обязательных полей
    If frm.Name = "ContractSale" Then
            If frm.Caption = "Новая квартира" Or frm.Caption = "Новая комната" Or frm.Caption = "Новый дом" _
            Or frm.Caption = "Новый участок" Or frm.Caption = "Новая ком. недвижимость" Then
                'Массив имен обязательных полей записанных в нужном порядке
                arrRequire = Array("КодТипНедвижимости", "КодУлицы", "№Дома")
            Else
                'Массив имен обязательных полей записанных в нужном порядке
                arrRequire = Array("КодСобственника", "КодОперации", "КодТипНедвижимости", _
                "КодУлицы", "№Дома", "№Договора", "ДатаДоговора", "ДатаОкончанияДоговора", "КодРиелтора", _
                "КодИсточникИнформации", "КодСтатуса")
            End If
        ElseIf frm.Name = "ContractBuying" Then
            'Массив имен обязательных полей записанных в нужном порядке
            arrRequire = Array("КодОперации", "КодТипНедвижимости", "КодПокупателя", _
            "№Договора", "ДатаДоговора", "ДатаОкончанияДоговора", "КодРиелтора", _
            "КодИсточникИнформации", "КодСтатуса")
        ElseIf frm.Name = "НовыйЗвонок" Or frm.Name = "ИсторияЗвонков" Then
            'Массив имен обязательных полей записанных в нужном порядке
            arrRequire = Array("КодТипЗвонка", "ДатаЗвонка", "ВремяЗвонка", "Имя", "Телефон1", _
            "КодИсточникИнформации", "КодРиелтора", "РезультатЗвонка")
        ElseIf frm.Name = "НовыйКлиент" Or frm.Name = "Клиенты" Then
            'Массив имен обязательных полей записанных в нужном порядке
            arrRequire = Array("Имя", "Телефон1")
        End If
'здесь проверка на заполненность обязательных полей
End Sub
Что в таблице писать, что здесь... Одно точно лучше, это нет надобности создавать таблицу...)
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
18.09.2017, 23:21
Чуть погодя выложу доработанный вариант - с учетом обязательных полей.
Там в код у меня одна всего строчка добавляется.
Пока нет технической возможности БД выложить.
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
18.09.2017, 23:52
Вообще говоря, массив не нужен, если есть таблица. Достаточно рекордсета. Но пусть с массивом.

Таблица Require. Где капшен формы не нужен, поле Caption пустое
ИмяФормы ИмяПоля Caption
ContractSale КодТипНедвижимости Нов
ContractSale КодУлицы Нов
ContractSale №Дома Нов
ContractSale КодСобственника 
ContractSale КодОперации 
ContractSale КодТипНедвижимости 
ContractSale КодУлицы 
ContractSale №Дома 
ContractSale №Договора 
ContractSale ДатаДоговора 
ContractSale ДатаОкончанияДоговора 
ContractSale КодРиелтора 
ContractSale КодИсточникИнформации 
ContractSale КодСтатуса 
НовыйКлиентИмя 
НовыйКлиентТелефон1 

Процедура
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Sub ЗаполнитьОбязательныеПоля(frm As Form, frmCaption)
  Dim db as dao.database, rst as dao.recordset, s, n, i
  set db=currentdb
  'определяем sql рекордсета 
  s="select * from Require where ИмяФормы='" & frm.name _
  & "' and (Caption like '" & frmCaption & "*' or " & frmCaption & ""="" & ")"
  set rst=db.openrecordset(s)   'создаем рекордсет 
  If rst.eof Then exit sub      'если рекордсет пустой выходим
  rst.movelast: rst.movefirst: n=rst.recordcount 'Находим размерность массива
  redim arrRequire(n) '
  i=0
  do until rst.eof  'Цикл по рекордсету и заполнение массива
    arrRequire(i)=rst!ИмяПоля 
    i=i+1
    rst.movenext
  loop
'здесь проверка на заполненность обязательных полей
End Sub
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
18.09.2017, 23:56
Цитата Сообщение от mobile Посмотреть сообщение
Где капшен формы не нужен, поле Caption пустое
А вы, однако, все "без слов" понимаете... В чем у меня возникли трудности...
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
19.09.2017, 01:13
Eugene-LS,

Выкладываю новый вариант.
Доработан с учетом необходимости выделения обязательных полей.
Мне это действительно было совсем несложно.
В код добавилась всего одна строка:
Visual Basic
1
Ctl.BorderWidth = 2 * B * (CurrentDb.TableDefs("Main_Table").Fields(Ctl.Name).Properties("Required"))
То есть, поле незаполненное, но обязательное, отличается от других незаполненных полей более широкой границей.
Такой вариант выделения выбран для скорости подготовки примера.
А так-то можно как угодно придумать.

Комментарии пока подождут. Цейтнот.
Вложения
Тип файла: 7z НезаполненныеОбязательныеПоля.7z (25.2 Кб, 12 просмотров)
2
Эксперт MS Access
 Аватар для Eugene-LS
13269 / 5946 / 1529
Регистрация: 05.10.2016
Сообщений: 16,639
19.09.2017, 11:30
Цитата Сообщение от Capi Посмотреть сообщение
Выкладываю новый вариант.
Красота!
Спасибо!
0
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
19.09.2017, 17:15
Как правильно записать, если нужно найти определенную запись в таблице?
ЗначениеПоля - это просто текст.
Так почему то не работает:
Visual Basic
1
rst.FindFirst "[ИмяПоля] = 'ЗначениеПоля'"
0
Эксперт MS Access
 Аватар для Eugene-LS
13269 / 5946 / 1529
Регистрация: 05.10.2016
Сообщений: 16,639
19.09.2017, 17:29
Цитата Сообщение от sana555 Посмотреть сообщение
Как правильно записать, если нужно найти определенную запись в таблице?
Может так?
Visual Basic
1
2
rst.MoveFirst
rst.FindFirst "[ИмяПоля] = 'ЗначениеПоля'"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2017, 17:29

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru