|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
ADO работа со связанными таблицами
Всем привет. Интересует best-practice в решении следующей задачи:
есть две таблицы связанные между собой. В первой хранится документ (заказ), во второй - изделия, связанные с определённым заказом. Как "по учебнику" реализуется оформление нового заказа? Интересуют нюансы связанные с порядком заполнения таблиц: в какую таблицу инфа попадает в первую очередь? p.s как реализовано у меня: 1) try BeginTrans 2) Post в первую таблицу самого документа (Пустого, т.е. без изделий) 3) Запоминаю ID документа-заказа 3) Post*N во вторую таблицу (N записей во вторую таблицу с привязкой по ключевому полю на выше запомненный ID) 4) CommitTrans 5) Except RollBackTrans |
#2
|
||||
|
||||
Ну в принципе все правильно.
Сначала родительская таблица, потом дочерние. Советую использовать запросы на прямую — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Uniq! (19.03.2014)
|
#3
|
||||
|
||||
Что значит на прямую? так?
Код:
Query.Sql.Text := 'Insert into...'; Query.ExecSQL; Я сейчас вообще в ADOTable реализовал всё. Ибо приложение несложное и особых функций в нём не предполагается. |
#4
|
||||
|
||||
Да, так нагляднее и удобнее, чем посты и аппенды.
Я для работы с бд вообще так сделал: Код:
function OpenQuery(const ASQLQuery: string; AParams: IParams = nil): IDataSet; begin Result := TInternalDataset.Create(ASQLQuery, AParams); end; procedure ExecSQL(const ASQLQuery: string; AParams: IParams = nil); var p: TParams; begin if Assigned(AParams) then p := AParams.Params else p := nil; Database.Execute(ASQLQuery, p); end; Использую так: Код:
ds := OpenQuery(SQL_LOAD_ЧЁТО_ТАМ, p); with ds.DataSet do begin First; while not Eof do begin ... — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |