powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Программная работа со схемой данных
25 сообщений из 57, страница 1 из 3
Программная работа со схемой данных
    #39268638
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Делаю следующее.
Программно формирую отношения (Relations) между таблицами. Все выполняется хорошо.
Теперь нужно, чтобы эти Relations проявились в схеме данных. Также программно.
Если это требуется в текущей БД, то делаю так
Код: vbnet
1.
2.
3.
4.
5.
6.
  With DoCmd
   .RunCommand acCmdRelationships
   .RunCommand acCmdShowAllRelationships
   .RunCommand acCmdSaveLayout
   .RunCommand acCmdWindowHide
  End With

При этом происходит мгновенное мелькание,
так как окно схемы данных открывается-обновляется-сохраняется-закрывается.

В связи с этим такие вопросы:

1. Есть ли способ программной визуализации новых Relations лучше/правильнее представленного?
Если есть, то какой?
2. Этот способ визуализации новых Relations не подходит,
если работа выполняется в отношении другой, внешней БД, определенной через
Код: vbnet
1.
Set DB = DBEngine.OpenDatabase(<полное имя внешней БД>....)

Как быть в этом случае?
Есть ли возможность программно воздействовать на схему данных во внешней БД?
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39268664
Echo,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__MichelleПри этом происходит мгновенное мелькание,
может достаточно будет тот код с DoCmd "заключить" в
Код: vbnet
1.
2.
3.
Application.Echo False
...
Application.Echo True


?
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39268668
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Echo,,

Да при чем тут это?
Мигание я упомянула для обрисовки общей картины.
Его практически нет.
Суть вопроса в другом.
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39268681
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясню.
Суть вопроса - как работать со схемой данных программно без имитации ручных действий .
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39268749
Echo,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__MichelleEcho,,

Да при чем тут это?
Мигание я упомянула для обрисовки общей картины.
Его практически нет.
Суть вопроса в другом.таа, "суть вопроса" - понятна
Непонятна "суть ответа" :)

Relationships Window - это "составная часть" Акцесса (как какое-нибудь меню или форма)
Поэтому про п.2 - просто смешно говорить! - Открываете свою "внешнюю БД" в Акцессе и делаете всё тоже, что и НЕ во внешней.

по п.1 - вполне нормальный вариант.
Лучше Акс не предоставляет :)

пс
хуже - есть , но Вам не понравится
... даа и "несработало" на А2010 у меня, видимо класс Relationships Window уже не "OSysRel"
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39268918
Echo,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Echo,... даа и "несработало" на А2010 у меня, видимо класс Relationships Window уже не "OSysRel"
вдруг кто захочет поиграться
нужно в вызове
Код: vbnet
1.
hWndRel = FindWindowEx(hWndMDI, 0&, "OSysRel", "Relationships")


заменить "Relationships" на тайтл формы в своей локализации, или просто vbNullString
Код: vbnet
1.
hWndRel = FindWindowEx(hWndMDI, 0&, "OSysRel", vbNullString)
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39268953
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Echo,,

Спасибо большое. Простите за молчание. Пока другие дела.
Надо подумать, потом отвечу.
Про Лебанса тут https://bytes.com/topic/access/answers/502925-access-relationships-window-proper-layout видела,
но саму штуку пока не смотрела.

Может, это и есть у Лебанса, но вдруг Вы знаете по-другому -
как программно выстраивать элементы в окне схемы?
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39268976
Echo,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__MichelleМожет, это и есть у Лебанса, но вдруг Вы знаете по-другому -
как программно выстраивать элементы в окне схемы?
Да, в A2KSave-Restore-Modify-RelationshipWindowLayoutver9.mdb,
функция RestoreLayout в модуле формы.

Там, правда, элементы выстраиваются по хранящимся в таблице координатам, но ничего не мешает их "строить" просто по какой-то логике, - от 1 к М

... но всё на ВинАПИ, предупреждаю :)
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39269267
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Echo,Да, в A2KSave-Restore-Modify-RelationshipWindowLayoutver9.mdb,
функция RestoreLayout в модуле формы.

Там, правда, элементы выстраиваются по хранящимся в таблице координатам, но ничего не мешает их "строить" просто по какой-то логике, - от 1 к М

