Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2012, 12:36   #1
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию Интересное дело

суть вот в чем:
есть таблица бд Материалы (id,название,флаг класс, модуль, подкласс)

Объяснения: в таблице хранятся как классы материала, так и сами материалы. поле подкласс - числовое поле, равное id материала, чтобы определить родительский класс у класса или материала. Для примера: Класс асфальтобетон делится на классы: горячий, холодный и т.д. так же в них записываются и материалы.

Все отлично работает (необходим вывод в treeview в заданной иерархии).

Передо мной стала задача заполнить данный справочник (таблицу). Имеется файл эксель с этими самыми материалами вида
уровень вложенности, название, код
где уровень вложенности соответствует иерархии (чтобы понять что к чему относится). Для примера
уровень название код
1 Класс Материалы 0
2 Класс1 0
3 Материал 1788 12
2 Класс2 0
, что свидетельствует о том, что Класс 1 и Класс 2 являются дочерними для класса Класс материалы, а материал 1788 присутствует в классе Класс1.

Код 0 означает, что это класс материалов


И все было бы красиво и гладко, если бы уровни не прыгали вот так:
1
2
3
1
2
2
2
3
3
4
5
6
6
2
2
1
и не повторялись названия классов и материалов.

Как в данном случае автоматом загрузить справочник в таблицу бд?
googl вне форума Ответить с цитированием
Старый 16.05.2012, 12:56   #2
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию

как это реализовал я:
добавил в экселе в столбца: номер записи и родитель,
добавил в таблицу бд временное поле Номер
пронумеровал все записи по-порядку -номер записи
и в родителя проставил номера записей (в соответствие с иерархией)

иду по всем ячейкам.
при записи в базу проверяю номер родителя и достаю из базы id материала по этому номеру для того чтобы в таблицу бд в поле Подкласс записать id нужного родительского класса.

Вроде все гладко и хорошо. Но. Я не могу на 100% заявить, что алгоритм работает правильно, т.к. записей очень-очень много. Как вы считаете в чем могут быть проблемы? Единственное, что я вижу это неправильно проставленные в экселе номера родителей?
googl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
интересное условие (си) dukales Помощь студентам 4 01.09.2011 00:18
Интересное предложение !!!! Stolline Фриланс 0 20.04.2011 11:43
Интересное в сети Revival001 Свободное общение 12 21.11.2010 11:44
Интересное задание MaTpOc12 Помощь студентам 3 20.10.2010 18:10
интересное явление... involved Паскаль, Turbo Pascal, PascalABC.NET 2 07.08.2010 17:55