Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Produto.uclass;
- interface
- uses
- Generics.Collections,
- Conexao.uclass;
- type
- TProduto = Class(TGERObject)
- strict private
- FIDProduto: integer;
- FDescricao: string;
- FPrUnitario: Real;
- FAlteradoEm: TDateTime;
- public
- constructor Create; Overload;
- constructor Create(
- pIDProduto: Integer;
- const pDescricao: String = '';
- const pPrUnitario: Real = 0;
- const pAlteradoEm: TDateTime = 0
- ); Overload;
- property ID: Integer read FIDProduto write FIDProduto;
- property Descricao: string read FDescricao write FDescricao;
- property PrUnitario: Real read FPrUnitario write FPrUnitario;
- property AlteradoEm: TDateTime read FAlteradoEm write FAlteradoEm;
- public
- Function GetHashCode: Integer; Override;
- End;
- TProdutos = Class(TList<TProduto>);
- TProdutoDAO = Class(TClassDAO<TProduto>)
- private
- function RetrieveID: Integer;
- protected
- Function Fill: TProduto; Override;
- Procedure DoOnSave(var Value: TProduto); Override;
- Procedure DoAfterSave(var Value: TProduto); Override;
- Procedure DoOnDelete(Value: TProduto); Override;
- public
- Function GetAll: TProdutos;
- Function GetByID(Value: Integer): TProduto;
- End;
- implementation
- uses
- SysUtils;
- { TProdutoDAO }
- procedure TProdutoDAO.DoAfterSave(var Value: TProduto);
- begin
- inherited;
- Query.InsertRecord([
- Value.ID,
- Value.Descricao,
- Value.PrUnitario,
- Value.AlteradoEm
- ]);
- end;
- procedure TProdutoDAO.DoOnDelete(Value: TProduto);
- begin
- inherited;
- AuxQuery.SQL.Text :=
- 'Delete From Produtos Where IDProduto = :IDProduto';
- AuxQuery.Parameters.ParamByName('IDProduto').Value := Value.ID;
- AuxQuery.ExecSQL;
- end;
- procedure TProdutoDAO.DoOnSave(var Value: TProduto);
- begin
- inherited;
- if (Value.ID = 0)
- then Value.ID := RetrieveID;
- AuxQuery.SQL.Text :=
- 'UPDATE OR INSERT Into Produtos ('+
- 'IDProduto, '+
- 'Descricao, '+
- 'PrUnitario, '+
- 'AlteradoEm '+
- ') VALUES ( '+
- ':IDProduto, '+
- ':Descricao, '+
- ':PrUnitario, '+
- ':AlteradoEm '+
- ')';
- AuxQuery.Parameters.ParamByName('IDProduto').Value := Value.ID;
- AuxQuery.Parameters.ParamByName('Descricao').Value := Value.Descricao;
- AuxQuery.Parameters.ParamByName('PrUnitario').Value := Value.PrUnitario;
- AuxQuery.Parameters.ParamByName('AlteradoEm').Value := Value.AlteradoEm;
- AuxQuery.ExecSQL;
- end;
- function TProdutoDAO.Fill: TProduto;
- begin
- inherited;
- Result := TProduto.Create;
- Result.ID := Query.FieldByName('IDProduto').AsInteger;
- Result.Descricao := Query.FieldByName('Descricao').AsString;
- Result.PrUnitario := Query.FieldByName('PrUnitario').AsFloat;
- Result.AlteradoEm := Query.FieldByName('AlteradoEm').AsDateTime;
- end;
- function TProdutoDAO.GetAll: TProdutos;
- begin
- Query.SQL.Text :=
- 'Select * From Produtos Order By IDProduto';
- Query.Open;
- Result := TProdutos(List);
- end;
- function TProdutoDAO.GetByID(Value: Integer): TProduto;
- begin
- try
- Query.SQL.Text :=
- 'Select * From Produtos ' +
- 'Where IDProduto = :IDProduto';
- Query.Parameters.ParamByName('IDProduto').Value := Value;
- Query.Open;
- Result := List[0];
- except
- Result := nil;
- end;
- end;
- function TProdutoDAO.RetrieveID: Integer;
- begin
- AuxQuery.SQL.Text :=
- 'Select GEN_ID(GEN_PRODUTOS_ID, 1) ID FROM RDB$DATABASE';
- AuxQuery.Open;
- Result := AuxQuery.FieldByName('ID').AsInteger;
- end;
- { TProduto }
- constructor TProduto.Create;
- begin
- Self.ID := 0;
- Self.AlteradoEm := now();
- end;
- constructor TProduto.Create(pIDProduto: Integer; const pDescricao: String;
- const pPrUnitario: Real; const pAlteradoEm: TDateTime);
- begin
- Self.ID := pIDProduto;
- Self.Descricao := pDescricao;
- Self.PrUnitario := pPrUnitario;
- Self.AlteradoEm := pAlteradoEm;
- end;
- function TProduto.GetHashCode: Integer;
- begin
- Result := Self.ID;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement