![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Код:
procedure TForm1.Button1Click(Sender: TObject); var n: integer; begin //Добавляем в дочернюю таблицу номер телефона ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Text := Format('INSERT INTO phones(Phone) VALUES(%s)',[QuotedStr(Edit3.Text)]); ADOQuery2.ExecSQL; //Получаем ID добавленной записи. ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Text := Format('SELECT Id_phone FROM phones WHERE Phone = (%s)',[QuotedStr(Edit3.Text)]); ADOQuery2.Active := true; n := ADOQuery2.Fields[0].AsInteger; Label4.Caption:=IntToStr(n); ADOQuery2.Active := false; //Добавляем данные в главную таблицу ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text := Format('INSERT INTO clients(name,soname,phone_id) VALUES(%s,%s,%s)',[QuotedStr(Edit1.Text),QuotedStr(Edit2.Text),QuotedStr(IntToStr(n))]); ADOQuery1.ExecSQL; //Обновляем обе таблицы ADOTable1.Active:=false; ADOTable1.Active:=true; ADOTable2.Active:=false; ADOTable2.Active:=true; end; Работает, но после удаления всех записей из обеих таблиц, начинает ругаться. перезапускаешь программу, снова добавляет записи... ![]() |
#2
|
||||
|
||||
![]() Каким образом ругается? Транзакции коммитятся после инсертов?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
![]() Вот так ругается
![]() |
#4
|
||||
|
||||
![]() Ну так ты ключи левые пытаешься заинсертить, вот тебе и выдает ошибку.
Используй сиквенс, из него подбирай нужный ключ на связные таблицы. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
![]() Сори, я никогда с БД раньше не работал, можно немного подробнее.
![]() ![]() |
#6
|
||||
|
||||
![]() Почитай: http://citforum.ru/database/osbd/contents.shtml
Когда поймешь, что такое уникальный ключ и внешний ключ - вопрос отпадет. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Gmail (25.01.2013)
|
#7
|
|||
|
|||
![]() Хм... Прочитал, сопоставил, вроде всё правильно у меня...
phone_id (FK) ----> id_phone (PK) Clients id (PK) name soname phone_id (FK) Phone id_phone (PK) phone |