Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/280: Рейтинг темы: голосов - 280, средняя оценка - 4.98
2644 / 1343 / 256
Регистрация: 25.10.2010
Сообщений: 2,196

Поля подстановки в таблицах

30.10.2011, 15:39. Показов 59038. Ответов 180
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане! Прочитала все, что смогла найти на форуме по проблеме использования полей подстановки в таблицах: и различные мнения, основанные на опыте работы, и эмоции типа "надоело уже...".
Например, довод, что таблица должна оставаться в первозданном виде, а все, что касается удобства ввода данных, должно реализовываться на форме, мне понравился.
НО, когда я объясняю людям, что не рекомендуется делать поля подстановки в таблицах, я должна это аргументировать.
Исходя из своего небольшого опыта, я не могу привести ни одного примера, когда поле подстановки в таблице на что-то отрицательно повлияло. База данных, спроектированная мной несколько лет назад и работающая до сих пор, содержит поля подстановок в таблицах. В том числе и такие, которые скрывают первичный ключ. Но это ни разу (!) не помешало при создании новых запросов, форм, таблиц и т.д.
Собственно мой вопрос, точнее просьба, заключается в следующем: если кто-то сталкивался с реальной ситуацией, когда поля подстановки в таблицах мешали решить задачу, поделитесь конкретными примерами.
2
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2011, 15:39
Ответы с готовыми решениями:

Создать БД без полей подстановки в таблицах
Уважаемые эксперты форума, Много прочитал по проблеме использования полей подстановки в таблицах. Однако так нигде и не нашёл пошаговую...

Отдельные списки данных для подстановки - в разных таблицах
Что то я засомневался, в какой то книжке читал, что для каждого списка данных для подстановки нужна отдельная таблица, я так и сделал....

Фильтр поля подстановки по значению в другом поле
Здравствуйте! Подскажите пожалуйста простой ответик... В приложении есть БД. Как настроить поле "Субъкт федерации",...

180
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
24.05.2016, 21:04
Студворк — интернет-сервис помощи студентам
Ну вы тут и развели. Подстановки в таблицах - это такая же "проблема", как неявное объявление переменных, кириллические названия объектов, названия таблиц и полей с пробелами и спецсимволами. Это всё проблемы в неумелых руках. Человек, который знает, чем рискует, всегда сможет найти в этих вещах для себя плюсы. И может даже решить реальные проблемы, которые из этого возникнут. Ведь такой человек со знанием дела пойдёт на такой шаг. За всё это и недолюбливают васик и акцесс, что они дают слишком много свободы в действиях. Ну так и ложкой можно заколоться умеючи-то
1
 Аватар для VinniPuh
