function TSheetDataSetContainer.GetConnection: TConnection;
begin
Result := Master.Connection;
end;
function TSheetDataSetContainer.GetMaster: TSQLDataSet;
begin
Result := DataSets[0];
end;
function TSheetDataSetContainer.GetDataSetCount: Integer;
begin
if FDataSets = nil then
Result := 0
else
Result := Length(FDataSets);
end;
function TSheetDataSetContainer.GetDataSet(Index: Integer): TSQLDataSet;
begin
Result := FDataSets[Index];
end;
procedure TSheetDataSetContainer.UpdateRecords;
var
I: Integer;
begin
for I := 0 to DataSetCount - 1 do
begin
if (DataSets[I] <> nil) and
(DataSets[I].State in [TDataSetState.dsEdit, TDataSetState.dsInsert]) and
DataSets[I].Modified then
begin
DataSets[I].UpdateRecord;
DataSets[I].Post;
end;
end;
end;
function TSheetDataSetContainer.ConfirmUpdates: Boolean;
begin
Result := True;
if UpdatesPending then
case JSDialogs.QuestionBox('数据已经被修改,是否保存?', Forms.Application.Title, 1) of
Borland.Delphi.Windows.IDYES:
ApplyUpdates;
Borland.Delphi.Windows.IDNO:
CancelUpdates;
else
Result := False;
end;
end;
function TSheetDataSetContainer.UpdatesPending: boolean;
var
I: Integer;
begin
for I := 0 to DataSetCount - 1 do
if (DataSets[I] <> nil) and
DataSets[I].UpdatesPending and
DataSets[I].UpdateOptions.Enabled then
begin
Result := not Master.IsEmpty;
Exit;
end;
Result := False;
end;
procedure TSheetDataSetContainer.ApplyUpdates;
var
I: Integer;
begin
for I := 0 to DataSetCount - 1 do
begin
try
if (DataSets[I] <> nil) and
DataSets[I].UpdatesPending and
DataSets[I].UpdateOptions.Enabled {and
not DataSets[I].Relation.Active }then
DataSets[I].ApplyUpdates(False);
except
continue;
end;
end;
end;
procedure TSheetDataSetContainer.CancelUpdates;
var
I: Integer;
begin
for I := 0 to DataSetCount - 1 do
begin
if DataSets[I] = nil then
Continue;
if DataSets[I].State in [TDataSetState.dsInsert, TDataSetState.dsEdit] then
DataSets[I].Cancel;
if DataSets[I].UpdatesPending then
DataSets[I].CancelUpdates;
end;
end;
procedure TSheetDataSetContainer.DisableControls;
var
I: Integer;
begin
for I := 0 to DataSetCount - 1 do
if DataSets[I] <> nil then
DataSets[I].DisableControls;
end;
procedure TSheetDataSetContainer.EnableControls;
var
I: Integer;
begin
for I := 0 to DataSetCount - 1 do
if DataSets[I] <> nil then
DataSets[I].EnableControls;
end;