|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Delphi 7 и MS Access
Всех приветствую. У меня есть инструкция по связыванию элементов таблиц в Delphi, которые созданы с помощью Database Desktop (формат .db). Однако чтобы не заморачиваться я создал БД в MS Access (формат .mdb) и подключил к Delphi,к слову,всё заработало. Но пришёл я к тому,что не знаю как перенести связи между таблицами с MS Access в Delphi. Есть ли у кого идеи как это сделать?Или они сразу тоже переносятся вместе с таблицами?
|
#2
|
||||
|
||||
Цитата:
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#3
|
|||
|
|||
Цитата:
И ещё вопрос: в MasterFields выскакивает ошибка,что аргументы имеют неверный тип или конфликтуют. У главной таблицы нужная столбца-это ключ(т.е. число), поэтому тип столбца я поставил число,но ошибка осталась. |
#4
|
|||
|
|||
Тут такой вопрос, а ты в правльном направлении связываешь таблицы? Вообще, MsterSource используется для реализации отношения Master-Details. Случай, когда у тебя много мастеров и одна таблица деталей я даже представить не могу. Обычно такое делается для справочников или сборок (в терминах ERD), но там отдельные поля ключей и другое направление связей. Т.е. похоже, что ты делаешь что-то не то...
Короче, что бы дать тебе толковый совет, нужно больше информации о том, что же ты конкретно делаешь... |
#5
|
||||
|
||||
Цитата:
Цитата:
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#6
|
||||
|
||||
Я делал пару раз утилиты переноса связанных данных. Ничего страшно сложного нет. При переносе данных мастер-записи (равно как и слэйв-записи) получат новые коды (как автоинкремент назначит). В детальной таблице есть поле "Код мастер-записи" (можно называть его "ID", это как угодно). Нужно не просто скопировать данные двух таблиц, но ещё для записей подчинённой таблицы в упомянутое поле "Код мастер-записи" вбить новые коды, а именно коды мастера в таблице-приёмнике. А для этого надо перебрать все записи в подчинённой таблице-приёмнике, и при этом:
1. Найти такую же слэйв-запись в источнике и оттуда узнать код мастер-записи (Locate по основным полям). 2. Найти мастер-запись в источнике по её известному коду (Locate по полю "Код"). 3. Найти эту же мастер-запись в приёмнике (Locate по основным полям) и получить её код. 4. Этот код вбить в поле "Код мастер-записи" приёмника. Все эти манипуляции необходимы потому, что поле "Код", или "ID", идентифицирующее записи, - автоинкрементное, в итоге при переносе данных в приёмнике получатся совсем не такие коды записей, как в источнике, потому связь по кодам из источника в приёмнике не проканает. Последний раз редактировалось Guaho, 30.09.2019 в 00:53. |