|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Здравствуйте! Делаю следующее. Программно формирую отношения (Relations) между таблицами. Все выполняется хорошо. Теперь нужно, чтобы эти Relations проявились в схеме данных. Также программно. Если это требуется в текущей БД, то делаю так Код: vbnet 1. 2. 3. 4. 5. 6.
При этом происходит мгновенное мелькание, так как окно схемы данных открывается-обновляется-сохраняется-закрывается. В связи с этим такие вопросы: 1. Есть ли способ программной визуализации новых Relations лучше/правильнее представленного? Если есть, то какой? 2. Этот способ визуализации новых Relations не подходит, если работа выполняется в отношении другой, внешней БД, определенной через Код: vbnet 1.
Как быть в этом случае? Есть ли возможность программно воздействовать на схему данных во внешней БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 11:46 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__MichelleПри этом происходит мгновенное мелькание, может достаточно будет тот код с DoCmd "заключить" в Код: vbnet 1. 2. 3.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 12:04 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Echo,, Да при чем тут это? Мигание я упомянула для обрисовки общей картины. Его практически нет. Суть вопроса в другом. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 12:07 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Поясню. Суть вопроса - как работать со схемой данных программно без имитации ручных действий . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 12:16 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__MichelleEcho,, Да при чем тут это? Мигание я упомянула для обрисовки общей картины. Его практически нет. Суть вопроса в другом.таа, "суть вопроса" - понятна Непонятна "суть ответа" :) Relationships Window - это "составная часть" Акцесса (как какое-нибудь меню или форма) Поэтому про п.2 - просто смешно говорить! - Открываете свою "внешнюю БД" в Акцессе и делаете всё тоже, что и НЕ во внешней. по п.1 - вполне нормальный вариант. Лучше Акс не предоставляет :) пс хуже - есть , но Вам не понравится ... даа и "несработало" на А2010 у меня, видимо класс Relationships Window уже не "OSysRel" ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 13:03 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Echo,... даа и "несработало" на А2010 у меня, видимо класс Relationships Window уже не "OSysRel" вдруг кто захочет поиграться нужно в вызове Код: vbnet 1.
заменить "Relationships" на тайтл формы в своей локализации, или просто vbNullString Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 14:45 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Echo,, Спасибо большое. Простите за молчание. Пока другие дела. Надо подумать, потом отвечу. Про Лебанса тут https://bytes.com/topic/access/answers/502925-access-relationships-window-proper-layout видела, но саму штуку пока не смотрела. Может, это и есть у Лебанса, но вдруг Вы знаете по-другому - как программно выстраивать элементы в окне схемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 15:02 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__MichelleМожет, это и есть у Лебанса, но вдруг Вы знаете по-другому - как программно выстраивать элементы в окне схемы? Да, в A2KSave-Restore-Modify-RelationshipWindowLayoutver9.mdb, функция RestoreLayout в модуле формы. Там, правда, элементы выстраиваются по хранящимся в таблице координатам, но ничего не мешает их "строить" просто по какой-то логике, - от 1 к М ... но всё на ВинАПИ, предупреждаю :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 15:18 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Echo,Да, в A2KSave-Restore-Modify-RelationshipWindowLayoutver9.mdb, функция RestoreLayout в модуле формы. Там, правда, элементы выстраиваются по хранящимся в таблице координатам, но ничего не мешает их "строить" просто по какой-то логике, - от 1 к М ... но всё на ВинАПИ, предупреждаю :)Посмотрела, наконец, хоть и бегло. Спасибо-спасибо! Очень понравилось.))) API не пугают, приходилось применять. Тут разобраться можно, думаю. Каждому прямоугольничку дескриптор окна присваивается и задаются координаты и размеры? Про основное потом... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 19:55 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Echo,Relationships Window - это "составная часть" Акцесса (как какое-нибудь меню или форма) Поэтому про п.2 - просто смешно говорить! - Открываете свою "внешнюю БД" в Акцессе и делаете всё тоже, что и НЕ во внешней. Вот как раз и не хотелось открывать новый Application. Думала, можно как-то добраться и через DBEngine.OpenDatabase, тем более, что новые Relations во "внешней БД" таким образом прекрасно создаются: DBEngine —> Workspaces —> Databases —> Relations. И картинка схемы БД ведь строится по какому-то где-то хранящемуся описанию, то есть признак "Отобразить все" где-то проставляется. Вот до него и хотелось добраться программно.))) Ну, что ж. Нельзя, так нельзя. Вот так, конечно, все получается Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Только обязательно Application.Visible = True, иначе отработает без ошибок, но изменения схемы не сохранит. Echo,, а почему это "про п.2 - просто смешно говорить!", а не уметь убрать мерцание (как Вы про меня сначала подумали) не смешно?))) Echo,, еще раз большое спасибо за участие и очень полезную информацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 12:03 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Возникли попутно еще некоторые вопросы, относятся к Relations. Для новой темы, наверное, маловато, и, вообще, чистая теория, задам здесь. Влияет ли, и если влияет, то как, наличие связей на скорость обработки? Вот, например, есть основная таблица и ряд справочников, связанных с основной отношением 1 (справочник - счетчик) : М (осн.табл. - дл.целое). При этом задавать обеспечение целостности данных смысла нет ни для изменения, ни для удаления (невозможность удаления из справочника используемого значения обеспечивается программно в другом месте). В запросах нужные значения из справочников подтягиваются через JOIN'ы. И фактически прорисованные в схеме данных связи играют чисто иллюстративную роль. Но не вредят ли, не тормозят ли где-нибудь? Или, наоборот, ускоряют? Или вот. Основная таблица и ряд детализирующих таблиц. Тут уже отношения 1 (осн.табл. - счетчик) : М (детал.табл. - дл.целое). И каскадное удаление связанных записей. Но каскадное обновление смысла, очевидно, не имеет. Однако, по ошибке или по инерции задано. Влияет ли наличие этого ненужного каскадного обновления на скорость обработки? Нужно ли его вычистить или все равно? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 12:34 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__MichelleВозникли попутно еще некоторые вопросы, относятся к Relations. Для новой темы, наверное, маловато, и, вообще, чистая теория, задам здесь. Влияет ли, и если влияет, то как, наличие связей на скорость обработки? Вот, например, есть основная таблица и ряд справочников, связанных с основной отношением 1 (справочник - счетчик) : М (осн.табл. - дл.целое). При этом задавать обеспечение целостности данных смысла нет ни для изменения, ни для удаления (невозможность удаления из справочника используемого значения обеспечивается программно в другом месте). В запросах нужные значения из справочников подтягиваются через JOIN'ы. И фактически прорисованные в схеме данных связи играют чисто иллюстративную роль. Но не вредят ли, не тормозят ли где-нибудь? Или, наоборот, ускоряют? Или вот. Основная таблица и ряд детализирующих таблиц. Тут уже отношения 1 (осн.табл. - счетчик) : М (детал.табл. - дл.целое). И каскадное удаление связанных записей. Но каскадное обновление смысла, очевидно, не имеет. Однако, по ошибке или по инерции задано. Влияет ли наличие этого ненужного каскадного обновления на скорость обработки? Нужно ли его вычистить или все равно? Никогда не создаю схему данных. Почему? Отвечаю: 1 Под ногами сразу же начинает мыкаться такое понятие как каскадное удаление и прочаяя внутренняя мишура Accessa, что очень томозит ядро. 2 Связи только на уровне запросов и то программных, не сохраненных. 3 Чтобы показать схему данных заказчику (если он конечно понимает) делаю в Visio С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 13:42 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
ROI, Спасибо. Интересно. Тоже вот постепенно возникают сомнения в необходимости прорисовывания связей. Если все в программе аккуратно отслеживать, то и без них все получается. Но действительно ли они скорее вредны? Запросы тоже предпочитаю формировать программно, хоть и считается, что сохраненные как-то там оптимизируются. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 14:11 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__MichelleROI, Спасибо. Интересно. Тоже вот постепенно возникают сомнения в необходимости прорисовывания связей. Если все в программе аккуратно отслеживать, то и без них все получается. Но действительно ли они скорее вредны? Запросы тоже предпочитаю формировать программно, хоть и считается, что сохраненные как-то там оптимизируются. Да действительно они вредны. Это есть у Гетца. Изюменка в том, что ядро очень сильно на них отвлекается (ну очень ). Это поверка целостности и корректности связей преславутая возможность каскадного удаления и прочее прочее (отслеживание изменений название полей). В общем гадость редкостная (тормоза и глюки редкостные) С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 14:36 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
ROI__MichelleROI, Спасибо. Интересно. Тоже вот постепенно возникают сомнения в необходимости прорисовывания связей. Если все в программе аккуратно отслеживать, то и без них все получается. Но действительно ли они скорее вредны? Запросы тоже предпочитаю формировать программно, хоть и считается, что сохраненные как-то там оптимизируются. Да действительно они вредны. Это есть у Гетца. Изюменка в том, что ядро очень сильно на них отвлекается (ну очень ). Это поверка целостности и корректности связей преславутая возможность каскадного удаления и прочее прочее (отслеживание изменений название полей). В общем гадость редкостная (тормоза и глюки редкостные) С уважением. В настройках базы отключаю это все. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 14:43 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
ROI__MichelleROI, Спасибо. Интересно. Тоже вот постепенно возникают сомнения в необходимости прорисовывания связей. Если все в программе аккуратно отслеживать, то и без них все получается. Но действительно ли они скорее вредны? Запросы тоже предпочитаю формировать программно, хоть и считается, что сохраненные как-то там оптимизируются. Да действительно они вредны. Это есть у Гетца. Изюменка в том, что ядро очень сильно на них отвлекается (ну очень ). Это поверка целостности и корректности связей преславутая возможность каскадного удаления и прочее прочее (отслеживание изменений название полей). В общем гадость редкостная (тормоза и глюки редкостные) С уважением. Работаю на Access 2010. Все устраивает (нарадоваться не могу). Одна только цветовая гамма чего стоит (как вспомню 2003 и XP вырви глаз из 16 цветов) Ну, а распределение контролов по сетке как на WEB странице и которые сами масштабируются. Ну, а формы навигации (не надо панель меню отдельно создавать ) Много хорошего могу сказать (добротный инструмент) С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 14:53 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Даа... Пора покупать девочке sql-сервер. Как быстро летит время... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 17:55 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Ну-да, ну-да. В реляционных базах данных эти самые "реляции" абсолютно бесполезная веcчь. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 19:01 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
PredeclaredНу-да, ну-да. В реляционных базах данных эти самые "реляции" абсолютно бесполезная веcчь. :)Да вот потому и вопросы возникают, что, по идее, полезная, но некоторые моменты неясны мне. Не могли бы Вы высказать свое мнение вот по этому 19380114 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 19:18 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
ROIДа действительно они вредны. Это есть у Гетца. Изюменка в том, что ядро очень сильно на них отвлекается (ну очень ). Это поверка целостности и корректности связей преславутая возможность каскадного удаления и прочее прочее (отслеживание изменений название полей). В общем гадость редкостная (тормоза и глюки редкостные) - мое мнение абсолютно диаметрально противоположное... - не знаю чё там у Гетца по этому поводу (и хотелось бы поконкретнее, а не просто, что это есть)... - я с этим столкнулся конкретно на практике и на приличных объемах... - Был у меня хозяйтсвенный магазин среднего размера, работал как часы года три, за это время несколько раз менялись хозяева (перепродажа бизнеса) и вот наконец пришло руководство с иконой 1С - решили перейти на этого бренда, нашли контору, которая согласилась из моей программы перенести все остатки и продажи за текущий год (6 месяцев) и типа плавно за ! 300 000 р (с учетом всех работ) перейти на 1С... и вот пробил час - открыли магазин, побибикали пол часа в 1С и поняли. что это тормоза, что результат продаж только в конце смены (у меня всё онлайн) и что моя трех летка летает в онлайне как пуля по сравнению с их полугодовалой черепахой... - в общем, внедрятели уехали ни с чем, а бабло то уже съедено, через месяц хозяева в суд, разрабы опять на неделю в магазин на доработку, потом мне хозяева звонят и говорят типа подъедь, есть вопросы... - короче в договоре с разрабами был пункт, что внедряемое ПО должно быть не хуже по возможностям и производительности чем существующее (моё) - а вопрос в том, что их по работает медленно, а моё теперь стало работать еще медленнее чем их, и типа, что делать теперь, бабки заплатили, а стало хуже в общем и целом... - оказалось всё просто - их программер взял и тупо почикал основные связи по веткам прихода и продажи, а индексированные ключи-счетчики сделал просто счетчиками... и оказалось что все запросы на базе нескольких таблиц превратились тупо в телеги с несмазанными колесами... часа два провозился, пока всё восстановил и опять всё полетело и зашуршало... - чтобы все это стало очевидно, нужно юзать базу по сетке с объемом записей в таблицах от 100 000 шт. и выше... + при нормальной схеме с полными связями гарантировано не будет мусора (хотите вы этого или нет) Ну а дальше каждый решает сам... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 19:47 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
vmag, По сети работает. Есть таблица с 200 000 записей (самая большая по числу записей, но не по количеству полей). Связи все есть. И индексы. Меня интересуют детали отношений. В частности Влияет ли наличие этого ненужного (и которое никогда не произойдет, потому что PK - счетчик) каскадного обновления на скорость обработки? Необходимо ли его вычистить или все равно? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 20:10 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
vmagROIДа действительно они вредны. Это есть у Гетца. Изюменка в том, что ядро очень сильно на них отвлекается (ну очень ). Это поверка целостности и корректности связей преславутая возможность каскадного удаления и прочее прочее (отслеживание изменений название полей). В общем гадость редкостная (тормоза и глюки редкостные) - не знаю чё там у Гетца по этому поводу (и хотелось бы поконкретнее, а не просто, что это есть)...Да. Присоединяюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 20:12 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
vmag, Там восклицательный знак, а выглядит как миллион триста тысяч.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 20:15 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Я не замечал особой разницы в скорости работы баз со связями и без, но часто замечал в базах без связей нарушения целостности данных, в результате которых скорость отодвигалась на 10-й план - просто программа работала не так, как было нужно. Если бы были связи, то все вылезло бы в виде ошибок гораздо раньше и компания не теряла бы денег. В моих разработках я всегда прорисовываю все связи очень тщательно, с каскадными удалениями и т.п. Это зачастую выручает, т.к. все баги отловить невозможно и ингода после нескольких лет эксплуатации срабатывает связь, генерируя ошибку, которой быть не должно. Выясняется, что это был такой баг, который не видели годами. Проблема в программе при этом не нарушила базу. Никогда в серьезных проектах не использую аксовскую схему данных не только для просмотра (очень неудобная), но и для создания связей. Всегда генерирую SQL скрипты для создания/изменения базы в CAD типа PowerDesigner - ERWin/BPWin. Схемы в там читаются очень хорошо, а скрипты очень удобно накатывать на бэкэнд в разделенных базах - клиенту достаточно выгнать пользователей и запустить скрипт, который все сделает без потери данных. Маленькая хитрость - DAO не поддерживает DDL с каскадными связями, только ADO. в PowerDesigner, например, пришлось подкручивать конфигурационные файлы, чтобы начал генерировать каскадные связи для акса. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 20:36 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Мое мнение насчет обязательности связей категорично, наверное, потому что я сначала получил хороший опыт разработки SQL баз, а Акс был уже потом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 20:40 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
MrShin....Маленькая хитрость - DAO не поддерживает DDL с каскадными связями, только ADO. в PowerDesigner, например, пришлось подкручивать конфигурационные файлы, чтобы начал генерировать каскадные связи для акса.А так Код: vbnet 1. 2. 3.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 21:05 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__Michelle, Это все равно, что программировать на ассемблере. Я скрипты для создания баз в большинстве своем даже не пишу руками, мне их генерирует CAD. Я говорил именно про скрипты с командами DDL, на VBA можно сделать практически все, но это будет код, который сложно поддерживать и очень сложно в нем разбираться. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 21:19 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__Michelle, Всё, что я говорил не относится к базам данных из 3-10 таблиц, на рисунке один из моих самых сложных проектов (магазин + услуги + ресторан) и в схеме данных только те таблицы, которые включены в схему данных (две трети)... Довольно шустро всё летает и даже на самых простеньких старых компах, а если убрать все веревки, то придется дописывать приложение примерно на в два раза больше, чтоб спастись от мусора и полной каши и таким шустрым оно точно уже не будет... Единственное с чем согласен (с ROI) только в другом разрезе - сложность любого агрегата прямо пропорциональна его хрупкости, сейчас всем клиентам выкручиваю руки, чтобы на всех компах (если не ноутбуки) стояли бесперебойники (если в БД только таблицы, то вероятность разрушения связей, индексов и в общем БД гораздо меньше). Это как карбюраторная машина и инжекторная - после ядерного взрыва первая завелась и поехала, а у второй в результате ЭМИ сгорела вся электроника... Но я предпочитаю ездить на инжекторе... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 23:23 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
ROIДа действительно они вредны. Это есть у Гетца.ROI, Вы не могли бы дать ссылку или хотя бы цитату привести? А то я поискала в "Сборник рецептов для профессионалов", правда, на английском ("Acces Cookbook") и в "Разработка настольных приложений в Access". Но такого не нашла. Подскажите, куда смотреть, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 08:43 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
vmag, Извиняюсь, что не в тему. Хотел узнать, как же вы разбираетесь в базе с такими короткими именами таблиц и колонок? Или это наследие Dbase с 8-ми символьным ограничением? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 13:05 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
MrShinИзвиняюсь, что не в тему. Хотел узнать, как же вы разбираетесь в базе с такими короткими именами таблиц и колонок? так код писать проще и короче, а есть ещё такие вещи в таблицах как подписи и коментарии ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 14:27 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__Michelle... Влияет ли, и если влияет, то как, наличие связей на скорость обработки?... Влияет. Как? Однозначного ответа в такой постановке вопроса не может быть априори. Рассмотрим, например, лишь один момент. При добавлении связи в таблицу с FK добавляется индекс, если он не был добавлен до этого вручную. Как наличие индекса влияет на "скорость обработки"? По-разному на разных операциях. __Michelle...Вот, например, есть основная таблица и ряд справочников, связанных с основной отношением 1 (справочник - счетчик) : М (осн.табл. - дл.целое). При этом задавать обеспечение целостности данных смысла нет ... для удаления (невозможность удаления из справочника используемого значения обеспечивается программно в другом месте)... Неужели вы всерьез рассчитываете, что ваше vba-решение будет работать надежнее проверенного десятилетиями механизма Jet? __MichelleИли вот. Основная таблица и ряд детализирующих таблиц... ...Но каскадное обновление смысла, очевидно, не имеет. Однако, по ошибке или по инерции задано. Влияет ли наличие этого ненужного каскадного обновления на скорость обработки? Нужно ли его вычистить или все равно? Не проверял, но вычистить нужно! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 21:19 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Predeclared__Michelle... Влияет ли, и если влияет, то как, наличие связей на скорость обработки?... Влияет. Как? Однозначного ответа в такой постановке вопроса не может быть априори. Рассмотрим, например, лишь один момент. При добавлении связи в таблицу с FK добавляется индекс, если он не был добавлен до этого вручную. Как наличие индекса влияет на "скорость обработки"? По-разному на разных операциях.С влиянием существующих индексов более-менее ясно. Но вот сейчас провела эксперимент. Убрала связь, убрала индекс, соответствовавший FK, снова создала ту же связь. Индекс - не появился. Что бы это значило??? Predeclared__Michelle...Вот, например, есть основная таблица и ряд справочников, связанных с основной отношением 1 (справочник - счетчик) : М (осн.табл. - дл.целое). При этом задавать обеспечение целостности данных смысла нет ... для удаления (невозможность удаления из справочника используемого значения обеспечивается программно в другом месте)... Неужели вы всерьез рассчитываете, что ваше vba-решение будет работать надежнее проверенного десятилетиями механизма Jet?Нет. Я, видимо, плохо объяснила. Попробую на примере. Допустим, есть табличка-справочник фамилий с двумя полями. И есть большая таблица с множеством полей, в том числе и поле с ключом из справочника фамилий. То есть, в справочнике PK, в большой таблице FK (1:M). Но разве можно ставить в зависимость от удаления записи из справочника удаление записи из большой таблицы? Поэтому и не выставляется флаг каскадного удаления. При этом в специальной форме работы со справочником дозволяется удаление только "свободных" значений. Вот и вопрос. Надо ли прорисовывать такую связь? Чего больше, пользы или вреда? Predeclared__MichelleИли вот. Основная таблица и ряд детализирующих таблиц... ...Но каскадное обновление смысла, очевидно, не имеет. Однако, по ошибке или по инерции задано. Влияет ли наличие этого ненужного каскадного обновления на скорость обработки? Нужно ли его вычистить или все равно? Не проверял, но вычистить нужно! :)Спасибо. Тоже так думаю.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 22:05 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__MichelleНо разве можно ставить в зависимость от удаления записи из справочника удаление записи из большой таблицы? Я для себя решил, что НУЖНО ! Если было: Иванов - герой Петров - дуралей А после удаления фамилий из справочника стало: - герой - дуралей то очевидно, что это уже ни о чем (мусор) Я поступаю так (способ первый): - если в справочнике подчиненных нет - молча удаляю - если подчиненные есть - предупреждаю и переспрашиваю Способ второй: - у главной записи добавляем признак (живая/удаленная) - по кнопке удалить тупо меняем признак и больше эту запись и всю ветку в низ не показываем нигде Какой способ применять обычно решаю сам в зависимости от важности сносимой информации, но приоритет способу 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 22:26 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
предвкушая вопрос - Зачем способ 2, привожу пример: - в магазинах, например, приличная текучка с продавцами... - чек закрепляется за продавцом (из справочника естессссно) - если тупо снести каскадно продавца, то умрут и его чеки с проданным товаром... - по этому у продавца тупо ставим галочку уволен и всё, его история осталась, а выбрать его в программе для продажи уже нельзя... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 22:35 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__Michelle... Но вот сейчас провела эксперимент. Убрала связь, убрала индекс, соответствовавший FK, снова создала ту же связь. Индекс - не появился. Что бы это значило??? ... Я ожидал этот вопрос. Как проверяли наличие индекса? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 22:37 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
vmag, А я решила, что из подобных справочников удаляются только неиспользуемые значения. В форме работы со справочником для каждого значения показано, где, в каком журнале применено и в каком количестве. Заодно и частотность видна. Плюс есть возможность редактирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 22:41 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Predeclared, Проверяла не программно. Глазами. В конструкторе таблицы вызвала окно индексов. А где закопано?))) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 22:43 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__Michelle, Так надежней: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 22:47 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__MichelleА я решила, что из подобных справочников удаляются только неиспользуемые значения. практика показывает, что постановка задачи немного другая - юзеры хотят видеть только используемые значения, причем только те, которые актуальны на сей момент, вот и приходится давать им право принятия решения на снос ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 22:49 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Predeclared__Michelle, Так надежней: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Применила. Вылез только один индекс, основной, по счетчику. А по полю, которое FK, индекса нету. Тот же результат, что и глазами. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:00 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__Michelle... Тот же результат, что и глазами. Пример прицепите. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:04 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
vmag__MichelleА я решила, что из подобных справочников удаляются только неиспользуемые значения. практика показывает, что постановка задачи немного другая - юзеры хотят видеть только используемые значения, причем только те, которые актуальны на сей момент, вот и приходится давать им право принятия решения на сносУ меня другое мнение. Менять не собираюсь. Решение об удалении принимает и удаляет, само собой, пользователь. Но в заданных условиях, исключающих возникновение "мусора", как Вы выражаетесь.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:04 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__Michelle... Попробую на примере. Допустим, есть табличка-справочник фамилий с двумя полями. И есть большая таблица с множеством полей, в том числе и поле с ключом из справочника фамилий. То есть, в справочнике PK, в большой таблице FK (1:M). Но разве можно ставить в зависимость от удаления записи из справочника удаление записи из большой таблицы? Поэтому и не выставляется флаг каскадного удаления. ... В этом примере речь о каскадном удалении. Здесь оно, конечно, ни к чему. По первому вашему примере речь об обеспечение целостности данных. Я из цитаты вашего текста намеряно "вырезал" троеточием кусок о каскадном удалении, что бы не мешать все в кучу. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:10 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__MichelleУ меня другое мнение. Менять не собираюсь. Решение об удалении принимает и удаляет, само собой, пользователь. Но в заданных условиях, исключающих возникновение "мусора", как Вы выражаетесь.))) vmagЯ для себя решил, что НУЖНО ! Если было: Иванов - герой Петров - дуралей А после удаления фамилий из справочника стало: - герой - дуралей то очевидно, что это уже ни о чем (мусор) Я поступаю так (способ первый): - если в справочнике подчиненных нет - молча удаляю - если подчиненные есть - предупреждаю и переспрашиваю Вообще то наши мнения совпадают... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:32 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Predeclared__Michelle... Тот же результат, что и глазами. Пример прицепите.Уже не надо.))) Эксперимент продолжился. После задания обеспечения целостности (при этом ни каскадного обновления, ни каскадного удаления не задается) индекс "глазами" не появляется, но программно выскакивает. После снятия галки индекс исчез отовсюду. Можно ли как-то сделать, чтобы окно индексов показывало правду? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:32 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
vmagВообще то наши мнения совпадают...Вот и хорошо!))) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:33 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__Michelle... Можно ли как-то сделать, чтобы окно индексов показывало правду? Сделать свое окно. У Билли индусов другие приоритеты. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:39 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Predeclared......В этом примере речь о каскадном удалении. Здесь оно, конечно, ни к чему. По первому вашему примере речь об обеспечение целостности данных. Я из цитаты вашего текста намеряно "вырезал" троеточием кусок о каскадном удалении, что бы не мешать все в кучу.Этот пример был, чтобы спросить, нужны ли такие "пустые" связи в схеме? Как иллюстрация, наверное, да. Но приносят ли они какие-то обременения? Наверное, нет, или совсем незначительные? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:42 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__MichelleВот и хорошо!))) я кажется догадываюсь в чем проблема - вы совершенствуете свое ПО и иногда возникает необходимость в новых полях, таблицах и связях, а мотаться по клиентам - каблучков не напасёшься... могу дать совет: используйте вот это https://www.teamviewer.com/ru/ или аналоги... за работу (из дому) берите оплату на кошелек или карту... при не очень интенсивном использовании это бесплатно, при существенном можно и лицензию купить... я так уже несколько лет поддерживаю штаны в нескольких конторах ни разу там не быв физически ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:49 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__Michelle... Но приносят ли они какие-то обременения? Наверное, нет, или совсем незначительные? Не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 23:58 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
vmag, Учту. Спасибо.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 00:09 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
Predeclared__Michelle... Но приносят ли они какие-то обременения? Наверное, нет, или совсем незначительные? Не знаю.Что-то ROI молчит про тайные цитаты из Гетца... Есть ли они... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 00:12 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
__MichelleУчту. Спасибо.))) Если я угадал, то признаюсь, в своё время тоже мучился проблемой поднятия автоматом версий ПО при помощи всяких патчей рабочей БД и заменой управляющих программ и т.д., а потом прикинул, что есть два очень важных момента: 1. Это может стать дополнительной приличной статьей дохода. 2. Лучше, когда это делаешь лично и не думаешь о том, что у кого-то кривые руки (не то скачал, не то запустил, не там запустил). И тут, признаюсь поперло... - к одним лично езжу (отдельная такса: приезд + работа) в основном клиенты с которыми хорошие отношения и общие интересы (ипподром, охота, рыбалка...) - у кого есть интернет - по удаленке (созвонились, соединились - 10 минут на добавление таблицы, замену упр. модулей и проверку - с головой) - кто в караганде присылают в ночь базу в архиве и упр. программу, утром получают их обратно новые и вставляют на место с заменой... Просто ум и знания ничего не стоят - если за них никто не платит (се ля ви) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 00:26 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
vmag...И тут, признаюсь поперло...))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 00:31 |
|
Программная работа со схемой данных
|
|||
---|---|---|---|
#18+
vmag__MichelleНо разве можно ставить в зависимость от удаления записи из справочника удаление записи из большой таблицы? Я для себя решил, что НУЖНО ! Если было: Иванов - герой Петров - дуралей А после удаления фамилий из справочника стало: - герой - дуралей то очевидно, что это уже ни о чем (мусор) Я поступаю так (способ первый): - если в справочнике подчиненных нет - молча удаляю - если подчиненные есть - предупреждаю и переспрашиваю Способ второй: - у главной записи добавляем признак (живая/удаленная) - по кнопке удалить тупо меняем признак и больше эту запись и всю ветку в низ не показываем нигде Включение ссылочной целостности не включает автоматом каскадное удаление. При включенной целостности база просто не даст удалить запись из справочника при наличии ссылок на нее в основной таблице, ничего при этом не удалив. Включение же каскадного удаления целиком и полностью зависит от данных в таблицах. Если это классический справочник, типа города-страны, естественно не нужно никакого каскадного удаления. А если "справочник" - это, например, заголовок инвойса, а "основная" таблица - это детали этого инвойса с товарами, то при удалении заголовка детали должны быть обязательно удалены, вот тут каскадное удаление и включаем. Если же в "справочнике", например, сотрудники, то каскадное удаление нужно будет делать например, в таблице с адресами или телефонами этого сотрудника, но никак не инвойсами, которые он когда-то делал. Вместо удаления просто включаем признак удаления, как уже было замечено, и при вводе новых данных пользователям не показываем "удаленные" таким образом записи. Я вообще стараюсь ничего не удалять, если это хоть как-то может пригодиться ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 18:51 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1613376]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 176ms |
0 / 0 |