Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

Это нормально, каждый раз писать

Можно через раз.
Или через два.
Просто не все вставленное сохранится.


Наверх

Титульная страница Поиск, карта сайта Написать письмо