... но всё на ВинАПИ, предупреждаю :)Посмотрела, наконец, хоть и бегло.
Спасибо-спасибо! Очень понравилось.)))
API не пугают, приходилось применять. Тут разобраться можно, думаю.
Каждому прямоугольничку дескриптор окна присваивается и задаются координаты и размеры?

Про основное потом...
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39269593
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
 Dim A As Access.Application
 Set A = New Access.Application
 With A
  .Echo False
  .Visible = True
  .OpenCurrentDatabase <полное имя БД>
  .DoCmd.RunCommand acCmdRelationships
  .DoCmd.RunCommand acCmdShowAllRelationships
  .DoCmd.RunCommand acCmdSaveLayout
  .DoCmd.RunCommand acCmdWindowHide
  .CloseCurrentDatabase
 End With
 Set A = Nothing

Только обязательно Application.Visible = True, иначе отработает без ошибок, но изменения схемы не сохранит.

Echo,, а почему это "про п.2 - просто смешно говорить!", а не уметь убрать мерцание (как Вы про меня сначала подумали) не смешно?)))

Echo,, еще раз большое спасибо за участие и очень полезную информацию.
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39269624
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникли попутно еще некоторые вопросы, относятся к Relations.
Для новой темы, наверное, маловато, и, вообще, чистая теория, задам здесь.

Влияет ли, и если влияет, то как, наличие связей на скорость обработки?

Вот, например, есть основная таблица и ряд справочников,
связанных с основной отношением 1 (справочник - счетчик) : М (осн.табл. - дл.целое).
При этом задавать обеспечение целостности данных смысла нет ни для изменения,
ни для удаления (невозможность удаления из справочника используемого значения
обеспечивается программно в другом месте).
В запросах нужные значения из справочников подтягиваются через JOIN'ы.
И фактически прорисованные в схеме данных связи играют чисто иллюстративную роль.
Но не вредят ли, не тормозят ли где-нибудь? Или, наоборот, ускоряют?

Или вот. Основная таблица и ряд детализирующих таблиц.
Тут уже отношения 1 (осн.табл. - счетчик) : М (детал.табл. - дл.целое).
И каскадное удаление связанных записей.
Но каскадное обновление смысла, очевидно, не имеет. Однако, по ошибке или по инерции задано.
Влияет ли наличие этого ненужного каскадного обновления на скорость обработки?
Нужно ли его вычистить или все равно?
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39269750
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__MichelleВозникли попутно еще некоторые вопросы, относятся к Relations.
Для новой темы, наверное, маловато, и, вообще, чистая теория, задам здесь.

Влияет ли, и если влияет, то как, наличие связей на скорость обработки?

Вот, например, есть основная таблица и ряд справочников,
связанных с основной отношением 1 (справочник - счетчик) : М (осн.табл. - дл.целое).
При этом задавать обеспечение целостности данных смысла нет ни для изменения,
ни для удаления (невозможность удаления из справочника используемого значения
обеспечивается программно в другом месте).
В запросах нужные значения из справочников подтягиваются через JOIN'ы.
И фактически прорисованные в схеме данных связи играют чисто иллюстративную роль.
Но не вредят ли, не тормозят ли где-нибудь? Или, наоборот, ускоряют?

Или вот. Основная таблица и ряд детализирующих таблиц.
Тут уже отношения 1 (осн.табл. - счетчик) : М (детал.табл. - дл.целое).
И каскадное удаление связанных записей.
Но каскадное обновление смысла, очевидно, не имеет. Однако, по ошибке или по инерции задано.
Влияет ли наличие этого ненужного каскадного обновления на скорость обработки?
Нужно ли его вычистить или все равно?
Никогда не создаю схему данных.
Почему?
Отвечаю:
1 Под ногами сразу же начинает мыкаться такое понятие как каскадное удаление и прочаяя внутренняя мишура Accessa, что очень томозит ядро.
2 Связи только на уровне запросов и то программных, не сохраненных.
3 Чтобы показать схему данных заказчику (если он конечно понимает) делаю в Visio
С уважением.
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39269787
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI,

