Здравствуйте. Подскажите пожалуйста, есть ли возможность выставить в опциях детализируюещему датасету, открываться когда происходит открытие "мастера"? Что-то я такого не нашел. Либо указать в IBConnection закрыться всем запросам. Вроде IBConn.CloseAllDataSet.
Спасибо.
Автоматическое открытие Detail DataSet`ов
-
- Сообщения: 4
- Зарегистрирован: Вт 27 сен 2011 06:31
Стандартных методов для таких операций не предусмотрено, однако Вы можете использовать нижеприведенные методы чтобы достичь нужного вами поведения
Кроме того вы можете создать наследника от TDataSource и перекрыв его методы добиться аналогичного поведения
Код: Выделить всё
function CloseAllDataSet(Connection: TCustomDAConnection): integer;
var
i: integer;
begin
result:= 0;
try
for i := 0 to Connection.DataSetCount - 1 do
if (Connection.DataSets[i] is TCustomDADataSet) and Connection.DataSets[i].Active then
begin
Connection.DataSets[i].Close;
inc(result);
end;
except
Result:= -1;
end;
end;
function OpenDetailDataSet(
MasterDataSet: TCustomDADataSet): integer;
var
i: integer;
begin
result:= 0;
try
for i := 0 to MasterDataSet.Connection.DataSetCount - 1 do
begin
if Assigned(TCustomDADataSet(MasterDataSet.Connection.DataSets[i]).MasterSource) and
Assigned(TCustomDADataSet(MasterDataSet.Connection.DataSets[i]).MasterSource.DataSet) and
(TCustomDADataSet(MasterDataSet.Connection.DataSets[i]).MasterSource.DataSet = MasterDataSet) and
(not MasterDataSet.Connection.DataSets[i].Active) then
begin
MasterDataSet.Connection.DataSets[i].Open;
inc(result);
end;
end;
except
result := -1;
end;
end;
-
- Сообщения: 4
- Зарегистрирован: Вт 27 сен 2011 06:31