Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/85: Рейтинг темы: голосов - 85, средняя оценка - 4.71
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229

Как убрать сообщение о сохранении изменений макета таблицы?

14.08.2015, 12:00. Показов 16898. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Есть форма, на которой - табличная подформа. Ее источник формируется программно, т.е. каждый раз может быть разным. И вот, когда эта форма открывается, отображает нужные данные, и мы пытаемся ее закрыть - она ВСЕГДА выдает сообщение типа "Сохранить изменения макета таблицы такой-то". Причем даже если ничего не менять (ширину столбцов и т.п.).
Как можно заблокировать это сообщение, чтобы оно не смущало юзеров?..
Заранее большое спасибо)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2015, 12:00
Ответы с готовыми решениями:

Как убрать сообщение о сохранении в Ворде
Создаю отчет в екселе, при закрытии нет сообщения о сохранении благодаря "DisplayAlerts = False" Set obExcel =...

Как убрать из макета печатной формы деление на листы?
1С 8.2 Обычные формы. Был печатный документ (в документе реализации), в виде приложения по качеству товара, который печатался на каждом...

Не обновляется экран эмулятора после изменений макета
Привет всем! Установил дома анлроид студио и столкнулся со следующей проблемой: После попытки добавить новый вью на экран (кнопку,...

15
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.08.2015, 12:10
На событии Unload (Выгрузка) поставьте принудительное сохранение формы
Visual Basic
1
2
3
Private Sub Form_Unload(Cancel As Integer)
    DoCmd.RunCommand acCmdSave
End Sub
1
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
14.08.2015, 13:15  [ТС]
mobile, Как всегда, спасибо ОГРОМНОЕ! А я - как всегда туплю)... Такие очевидные прописи... Эхх.

