![]() |
#1 |
Учаснег
|
![]()
Продолжаются траблы с переводом с 2.5 на 3.0 - предыдущие серии см. на axforum.info
![]() С функционалом вроде закончил, теперь тренируюсь с перетаскиванием базы. Беру бэкап базы 2.5 , разворачиваю ее как новую БД, присоединяюсь к ней в трешке, провожу процедуру Upgrade-а. Проблема в том, что в одну таблицу - а именно в InventTable - добавили одно поле. Ну не удержались ![]() ![]() Но этот этап уже почти пройдет: все экспортируется и импортируется как надо. Беда начинается дальше. Как только открываешь ФОРМУ InventTable после завершения update-а - все items в ней представлены в тройном экземпляре. В базе данных они, естественно, в единственном числе. Очевидно, проблема происходит из-за того, что в форме таблица InventTablе связана с тремя датасорсами таблицы InventTableModule. И по какой-то необъяснимой причине вместо того, чтобы выводить одну строчку на каждую запись InventTable, как ей положено - она выводит одну на каждую запись InventTableModule. Как такое возможно - я не понимаю... Разумеется, параметры формы никто не трогал, еще вчера (!!!), с "предыдущей" базой, все было хоккей. Специально проверил - за прошедшие 24 часа никаких изменений в код и параметры формы и таблиц внесено не было... Может было у кого что-то подобное? Посоветуйте, люди добрые (и злые тоже ![]() ПыСы Специально для "юмористов": мамой клянусь, не пил ничего вчера ![]() ![]()
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#2 |
Учаснег
|
Да, и еще, попутно, заметил тут.
У InventTableModule как-то странно прописаны relations: InventTableModule.ItemId == InventTableModule.ItemId InventTableModule.ModuleTYpe == InventTableModule.ModuleType ??? Это что же - она сама с собой связана? Как это? Зачем так?
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#3 |
Участник
|
про связь саму с собой здесь писал EVGL.
это делается чтобы переименование работало. (пора в FAQ заносить ![]() Про подъем модификаций - похоже надо править процедуру апгрейда. чтобы оно понимало usr-поле. |
|
![]() |
#4 |
Учаснег
|
Цитата:
про связь саму с собой здесь писал EVGL.
это делается чтобы переименование работало. Цитата:
Про подъем модификаций - похоже надо править процедуру апгрейда. чтобы оно понимало usr-поле.
Но это все интерес попутный. Самый главный вопрос - че с троением делать-та ?
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#5 |
Участник
|
AKIS, прости, Акспты нет рядом чтобы проэкспериментировать...
А ты импортируешь только InventTable или вместе с InventTableModule? Прошу прощения, если болтнул глупость.
__________________
с уважением, Дмитрий. |
|
![]() |
#6 |
Учаснег
|
Привет!
Вопрос на самом деле никакая не "глупость", а очень даже правильный!!!! Дело в том, что когда Аксапта дроПит InventTable во время синхронизации (перед этим издевательски предлагая выбор "или дроПим, или все нафиг") - то одновременно очищается и InventTableModule! Видимо, она считает что раз таблицы связаны, и одна очистилась - то неча мусор хранить в другой. Довольно смелое предположение, надо сказать... В общем, я теперь ищу способ поднимать содержимое таблиц не в Аксапте, а прямо в сиквел-сервере, дабы избежать таких вот дурацких ситуаций... Может кстати, дело в этом, в том что я их поднял в Аксапте, и оно поднялось неправильно...
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#7 |
----------------
|
2 AKIS
Информация о структуре таблиц в Аксапте хранится в 2х местах: 1. Само приложение 2. Табличка SQLDictionary Если данные в этих источниках не совпадают происходит синхронизация. Если сильно не совпадают, то происходит удаление и пересоздание объекта. А если все это не совпадает со структурой на SQL, то при синхронизации (и даже просто при чтении из БД) происходит exception. Важным моментом является совпадение ID таблиц и полей. Так как при экспорте проектов из Аксапты 2.5 id объектов не попадает в файл, то при импорте в 3.0 Аксапта берет просто следующий свободный. И в результате id в приложении не совпадают с данными в SQLDictionary (в БД от 2.5). |
|
![]() |
#8 |
Учаснег
|
Wamr!
Спасибо за информацию
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#9 |
Учаснег
|
Сегодня наконец закончил еще один апдейт, с новой базой. Троение исчезло. Похоже, действительно дело было в некорректной загрузке InventTable и/или InventTableModule. Т.е. важно не только то какие данные грузятся, но и то КАК ИМЕННО они грузятся....
Попутно научился наконец импортировать-экспортировать данные непосредственно в сиквеле. Оказалось не так уж сложно ![]() Еще раз всем спасибо за ценные советы...
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#10 |
Banned
|
Кстати, в 90% случаев помогает функция SQL Administration/Check/Synchronize, которая и занимается тем, что корректирует неверные ID полей, пытаясь сопоставить поля по названию.
Функцию желательно запускать после Upgrade pre synchronize, но до Synchronize на сбойных таблицах. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|