|
2644 / 1343 / 256
Регистрация: 25.10.2010
Сообщений: 2,196
|
|
Поля подстановки в таблицах30.10.2011, 15:39. Показов 59038. Ответов 180
Метки нет (Все метки)
Здравствуйте, уважаемые форумчане! Прочитала все, что смогла найти на форуме по проблеме использования полей подстановки в таблицах: и различные мнения, основанные на опыте работы, и эмоции типа "надоело уже...".
Например, довод, что таблица должна оставаться в первозданном виде, а все, что касается удобства ввода данных, должно реализовываться на форме, мне понравился. НО, когда я объясняю людям, что не рекомендуется делать поля подстановки в таблицах, я должна это аргументировать. Исходя из своего небольшого опыта, я не могу привести ни одного примера, когда поле подстановки в таблице на что-то отрицательно повлияло. База данных, спроектированная мной несколько лет назад и работающая до сих пор, содержит поля подстановок в таблицах. В том числе и такие, которые скрывают первичный ключ. Но это ни разу (!) не помешало при создании новых запросов, форм, таблиц и т.д. Собственно мой вопрос, точнее просьба, заключается в следующем: если кто-то сталкивался с реальной ситуацией, когда поля подстановки в таблицах мешали решить задачу, поделитесь конкретными примерами.
2
|
|
| 30.10.2011, 15:39 | |
|
Ответы с готовыми решениями:
180
Отдельные списки данных для подстановки - в разных таблицах
|
|
|
|
| 24.05.2016, 21:04 | |
|
Ну вы тут и развели. Подстановки в таблицах - это такая же "проблема", как неявное объявление переменных, кириллические названия объектов, названия таблиц и полей с пробелами и спецсимволами. Это всё проблемы в неумелых руках. Человек, который знает, чем рискует, всегда сможет найти в этих вещах для себя плюсы. И может даже решить реальные проблемы, которые из этого возникнут. Ведь такой человек со знанием дела пойдёт на такой шаг. За всё это и недолюбливают васик и акцесс, что они дают слишком много свободы в действиях. Ну так и ложкой можно заколоться умеючи-то
1
|
|
|
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. Что я делаю: иду в конструктор таблицы - подстановка и в поле: "тип элемента управления" - меняю поле со списком на поле. Все верно? Больше ничего не нужно делать, чтобы убрать эту пресловутую подстановку?
0
|
||
|
|
|
| 24.05.2016, 21:24 | |
|
Я сам пользуюсь автоподстановками и считаю это удобным. И я знаю, к чему это может привести по невнимательность. Т.е. у меня может вызвать недоумение какой-то "неожиданный" результат запроса на считанные секунды. И я сразу понимаю, в чём дело. Не припомню ни одного случая, когда подстановка именно вредила. Она может вызвать вопросы, непонимание ситуации и что-то ещё. Но чтоб что-то испортить - такого у меня не бывало
1
|
|
|
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
|
|
| 24.05.2016, 21:29 | |
|
Не припомню кто именно из опытных сказал, но суть в том, что если ввод производится непосредственно в таблице, без использования форм, то подстановка удобная вещь, а в остальных случаях: зачем она нужна?
Я не спорю, просто прислушиваюсь..)
0
|
|
|
|
|
| 24.05.2016, 21:30 | |
|
Вообще припоминаю, что автоподстановку открыл для себя достаточно поздно. Т.е. знал, что это такое, но были проблемы с её настройкой и поэтому было заброшено в дальний ящик. А потом был один раз, когда надо было сделать полностью рабочую базу данных без единой строчки кода и макросов. Вот это был экспирианс!... Я постоянно использую VBA. Везде его пихаю. Даже туда, где он не очень-то и нужен. А тот случай меня немного отрезвил. И тогда я понял, как это круто, подставлять поля, связанные таблицы... Непередаваемые ощущения. С тех пор я постоянно этим балуюсь и это кстати экономит время при создании форм. В них автоматически воспроизводится структура поля со списком из таблицы.
2
|
|
|
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 | |||
|
0
|
|||
|
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 | ||
|
1
|
||
|
|
||
| 24.05.2016, 21:42 | ||
|
0
|
||
|
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
|
|
|
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 | ||
|
0
|
||
|
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
|
||
| 24.05.2016, 22:11 | ||
|
0
|
||
|
9147 / 6171 / 594
Регистрация: 27.03.2013
Сообщений: 20,046
|
|
| 24.05.2016, 22:22 | |
|
sana555, я ведь из за чего так упрямлюсь из за этих полей постановок, т к имел небольшой негативный опыт с ними.
Создал поле подстановки в таблице, а по ней форму с полем со списком создается, Чего то в творческом порыве изменишь, а в поле со списком забудешь по неопытности и забывчивости, и тут начинаются танцы с бубнами. Пока разбирался и переделаешь, 7 потов сойдет. Ни к чему эти лишние телодвижения начинающим. Кроме того, в форме несоизмеримо больше можно сделать в поле со списком. Чем в поле подстановки таблицы. Но главное, это истинное отображение хранящихся данных, а не их зачастую ложные отображения.
0
|
|
|
|
||
| 24.05.2016, 22:25 | ||
|
Это проблема? По мне так это плюс. Пользователь может спокойно редактированные данные и сразу видеть результат. 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
|
|
|
|
|
| 24.05.2016, 22:45 | |
|
А. Я ещё вспомнил, что обычно сразу после создания структуры базы разделяю её. И формы, запросы, отчёты делаю уже в связанной базе. Так вот связанная таблица не показывает подстановки. В клиентской части их нет и ваши проблемы улетучиваются сами собой. Но, если клиентская часть не под рукой, а в серверной надо проверить что-нибудь или даже исправить, то подстановки спасают, т.к. хоть такой нативный интерфейс лучше полного его отсутствия.
Добавлено через 9 минут Хм. Сейчас посмотрел на одну из своих баз и внезапно увидел, что в клиентской части подстановки таки есть. А был момент, когда меня даже огорчило, что при разделении всё это кропотливое вырисовывание подстановок пропало. Такое впечатление, по крайней мере, засело в голове. Вот и не знаю, оно и не пропадало там или я его заново восстанавливал? Запутали вы меня!...
0
|
|
| 24.05.2016, 22:45 | |
|
Помогаю со студенческими работами здесь
80
Мастер подстановки на основе поля записи другой таблицы Зависимые поля в разных таблицах При создании поля подстановки тип данных автоматически устанавливается числовым Как в зависимости от значения поля таблицы выбрать источник для мастера подстановки ? КАК с 1 формы заполнять одинаковые поля в разных таблицах в access Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Рефакторинг программы уравнивания.
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 модель рабочего коллектива
Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
|