![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DataSet.Edit - Dataset.Post - DataSet.Cancel
_qwerty_ © (2011-12-09 16:27:00)
unit Unit2;
interface
uses
DB;
type
{ TControllerOfObjects }
TControllerOfFields = class
private
FDataSet: TDataSet;
public
constructor Create(DataSet: TDataSet);
property DataSet: TDataSet read FDataSet;
end;
const
{ field names of table of classifier }
COMPANY_NAME_FIELD_NAME = 'CompanyName';
MODEL_NAME_FIELD_NAME = 'ModelName';
TYPE_NAME_FIELD_NAME = 'TypeName';
type
{ TControllerOfFieldsOfClassifier }
TControllerOfFieldsOfClassifier = class(TControllerOfFields)
private
function GetCompanyName: string;
function GetModelName: string;
function GetTypeName: string;
procedure SetCompanyName(const Value: string);
procedure SetModelName(const Value: string);
procedure SetTypeName(const Value: string);
function VerifyCompanyName(const Value): string;
function VerifyModelName(const Value: string): string;
function VerifyTypeName(const Value: string): string;
public
property CompanyName: string read GetCompanyName write SetCompanyName;
property ModelName: string read GetModelName write SetModelName;
property TypeName: string read GetTypeName write SetTypeName;
end;
implementation
{ TControllerOfFieldsOfClassifier}
constructor TControllerOfFields.Create(DataSet: TDataSet);
begin
{ }
Assert(DataSet <> nil);
{ }
FDataSet := DataSet;
end;
function TControllerOfFieldsOfClassifier.GetCompanyName: string;
begin
Result := DataSet.FieldByName(COMPANY_NAME_FIELD_NAME).AsString;
end;
function TControllerOfFieldsOfClassifier.GetModelName: string;
begin
Result := DataSet.FieldByName(MODEL_NAME_FIELD_NAME).AsString;
end;
function TControllerOfFieldsOfClassifier.GetTypeName: string;
begin
Result := DataSet.FieldByName(TYPE_NAME_FIELD_NAME).AsString;
end;
procedure TControllerOfFieldsOfClassifier.SetCompanyName(
const Value: string);
begin
DataSet.Edit;
try
DataSet.FieldByName(COMPANY_NAME_FIELD_NAME).AsString :=
VerifyCompanyName(Value);
except
DataSet.Cancel;
raise;
end;
end;
procedure TControllerOfFieldsOfClassifier.SetModelName(
const Value: string);
begin
DataSet.Edit;
try
DataSet.FieldByName(MODEL_NAME_FIELD_NAME).AsString :=
VerifyModelName(Value);
except
DataSet.Cancel;
raise;
end;
end;
procedure TControllerOfFieldsOfClassifier.SetTypeName(const Value: string);
begin
DataSet.Edit;
try
DataSet.FieldByName(TYPE_NAME_FIELD_NAME).AsString :=
VerifyTypeName(Value);
except
DataSet.Cancel;
raise;
end;
end;
function TControllerOfFieldsOfClassifier.VerifyCompanyName(
const Value): string;
begin
{ ... }
end;
function TControllerOfFieldsOfClassifier.VerifyModelName(
const Value: string): string;
begin
{ ... }
end;
function TControllerOfFieldsOfClassifier.VerifyTypeName(
const Value: string): string;
begin
{ ... }
end;
end.
Работаю со встроенной бд. Это нормально, каждый раз писать DataSet.Edit-DataSet.Post-DataSet.Cancel? или лучше процедуру, типа этой:
procedure TGroupsController.SetFieldValues(
const FieldNames: array of string; const FieldValues: array of const);
var
I: Integer;
begin
{ }
Assert(Length(FieldNames) = Length(FieldValues));
{ }
DataSet.Edit;
try
for I := 0 to Length(FieldNames) do
DataSet.FieldByName(FieldNames[I]).AssignValue(FieldValues[I]);
except
DataSet.Cancel;
raise;
end;
end;
_qwerty_ (2011-12-09 16:35:00) [1]
> Просто не все вставленное сохранится.
почему не все, я протестил, значения полей для текущей записи изменяются.
Медвежонок Пятачок (2011-12-09 16:30:00) [2]Это нормально, каждый раз писать
Можно через раз.
Или через два.
Просто не все вставленное сохранится.