powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Из одной таблицы в другую
22 сообщений из 22, страница 1 из 1
Из одной таблицы в другую
    #39974156
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то сегодня с погодой-что ли:))
Никак не могу найти красивое решение для задачи:
Есть две таблицы MAIN0 и MAIN1 одинаковой структуры( древесной)
Code - счетчик, ключ
own - указатель на код вышестоящей ноды(детали)
codever - указатель из справочника на саму деталь
......
lev - глубина в дереве
pthh - полный путь к вершине

составной ключ из OWN и CODEVER

Надо периодически из MAIN0 перебрасывать по несколько тысяч записей в MAIN1 с обязательным сохранением структуры дерева и не нарушая целостность ключа.
До чего додумался
Вполне можно добавить в MAIN1 еще пару полей, снять составной ключ, скопировать записи запросом( code и own при этом записать в добавленные поля ), пройтись через VBA по добавленному и правильно расставить OWN, вернуть обратно ключ . Ну не нравится совсем мне это.... коряво как да и не по феншую-ключами жонглировать
Второй путь - те же поля добавить ,отсортировать в рекордсете нужные к добавлению записи по LEV. Грузить по одному уровню сверху и после загрузки одного уровня пробегать по загруженному и заполнять OWN..... То же не очень нравится....

Может есть более красивое решение?
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974189
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, забыл дополнить - в этих таблицах по нескольку(по много) отдельных деревьев, каждое со своей вершиной.
Перебрасываться будет одно дерево целиком.
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974204
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так и перекидываешь в цикле от корня, получая запросом новый код родительской ноды по её параметрам. Надеюсь, совокупности всех остальных полей, кроме кода и ссылки на родителя, достаточно для однозначной идентификации записи?
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974206
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Может есть более красивое решение?

Да нет, при такой структуре, других решений (только перечитывать и переписывать)
Всему виной (поле Code ака счетчик).
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974281
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Code - счетчик, ключ


Вот с этим вообще не понятно...
- если оно и там там значимый счетчик - то хоть застрелись, но оно должно писаться синхронно иначе не будет совпадать ни у деревьев, ни вообще (сама задача теряет смысл из-за ее не реализуемости)...
- Оно по крайней мере в одной из таблиц (куда пишут) не должно быть счетчиком, а должно быть тупо длинным целым, тогда можно получить точную копию среза (дерева)...
Ну и раз это не проблема:
Serg197311
Вполне можно добавить в MAIN1 еще пару полей

То в обе таблицы можно завести поле № Дерева, по которому можно будет отбирать все записи нужного дерева, особо не задумываясь, Ну а делать отдельную таблицу "Перечень Деревьев" или не делать зависит от целесообразности этого....
Зато удобно - ткнул в любую запись и можно:
1. сразу увидеть все дерево по № Дерева
2. копирнуть сразу все дерево одним запросом по № Дерева без всяких переборов и т.д.
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974283
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
в обе таблицы можно завести поле № Дерева
Вот только непонятно, как при этом формировать условие контроля целостности... не оставлять же это на откуп клиентской логике.
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974284
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
как при этом формировать условие контроля целостности...


В этом нет необходимости - в копии будет точный срез дерева...
В оригинале - да, и нужно в интерфейс вводить понятие Дерево, а если его до сих пор там нет, то вообще не понятно как они работают...
Например номером дерева для всего дерева может быть значение Счетчика самого верхнего узла
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974289
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
... Надо периодически из MAIN0 перебрасывать по несколько тысяч записей в MAIN1 с обязательным сохранением структуры дерева и не нарушая целостность ключа. ...

Что может послужить причиной нарушения целостности ключа?
Я что-то не догоняю, сори.

upd:
Смутно припоминается, что в версиях старше 2003 нельзя присваивать запросом значение счетчика. Оно?
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974298
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared
Что может послужить причиной нарушения целостности ключа?
Почему ключа-то? данных... ссылочная целостность в первую очередь.
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974303
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то это стандартная задача обмена удаленных точек через сервер...
Одна сторона делает приход локально со счетчиком и отправляет данные на сервер, где счетчик ложится в длинное целое...
Вторая сторона ловит приход локально с сервера тоже в не счетчик, а расход делает локально со счетчиком
и отправляет расход в не счетчик на сервер...
Первая сторона ловит с сервера расход тоже в не счетчик и так в цикле...
Дерево тут как вспомогательный параметр для макро манипуляций и счетчики уже по барабану ибо изначально все решено с ними
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974305
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
... данных... ссылочная целостность в первую очередь.

А почему она должна нарушиться при копировании сверху вниз (включая значения счетчика, поле Code)?
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974307
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared,

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

Serg197311
снять составной ключ, скопировать записи запросом( code и own при этом записать в добавленные поля ), пройтись через VBA по добавленному и правильно расставить OWN, вернуть обратно ключ .
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974308
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну ясень пень, что если для корректировки БД нужно туда-сюда менять структуру БД, то это значит, что со структурой уже что-то не так...
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974319
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311

....Есть две таблицы MAIN0 и MAIN1 одинаковой структуры ( древесной).....
С такой структурой Вы хотите создать БД. Удачи!
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974360
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311,
Если есть желание подправить структуру базы.
То используйте в качестве ключа GUID.
(а Code пущай остается для "сурогатной" сортировки )

Преимущества:
1 Уникальность в рамках всей базы.
2 Спокойная генерация и вставка на стороне клиента.
3 Без проблемное слияние добавление данных.
4 Прекрасно подходит для деревьев.
Давно пользую очень доволен.
С уважением.
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974378
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared
А почему она должна нарушиться при копировании сверху вниз (включая значения счетчика, поле Code)?
Я не о копировании, а о целостности данных. Хотя и в текущем исполнении записать в таблицу кольцо - как нефиг делать... для поправки хотя бы части потенциальных проблем надо хранить не номер дерева (ну или код корня, что по факту одно и то же), а URL узла.
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974388
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Может есть более красивое решение?

Используйте GUID и ничего править не надо будет.(Красиво будет)
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974414
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Может есть более красивое решение?


Удалите MAIN1 и добавьте в таблицу MAIN0 галочку, если она есть на записи, то значит эта запись виртуально есть и в MAIN1
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974710
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Serg197311

....Есть две таблицы MAIN0 и MAIN1 одинаковой структуры ( древесной).....
С такой структурой Вы хотите создать БД. Удачи!

Спасибо за пожелания.))
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974812
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
То в обе таблицы можно завести поле № Дерева, .

Ну несомненно - это уже есть, номера деревьев для обоих таблиц одинаковые
vmag

Зато удобно - ткнул в любую запись и можно:

2. копирнуть сразу все дерево одним запросом по № Дерева без всяких переборов и т.д.

А вот как это сделать просто - тут и был вопрос. Не со счетчиком, а со структурой дерева.
Но думаю, мой путь номер 2 поможет без манипуляций с ключом
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39974814
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
- Оно по крайней мере в одной из таблиц (куда пишут) не должно быть счетчиком, а должно быть тупо длинным целым, тогда можно получить точную копию среза (дерева)...

А вот это уже может быть реальной идеей..... Буду ее обдумывать....
...
Рейтинг: 0 / 0
Из одной таблицы в другую
    #39978781
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Второй путь - те же поля добавить ,отсортировать в рекордсете нужные к добавлению записи по LEV. Грузить по одному уровню сверху и после загрузки одного уровня пробегать по загруженному и заполнять OWN.....

На всякий случай сообщаю - этот путь работает, по нему и пойду
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Из одной таблицы в другую
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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