9147 / 6171 / 594
Регистрация: 27.03.2013
Сообщений: 20,046
24.05.2016, 21:15
amd48, так то оно так, но зачем Специально себе трудности создавать?
Это просто на какой та возвращенный садомазахизм похоже.
Всякие власяницы и вереги с самобичеванием говорят тоже полезны, т к закаляют не только дух, но и тело.
Вы такими методами наверное не пользуетесь для самосовершенствования, но других от этого не останавливает, а типа мягко подталкивает, дабы все в этой жизни попробовали.
Или я чего то в ваших высказываниях недоперепонял по своей недопонятливости?
0
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
24.05.2016, 21:20
Ладно, попробую по другому..) Допустим, у меня в таблице1 - есть поле1, с подстановкой (из таблицы2). Я решил убрать подстановку в поле1 из таблицы1. Что я делаю: иду в конструктор таблицы - подстановка и в поле: "тип элемента управления" - меняю поле со списком на поле. Все верно? Больше ничего не нужно делать, чтобы убрать эту пресловутую подстановку?
Цитата Сообщение от amd48 Посмотреть сообщение
Это всё проблемы в неумелых руках.
Как раз таки про меня...)
0
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
24.05.2016, 21:24
Я сам пользуюсь автоподстановками и считаю это удобным. И я знаю, к чему это может привести по невнимательность. Т.е. у меня может вызвать недоумение какой-то "неожиданный" результат запроса на считанные секунды. И я сразу понимаю, в чём дело. Не припомню ни одного случая, когда подстановка именно вредила. Она может вызвать вопросы, непонимание ситуации и что-то ещё. Но чтоб что-то испортить - такого у меня не бывало
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
24.05.2016, 21:29
Не припомню кто именно из опытных сказал, но суть в том, что если ввод производится непосредственно в таблице, без использования форм, то подстановка удобная вещь, а в остальных случаях: зачем она нужна?
Я не спорю, просто прислушиваюсь..)
0
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
24.05.2016, 21:30
Вообще припоминаю, что автоподстановку открыл для себя достаточно поздно. Т.е. знал, что это такое, но были проблемы с её настройкой и поэтому было заброшено в дальний ящик. А потом был один раз, когда надо было сделать полностью рабочую базу данных без единой строчки кода и макросов. Вот это был экспирианс!... Я постоянно использую VBA. Везде его пихаю. Даже туда, где он не очень-то и нужен. А тот случай меня немного отрезвил. И тогда я понял, как это круто, подставлять поля, связанные таблицы... Непередаваемые ощущения. С тех пор я постоянно этим балуюсь и это кстати экономит время при создании форм. В них автоматически воспроизводится структура поля со списком из таблицы.
2
Эксперт MS Access
26828 / 14508 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
24.05.2016, 21:35
Поля подстановки могут в некоторых случаях привести к крупным неприятностям. Например у Вас большая БД и интерфейс построен на полях подстановки. В какой-то момент ресурсы Access становятся малы, Вы переходите на sql-server и выясняется (внезапно!), что на сервере нет таких полей. И что же делать - только ломать весь выстроенный интерфейс и делать его заново. При большом объеме форм это будет похуже чем ошибка.
2
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
24.05.2016, 21:36
Цитата Сообщение от amd48 Посмотреть сообщение
А потом был один раз, когда надо было сделать полностью рабочую базу данных без единой строчки кода и макросов
Вот я о том же...
Цитата Сообщение от amd48 Посмотреть сообщение
В них автоматически воспроизводится структура поля со списком из таблицы.
Согласен, но у меня много однотипных форм, поэтому не страшно. Одну сделал, потом копирую и дорабатываю.
0
 Аватар для VinniPuh
9147 / 6171 / 594
Регистрация: 27.03.2013
Сообщений: 20,046
24.05.2016, 21:36
Чейта надоело доказывать прописные истины.
2
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
24.05.2016, 21:41
Цитата Сообщение от PuhKMV Посмотреть сообщение
Чейта надоело доказывать прописные истины.
Мне не нужно ничего доказывать, я с/за Вами/Вас...) Просто ответьте на вопрос в посте 63..)
1
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
24.05.2016, 21:42
Цитата Сообщение от mobile Посмотреть сообщение
Вы переходите на sql-server
Такое мне не грозит. Не знаю ни одного человека вживую, кто всерьёз воспринимал бы акцесс. Для себя балуюсь иногда, паре человек сделал пару баз для однопользовательского потребления. Ну и всё на этом. Для других задач существуют другие решения. А акцессовские проекты обычно отмирают ещё в процессе перехода на новую версию офиса. К тому моменту всё настолько меняется в работе конторы, что проще перейти на совершенно новую систему, чем мучить труп.
0
 Аватар для VinniPuh
9147 / 6171 / 594
Регистрация: 27.03.2013
Сообщений: 20,046
24.05.2016, 21:57
sana555, не совсем понял вопрос.
Мне желателен пример, который могу видеть, а не представлять, иначе частенько возникает недопонимание в терминологии.

Добавлено через 10 минут
amd48,
Кликните здесь для просмотра всего текста
похоже нас кошачьих в рядах прибыло. +
0
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
24.05.2016, 21:58
Я чес слово даже и не знаю, какой пример вам сделать, поле с подстановкой что ли? Можете просто сказать на своем опыте, как вы удаляли поля с подстановками? Например я, просто в конструкторе таблиц поменял тип поле со списком на поле и все. Меня еще интересует такой вот момент: если я сделал форму на основании полей с подстановкой, а потом снес подстановку в таблице, то нужно ли переделывать поля в форме, которые раньше были с подстановкой. Короче, если ничего не поняли, забейте...))
0
 Аватар для VinniPuh
