Цитата:
Запись можно сделать так:
1. Запускаете транзакцию
2. Вносите информацию в главную таблицу
3. Получаете значение первичного ключа строки внесенной в п.2
4. Вносите данные в подчиненную таблицу используя значение, полученное в п.3.
5. Подтверждаете транзакцию
Для работы с Firebird, а так же InterBase, удобно использовать компоненты FIBPlus (http://devrace.com). На сайте разработчика есть разные статьи, например "FIBPlus: Особенности механизма master-detail при работе с InterBase и Firebird".
И есть хорошая книга "Мир InterBase", в сети видел электронную версию.
Цитата:
1. При вставке записи в основную таблицу получаем ID записи.
2. Начинаем транзакцию
3. Вставляем запись в основную таблицу.
4. Для каждой записи из подчинной таблице нужно использовать как часть ключа ID из п1.
5. Фиксация или откат транзакции.
Как это все проектировать читайте либо книжку по проектированию БД, книжку по IB которые указал gpi, либо PDF от 6-й версии (totorial, Data definition да и другие тоже). В свое время я по ним учился (только тогда 4.х) был.
Сделал все как вы посоветовали н мне прога выдает ошибку.
Добавлено:
Не успел добавить.
создал таблицу ну основную и там конечно есть ID поля автоинкременант он создается через генератор и другие поля штук 6. А потом создал подчененую таблицу с полями ID, MAIN_ID и ещё полей 7 штук. Здесь MAIN_ID для связи с осн.таблицой на первой таблицы создал первычный ключ к полю ID на втором создал первычный ключ к полю ID и внещний ключ MAIN_ID (ID->MAIN_ID).
Открыл Дельфи в дата модуле положил Датабейс, транзакцию и два датасета (естественно для интербейса). В первом датасете в SelectSQL написал
select * from MAIN
генератор поля устоновил
ну апдейт поля сделал.
На втором датасете в SelectSQL написал
select * from KONTROL
where main_id=:id
генератор поля устоновил
ну апдейт поля сделал.
в onNEWRECORDE написал qrKontrol['main_id']:=qrMain['id'];
в датасорсе установил датасорс первого Датасета. Потом сделал астивным все элементы.
Делаю компеляцию проги все без ощибки.
В форме есть дбгрид у него там датасоре написан датасорс первого датасета. В гриде все показывает нормално, но когда делаю бравз грида то тогда вылитает это ошибка.
"Access violation at address 00000000. Read of address 00000000"
Что это означает?