Хмм. Хотя что-то как-то не то, все равно спрашивает((...

Добавлено через 4 минуты
Может, оно все равно спрашивает потому, что я прописываю команду сохранения на событие выгрузки самой ФОРМЫ, а изменения касаются именно субформы с таблицей?...
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.08.2015, 13:43
Выложите форму с парой-тройкой субформ замены. Есть варианты, хотелось бы увидеть фактический.
0
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
14.08.2015, 15:20  [ТС]
хммм... Наверное, трудно будет отделить форму от всей базы, там на нее кучу повязано действий по формированию источника данных...

Добавлено через 1 час 34 минуты
Как-то не получается у меня отделить именно эту форму от всего остального, чтобы выложить(...

Может, чем-то поможет, если скажу, что у меня на форме - не подформа табличная, а непосредственно таблица?.. Ну то есть у меня в базе формируется временная таблица (каждый раз с разным количеством полей), которую я и добавил на форму. Объект-источник в данном случае - непосредственно таблица, если я правильно понимаю. И при открытии я еще задал автовыравнивание ширины столбцов по самому широкому значению в столбце (вы когда-то мне советовали эту фишку, с тех пор пользуюсь)).. Вот я подозреваю, что именно это автовыравнивание в данном случае приводит к тому, что даже если пользватель сам не менял ширины столбцов - ему все равно будет задан этот вопрос о сохранении макета...
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.08.2015, 21:00
Жаль, что Вы не можете выложить Ваш вариант. Есть немало разночтений по всяким ситуациям.

Если сделать закрытие главной формы не крестиком, а кнопкой, то вроде бы получается более или менее универсальный вариант: в коде кнопки написать
Visual Basic
1
DoCmd.Close acForm, Me.Name, acSaveNo
Если закрытие оставить крестиком на рамке формы, то не удается получить доступ к даташит субформы. Соответственно, не можем управлять событиями на закрытии подформы и сообщение будет возникать.
1
 Аватар для VinniPuh
9131 / 6141 / 593
Регистрация: 27.03.2013
Сообщений: 20,006
14.08.2015, 21:07
Цитата Сообщение от mobile Посмотреть сообщение
Соответственно, не можем управлять событиями на закрытии подформы и сообщение будет возникать.
Я конечно дуб в данном вопросе но, а чё, нельзя разве прописать вместо одной сразу 2 команды на сохранение, типа в начале сохранить подчиненную, а вслед за ней основную, или там наоборот?
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.08.2015, 21:15
PuhKMV, у него нет формы в контроле подформы. Вместо нее в SourceObject контрола-контейнера подформы прописано "Таблица.ИмяТаблицы". Соответственно в контроле подформы не настоящая форма, а Datasheet - таблица вместо подформы. Ну и раз нет формы, то и нет событий на которых можно управлять ситуацией.
1
 Аватар для VinniPuh
9131 / 6141 / 593
Регистрация: 27.03.2013
Сообщений: 20,006
14.08.2015, 21:23
Цитата Сообщение от mobile Посмотреть сообщение
...Ну и раз нет формы...
А-а-а-а-а, кажись понимаю, типа он из садомазахистов , и похоже лёгкие пути, не его жизненое кредо.
0
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
14.08.2015, 22:13  [ТС]
PuhKMV, Рад, что доставил вам удовольствие посмеяться, в наше время это дорогого стоит. Уж поверьте, если бы я мог сделать в моем случае именно ФОРМУ как объект-источник, то я бы сделал.
0
 Аватар для VinniPuh
9131 / 6141 / 593
Регистрация: 27.03.2013
Сообщений: 20,006
14.08.2015, 22:28
Цитата Сообщение от Kkarn Посмотреть сообщение
...то я бы сделал....
Так как я по жизни являюсь паталогическим лентяем, то придерживаюсь мнения, Один раз долго делал, зато потом навечно быстро еду.
У вас же что за жизненный принцип или необоримая заковырка такая, лично мне она не понятна, вот и не понимаю. по чему нельзя сделать попроще, типа стандартными методами, а нужно именно прям в игольное ушко лезть, вместо того чтоб по наторенной ровной дороге идти.
Допускаю конечно, что всяки - разные новаторские задумки возникают, (Сам такой), вот и пытаюсь вникнуть в суть.
Девиз мой под чёрточкой то, вроде бы говорит сам за себя.
0
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
14.08.2015, 22:44  [ТС]
Ну смотрите. Попробую описать ситуацию. Может по ходу этого описания и для себя что-то сформулирую, мало ли.
Есть БОЛЬШАЯ таблица с кучей полей (ну, допустим, гипотетически, штук так 50). Не будем сейчас обсуждать вопросы нормализации и т.д., т.к. в реале это не одна таблица, само собой, а несколько, но в итоге они как бы сводятся к одной большой.
Есть форма, в которой перечислены ВСЕ эти поля. И галочки, чтобы пользователь мог отметить, какие из полей включить в итоговый отчет. То есть каждый раз это могут быть ДРУГИЕ поля, в этом как бы главная суть этой формы и этого итогового отчета. Так вот, пользователь отмечает птичками нужные поля, жмет кнопку "Сформировать". По этой кнопке запускается алгоритм, который циклом опрашивает все чекбоксы на форме, и если отмечен - добавляет это поле в постепенно формирующуюся инструкцию "SELECT... INTO", которая затем выполняется и создает в базе временную таблицу с нужными нам полями. И вот эта-то временная таблица и является объектом-источником подформы. Именно таблица, а не форма, поскольку я понятия не имею, какие именно поля должны будут отображаться. Ну и потом отображаем соответственно эту форму с таблицей. Вот такая логика.
Как вариант, который я еще могу придумать - сделать огромную форму со ВСЕМИ полями, и потом делать их видимыми-невидимыми в зависимости от выбора чекбоксов, но по мне это еще больший изврат получается, оно того не стоит. Описанный выше вариант отнял у меня минимум кода, при том, что делает фактически все, что мне нужно. И единственная заковыка, которую он дает - это описанное выше сообщение о сохранении макета таблицы. Да и то только потому, что я использовал предложенную мне ранее mobile фишку по автоподгонке ширины столбцов таблицы.
0
 Аватар для VinniPuh
9131 / 6141 / 593
Регистрация: 27.03.2013
Сообщений: 20,006
14.08.2015, 23:00
Цитата Сообщение от Kkarn Посмотреть сообщение
...т.к. в реале это не одна таблица, само собой, а несколько...
Типа - Запрос? или реально - Таблица?
Если таблица, то я тут бессилен, т. к. считаю это не очень правильным.
Допускаю конечно, что типа можно описать - Сотрудника в одной таблице, в 100 полях, типа - ФИО, Пол, Адрес, Образование, Работу, Семейное положение, телефоны, но это на мой взгляд потом скажется не сторицей и великой тратой времени.
Ладно, у каждого своё логическое мышление и пусть каждый останется при своём мнении, основанном на жизненном опыте.
Удачи!!!
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.08.2015, 04:33
Kkarn, Вы и сами знаете, что с формами гораздо проще и эффективней. И судя по сказанному выше, Вам необязательно создавать новые таблицы, достаточно запросов. Ведь в них можно сделать все то же самое (почти), что и в отдельных таблицах.
Вот с учетом всего этого предлагаю Вам вариант с формой, где можно выбрать из списка нужные поля из таблиц/запросов и поместить их в табличную подформу. А также создать запрос, который можно сделать источником отчета вместо таблицы.
Поскольку работаем с формами, то никаких проблем с сохранением нет.

На стартовой форме MakeForm выбираете нужную таблицу/запрос, в следующем списке поля и нажимаете кнопку Создать форму. Откроется форма Form1 с табличной подформой SubFrm и выбранными полями. А также сформируется запрос TempQuery на основе выбранных полей.

Пример сделан на основе данных из учебной БД Борей. Применена функция автоматического выбора ширины поля по данным источника.
Вложения
Тип файла: rar wzHook1.rar (93.6 Кб, 12 просмотров)
1
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.08.2015, 04:57
Добавлю. Форма MakeQuery может быть перенесена в любую БД практически без изменений. Ну разве что функцию подгонки ширины столбцов можно убрать, если не нужна. Чтобы ее удалить надо закомментировать строку в процедуре MakeForm в модуле формы MakeQuery
Visual Basic
1
frm.OnLoad = "=setCotrolWidth([Form], """ & Replace(Replace(Me.txtFields, "[", ""), "]", "") & """,""" & Chr(44) & """)"
Если же эта функция нужна, то следует скопировать также модуль mdlTwipsFromFont в котором записана функция setCotrolWidth.

Также в БД должен присутствовать запрос TempQuery. Содержание запроса не имеет значения, его SQL-текст динамически формируется в коде.

Ну и конечно надо исправить имя вызываемой формы с подформой SubFrm. В примере она называется Form1. Это делается также в процедуре MakeForm в команде вызова формы: Docmd.OpenForm "Form1".
У контрола подформы должна быть подпись с именем lblSub. Значение подписи подформы заменяется на имя выбранной таблицы/запроса. Что, впрочем тоже можно закомментировать в MakeForm.
1
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
15.08.2015, 06:15
Цитата Сообщение от Kkarn Посмотреть сообщение
И вот эта-то временная таблица и является объектом-источником подформы.
И какова аналитическая ценность такой таблицы (данные в ней можно только смотреть) - типа скроллить вверх/вниз/вправо/влево ... . Ни итогов, ни группировок, ... . Обычно делают общую сводную таблицу, а дальше пользователь сам решает, что ему нужно смотреть и как ... .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.08.2015, 06:15
Помогаю со студенческими работами здесь

Ошибка при сохранении изменений
При сохранении изменений выскакие сообщение: Общая файловая ошибка при доступе к <путь к базе>\1Cv7.MD с кнопкой ОК после...

Ошибка при сохранении изменений в БД
При нажатии кнопки "BindingNavigatorSaveItem" выходит ошибка An UPDATE or DELETE query cannot contain a multi-valued field. Как решить эту...

Ошибка при сохранении изменений
Приветствую всех. Знаю что задача тривиальна, но тем не менее не могу разобраться. Создаю интерфейс для работы с базой данных (БД в формате...

VBA Access: Программное сохранение изменений макета формы
Добрый день! Программно задаю название формы Form_Форма.Caption = "Рабочая форма" но после закрытия формы новое название не сохраняется....

При сохранении в файл формата xlsx выпадает сообщение о сохранении шаблона
Такая дурацкая штука получается при сохранении в файл формата xlsx - выпадает сообщение о сохранении шаблона!!! Этот шаблон я как раз...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере 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