Спасибо. Интересно.
Тоже вот постепенно возникают сомнения в необходимости прорисовывания связей.
Если все в программе аккуратно отслеживать, то и без них все получается.
Но действительно ли они скорее вредны?
Запросы тоже предпочитаю формировать программно, хоть и считается,
что сохраненные как-то там оптимизируются.
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39269830
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__MichelleROI,

Спасибо. Интересно.
Тоже вот постепенно возникают сомнения в необходимости прорисовывания связей.
Если все в программе аккуратно отслеживать, то и без них все получается.
Но действительно ли они скорее вредны?
Запросы тоже предпочитаю формировать программно, хоть и считается,
что сохраненные как-то там оптимизируются.
Да действительно они вредны.
Это есть у Гетца.
Изюменка в том, что ядро очень сильно на них отвлекается (ну очень ).
Это поверка целостности и корректности связей преславутая возможность каскадного удаления и прочее прочее (отслеживание изменений название полей).
В общем гадость редкостная (тормоза и глюки редкостные)
С уважением.
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39269844
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI__MichelleROI,

Спасибо. Интересно.
Тоже вот постепенно возникают сомнения в необходимости прорисовывания связей.
Если все в программе аккуратно отслеживать, то и без них все получается.
Но действительно ли они скорее вредны?
Запросы тоже предпочитаю формировать программно, хоть и считается,
что сохраненные как-то там оптимизируются.
Да действительно они вредны.
Это есть у Гетца.
Изюменка в том, что ядро очень сильно на них отвлекается (ну очень ).
Это поверка целостности и корректности связей преславутая возможность каскадного удаления и прочее прочее (отслеживание изменений название полей).
В общем гадость редкостная (тормоза и глюки редкостные)
С уважением.
В настройках базы отключаю это все.
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39269867
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI__MichelleROI,

Спасибо. Интересно.
Тоже вот постепенно возникают сомнения в необходимости прорисовывания связей.
Если все в программе аккуратно отслеживать, то и без них все получается.
Но действительно ли они скорее вредны?
Запросы тоже предпочитаю формировать программно, хоть и считается,
что сохраненные как-то там оптимизируются.
Да действительно они вредны.
Это есть у Гетца.
Изюменка в том, что ядро очень сильно на них отвлекается (ну очень ).
Это поверка целостности и корректности связей преславутая возможность каскадного удаления и прочее прочее (отслеживание изменений название полей).
В общем гадость редкостная (тормоза и глюки редкостные)
С уважением.
Работаю на Access 2010.
Все устраивает (нарадоваться не могу).
Одна только цветовая гамма чего стоит (как вспомню 2003 и XP вырви глаз из 16 цветов)
Ну, а распределение контролов по сетке как на WEB странице и которые сами масштабируются.
Ну, а формы навигации (не надо панель меню отдельно создавать )
Много хорошего могу сказать (добротный инструмент)
С уважением.
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39270076
Фотография гурД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даа... Пора покупать девочке sql-сервер. Как быстро летит время...
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39270117
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну-да, ну-да.
В реляционных базах данных эти самые "реляции" абсолютно бесполезная веcчь.
:)
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39270124
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PredeclaredНу-да, ну-да.
В реляционных базах данных эти самые "реляции" абсолютно бесполезная веcчь.
:)Да вот потому и вопросы возникают, что, по идее, полезная, но некоторые моменты неясны мне.
Не могли бы Вы высказать свое мнение вот по этому 19380114 ?
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39270132
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIДа действительно они вредны.
Это есть у Гетца.
Изюменка в том, что ядро очень сильно на них отвлекается (ну очень ).
Это поверка целостности и корректности связей преславутая возможность каскадного удаления и прочее прочее (отслеживание изменений название полей).
В общем гадость редкостная (тормоза и глюки редкостные)

