Fórum POO - classe de persistência #350635
14/12/2007
0
Olá colegas.
Desenvolvi um pequeno projeto teste com POO, na verdade, apenas um sistema que cadastra departamentos e permite consultas. Crie as classes, forms e classe de persistência, no entanto, no momento de gravar os dados estou obtendo erro de access violation, exatamente no applyupdate. Alguém poderia dar uma ajuda? Abaixo está postado o código do método persistir.
function DepartamentoDAO.Persistir(pDepartamento: Departamento): boolean;
var vDataModule : Tdm;
begin
{ rotina para gravar objetos no banco de dados }
vDataModule := Tdm.Create(nil);
vDataModule.ram.Close;
if pDepartamento.getOID = ´´ then
begin
pDepartamento.setOID(self.GerarOID);
vDataModule.ram.CommandText := ´SELECT OID, DESCRICAO FROM DEPARTAMENTO WHERE OID IS NULL´;
vDataModule.ram.Open;
end;
if vDataModule.ram.RecordCount = 0 then
begin
try
vDataModule.ram.Insert;
vDataModule.ram.FieldByName(´OID´).AsString := pDepartamento.getOID;
vDataModule.ram.FieldByName(´DESCRICAO´).AsString := pDepartamento.getDescricao;
vDataModule.ram.Post;
vDataModule.ram.ApplyUpdates(0);
result := true;
except
vDataModule.ram.CancelUpdates;
result := false;
end;
end;
vDataModule.ram.Close;
vDataModule.Free;
end;
Abraços.
Desenvolvi um pequeno projeto teste com POO, na verdade, apenas um sistema que cadastra departamentos e permite consultas. Crie as classes, forms e classe de persistência, no entanto, no momento de gravar os dados estou obtendo erro de access violation, exatamente no applyupdate. Alguém poderia dar uma ajuda? Abaixo está postado o código do método persistir.
function DepartamentoDAO.Persistir(pDepartamento: Departamento): boolean;
var vDataModule : Tdm;
begin
{ rotina para gravar objetos no banco de dados }
vDataModule := Tdm.Create(nil);
vDataModule.ram.Close;
if pDepartamento.getOID = ´´ then
begin
pDepartamento.setOID(self.GerarOID);
vDataModule.ram.CommandText := ´SELECT OID, DESCRICAO FROM DEPARTAMENTO WHERE OID IS NULL´;
vDataModule.ram.Open;
end;
if vDataModule.ram.RecordCount = 0 then
begin
try
vDataModule.ram.Insert;
vDataModule.ram.FieldByName(´OID´).AsString := pDepartamento.getOID;
vDataModule.ram.FieldByName(´DESCRICAO´).AsString := pDepartamento.getDescricao;
vDataModule.ram.Post;
vDataModule.ram.ApplyUpdates(0);
result := true;
except
vDataModule.ram.CancelUpdates;
result := false;
end;
end;
vDataModule.ram.Close;
vDataModule.Free;
end;
Abraços.
Fscoutinhobr2005
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)