Форум: "Базы";
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];
ВнизКак возвратить значение сгенерированного ID на клиента Найти похожие ветки
← →
SArthur (2001-12-28 10:41) [17]Обычно я так и делаю.
В смысле: вставка, запрос на ID, обновление грида (п.1 твоего письма). Такие оперции вполне можно использовать в режимах редактирования справочников. Там идет транзакция по одной, двум, редко - трем таблицам.
Там, где нужно вставить в несколько связанных таблиц, а где-нибуть что-либо апдейтнуть... Не-е-е... Там только хранимой процедурой. Во-первых, уменьшается сетевой траффик. Во вторых, эта самая процедура делает все и, в результате, ID тебе уже и не нужен. В третьих, программный код более читабельный:
var tq: TQuery;
Begin
...
tq:=TQuery.Create(nil);
try
tq.DatabaseName:="myDB_alias";
tq.SQL.Add("CALL MyBigInsert_Update_Proc(:prm1, :prm2)");
tq.ParamByName("prm1").AsInteger:=1;
tq.ParamByName("prm2").AsString :="text";
DataModule1.Database1.StartTransaction;
try
tq.ExecSQL; // или tq.Open, ежели есть результат
DataModule1.Database1.Commit;
except
On E: Exception do begin
DataModule1.Database1.Rollback;
// <error handler code>
end;
end;
finally
tq.Free;
end;
...
End;
Примерно так. И с BDE и с ADO работает.
Реализация MyBigInsert_Update_Proc напрямую зависит от используемого DB сервера.
Ну, это, поругайте код, что ли... :-)))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.004 c