- мое мнение абсолютно диаметрально противоположное...
- не знаю чё там у Гетца по этому поводу (и хотелось бы поконкретнее, а не просто, что это есть)...
- я с этим столкнулся конкретно на практике и на приличных объемах...
- Был у меня хозяйтсвенный магазин среднего размера, работал как часы года три, за это время несколько раз менялись хозяева (перепродажа бизнеса) и вот наконец пришло руководство с иконой 1С - решили перейти на этого бренда, нашли контору, которая согласилась из моей программы перенести все остатки и продажи за текущий год (6 месяцев) и типа плавно за ! 300 000 р (с учетом всех работ) перейти на 1С...
и вот пробил час - открыли магазин, побибикали пол часа в 1С и поняли. что это тормоза, что результат продаж
только в конце смены (у меня всё онлайн) и что моя трех летка летает в онлайне как пуля по сравнению с их полугодовалой черепахой...
- в общем, внедрятели уехали ни с чем, а бабло то уже съедено, через месяц хозяева в суд, разрабы опять
на неделю в магазин на доработку, потом мне хозяева звонят и говорят типа подъедь, есть вопросы...
- короче в договоре с разрабами был пункт, что внедряемое ПО должно быть не хуже по возможностям
и производительности чем существующее (моё)
- а вопрос в том, что их по работает медленно, а моё теперь стало работать еще медленнее чем их, и типа,
что делать теперь, бабки заплатили, а стало хуже в общем и целом...
- оказалось всё просто - их программер взял и тупо почикал основные связи по веткам прихода и продажи,
а индексированные ключи-счетчики сделал просто счетчиками... и оказалось что все запросы на базе нескольких
таблиц превратились тупо в телеги с несмазанными колесами... часа два провозился, пока всё восстановил и
опять всё полетело и зашуршало...
- чтобы все это стало очевидно, нужно юзать базу по сетке с объемом записей в таблицах от 100 000 шт. и выше...
+ при нормальной схеме с полными связями гарантировано не будет мусора (хотите вы этого или нет)

Ну а дальше каждый решает сам...
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39270140
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

По сети работает.
Есть таблица с 200 000 записей (самая большая по числу записей, но не по количеству полей).
Связи все есть. И индексы.

Меня интересуют детали отношений. В частности
Влияет ли наличие этого ненужного (и которое никогда не произойдет, потому что PK - счетчик) каскадного обновления на скорость обработки?
Необходимо ли его вычистить или все равно?
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39270141
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagROIДа действительно они вредны.
Это есть у Гетца.
Изюменка в том, что ядро очень сильно на них отвлекается (ну очень ).
Это поверка целостности и корректности связей преславутая возможность каскадного удаления и прочее прочее (отслеживание изменений название полей).
В общем гадость редкостная (тормоза и глюки редкостные)
- не знаю чё там у Гетца по этому поводу (и хотелось бы поконкретнее, а не просто, что это есть)...Да. Присоединяюсь.
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39270142
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

Там восклицательный знак, а выглядит как миллион триста тысяч.)))
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39270146
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не замечал особой разницы в скорости работы баз со связями и без, но часто замечал в базах без связей нарушения целостности данных, в результате которых скорость отодвигалась на 10-й план - просто программа работала не так, как было нужно. Если бы были связи, то все вылезло бы в виде ошибок гораздо раньше и компания не теряла бы денег. В моих разработках я всегда прорисовываю все связи очень тщательно, с каскадными удалениями и т.п. Это зачастую выручает, т.к. все баги отловить невозможно и ингода после нескольких лет эксплуатации срабатывает связь, генерируя ошибку, которой быть не должно. Выясняется, что это был такой баг, который не видели годами. Проблема в программе при этом не нарушила базу.

Никогда в серьезных проектах не использую аксовскую схему данных не только для просмотра (очень неудобная), но и для создания связей. Всегда генерирую SQL скрипты для создания/изменения базы в CAD типа PowerDesigner - ERWin/BPWin. Схемы в там читаются очень хорошо, а скрипты очень удобно накатывать на бэкэнд в разделенных базах - клиенту достаточно выгнать пользователей и запустить скрипт, который все сделает без потери данных. Маленькая хитрость - DAO не поддерживает DDL с каскадными связями, только ADO. в PowerDesigner, например, пришлось подкручивать конфигурационные файлы, чтобы начал генерировать каскадные связи для акса.
...
Рейтинг: 0 / 0
Программная работа со схемой данных
    #39270147
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мое мнение насчет обязательности связей категорично, наверное, потому что я сначала получил хороший опыт разработки SQL баз, а Акс был уже потом.
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 1 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Программная работа со схемой данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]