9147 / 6171 / 594
Регистрация: 27.03.2013
Сообщений: 20,046
24.05.2016, 22:05
sana555, Да, просто в конструкторе таблицы сменить на просто поле.
В форме ни чего из за этого не изменится, только истиннее будут отображаться данные.
1
369 / 88 / 8
Регистрация: 14.08.2012
Сообщений: 248
24.05.2016, 22:05
Цитата Сообщение от amd48 Посмотреть сообщение
Для себя балуюсь иногда, паре человек сделал пару баз для однопользовательского потребления. Ну и всё на этом.
О, среди нас профи! Ну, почитай на всякей http://alx-artamonov.narod.ru/index/0-5
0
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
24.05.2016, 22:11
Цитата Сообщение от PuhKMV Посмотреть сообщение
Да, просто в конструкторе таблицы сменить на просто поле.
Ну вот, боженька смилостивился пред моей бедой, большое спасибо! Тогда, с уверенностью могу утверждать, что сиих полей подстановок, я в своей БД больше не имею, и формочки мои не нуждаются в какой либо корректировке, потому как теперь только истину глаголят!...) Низок вам поклон...)
0
 Аватар для VinniPuh
9147 / 6171 / 594
Регистрация: 27.03.2013
Сообщений: 20,046
24.05.2016, 22:22
sana555, я ведь из за чего так упрямлюсь из за этих полей постановок, т к имел небольшой негативный опыт с ними.
Создал поле подстановки в таблице, а по ней форму с полем со списком создается,
Чего то в творческом порыве изменишь, а в поле со списком забудешь по неопытности и забывчивости, и тут начинаются танцы с бубнами.
Пока разбирался и переделаешь, 7 потов сойдет.
Ни к чему эти лишние телодвижения начинающим.
Кроме того, в форме несоизмеримо больше можно сделать в поле со списком. Чем в поле подстановки таблицы.
Но главное, это истинное отображение хранящихся данных, а не их зачастую ложные отображения.
0
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
24.05.2016, 22:25
Цитата Сообщение от odbcsql Посмотреть сообщение
почитай
1. Поле подстановки в таблице отображает подстановочное значение. Например, пользователь открывает таблицу в режиме просмотра и видит столбец с именами компаний, но на самом деле в таблице находится числовой столбец КодКомпании, а таблица соединена выражением SELECT со справочником компаний по этому коду.
Это проблема? По мне так это плюс. Пользователь может спокойно редактированные данные и сразу видеть результат.
2. Любой запрос, который использует подобное поле подстановки, чтобы отсортировать его по имени компании, не сработает. И также не сработает запрос, который использует имя компании в этом поле в качестве параметра. Если пользователь создаст комбобокс, чтобы выбрать компанию, используя список значений, данные в таблице могут быть перезаписаны.
Вот это новость, так новость! Запрос в любом случае не сможет отсортировать это поле, будь оно подставным или нет. Надо просто понимать, что это за поле и соответствующе его называть. Если у нас Код_сотрудника с подстановкой из справочника сотрудников, то так его и надо называть Код_сотрудника, а не сотрудник. И не будет никаких сюрпризов.
3. При создании поля подстановки создается еще одно отношение между таблицами и с ним еще один набор индексов, таким образом заставляя базу данных распухать без необходимости.
А если подстановка основана на полях, одно из которых индексируется, для него опять будет создаваться индекс?
4. Если комбобокс, основанный на таком поле используется в форме и применяется фильтр, Аксесс при этом фильтр часто сохраняет; и при следующем вызове формы откроется диалоговое окно, требующее параметр (который не может быть предоставлен, вызывая таким образом ошибку).
Ни разу не встречалось такое. Или я фильтры реализую другими методами, где подстановки не имеют никакого значения
5. Отчеты, основанные на поле подстановки требуют комбобокс для отображения данных, замедляя таким образом его выполнение. Источник данных отчета может быть модифицирован для включения справочной таблицы, однако индекс (если только он не был создан на соответствующем отношении) может быть неоптимальным.
Отчёты делаю на основе запросов, где 2 пункт уже учтён и нейтрализует другие возможные «проблемы»
6. Поля подстановки маскируют то, что в действительности происходит и скрывают хорошую реляционную методологию от пользователя.
А пользователю и не надо знать методологию. Можно подумать, работая с формами, напичканных SQL-выражениями, VBA и прочим, он может понять методологию.
7. База данных не может быть должным образом переведена на более мощную СУБД или запрошена другой СУБД (без удаления всех полей подстановок), так как ни один другой движок кроме Jet-а их не использует и не понимает.
Акцесс обычно используется в такой нише, где ему не грозит переезд на более мощные СУБД. Если такое случилось, проблема была заложена ещё на стадии выбора акцесса в качестве СУБД в самом начале её жизни.
8. Если используются стандартные аксессовские методы безопасности, разрешений на таблицы обычно не выдается, и вместо них для доступа к данным используются запросы RWOP (с правами владельца). В таком случае будут часто происходить ошибки доступа к определенной таблице, которая даже не используется в запросе (так как поле подстановки использует эту таблицу). В случае сложных или вложенных запросов потребуется какое-то время, чтобы отследить поле подстановки, которое вызывает ошибку (то есть, если вы до этого додумаетесь).
Такая проблема тоже удивительна. База должна быть изначально спроектирована так, чтоб не было проблем с доступом к данным. Даже представить себе не могу, в каких ситуациях справочник единиц измерений может быть ограничен в доступе для отдельных пользователей.

Ещё раз: новичку можно просто запретить делать подстановку в таблицах, пока для него её плюсы и минусы не станут очевидны. Человек, который понимает, что это такое, сможет грамотно её использовать без каких-либо проблем
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
24.05.2016, 22:30
PuhKMV,Да я полностью с Вами согласен, уже несколько раз читал эту тему. Мои "хахатушки", связаны не с тем, что я еще сомневаюсь перейти - не перейти(уже давненько убрал их), а с тем и над самим собой, что наконец то мне удалось задать правильный вопрос. Мало ли не полностью их снес - оказывается полностью.
0
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
24.05.2016, 22:45
А. Я ещё вспомнил, что обычно сразу после создания структуры базы разделяю её. И формы, запросы, отчёты делаю уже в связанной базе. Так вот связанная таблица не показывает подстановки. В клиентской части их нет и ваши проблемы улетучиваются сами собой. Но, если клиентская часть не под рукой, а в серверной надо проверить что-нибудь или даже исправить, то подстановки спасают, т.к. хоть такой нативный интерфейс лучше полного его отсутствия.

Добавлено через 9 минут
Хм. Сейчас посмотрел на одну из своих баз и внезапно увидел, что в клиентской части подстановки таки есть. А был момент, когда меня даже огорчило, что при разделении всё это кропотливое вырисовывание подстановок пропало. Такое впечатление, по крайней мере, засело в голове. Вот и не знаю, оно и не пропадало там или я его заново восстанавливал? Запутали вы меня!...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.05.2016, 22:45
Помогаю со студенческими работами здесь

Мастер подстановки на основе поля записи другой таблицы
Здавствуйте, ув. форумчане. Нужна ваша помощь в СУБД MS Access 2003. Нужно,чтобы в таблице "Табель" при выборе класса в поле...

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

При создании поля подстановки тип данных автоматически устанавливается числовым
Добрый день. Проблема следующая: при создании поля подстановки (с получением текстовых значений из другой таблицы) тип данных мастер...

Как в зависимости от значения поля таблицы выбрать источник для мастера подстановки ?
Всем привет. Столкнулся с проблемой, не могу найти решение в инете(возможно, плохо ищу). Есть бд сделанная с помощью Access....

КАК с 1 формы заполнять одинаковые поля в разных таблицах в access
здравствуйте помогите решить проблему есть 4 таблицы в о всех них вводится название организации и номер помещения заполняется через формы...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru