-
-
Notifications
You must be signed in to change notification settings - Fork 15
DAO
Mobius One edited this page Nov 30, 2025
·
2 revisions
Home > DAO
Classes para facilitar comunicação entre cliente e servidor através de Data Access Objects (DAO)
Delphi:
- DAO.REST: Objeto de acesso a dados baseado nos componentes REST Http nativos da IDE Delphi. Capaz de consumir requisições e automaticamente mapear uma MemTable ou uma Grid (FMX). Exemplo de consumo do receitaws:
//https://receitaws.com.br/v1/cnpj/{cnpj}
procedure ExemploReceitaWS(ACNPJ: string);
begin
with TDAOClientREST.Create('https://receitaws.com.br/v1/') do
try
Resource('cnpj')
.AddHeader('', ACNPJ)
// .MemTable(FDMemtable)
// .Grid(StringGrid1)
.Get;
finally
Free;
end;
endExemplo com BasicAuthentication fictício:
procedure ExemploBasicAuth(aBaseURL, aUsuario, aSenha: string);
begin
with TDAOClientREST.Create(aBaseURL, aUsuario, aSenha) do
try
Resource('endpoint')
// .MemTable(FDMemtable)
// .Grid(StringGrid1)
.Get; //.Post; .Put; .Patch; .Delete;
finally
Free;
end;
endExemplo fictício de particionamento da resposta em múltiplos datasets:
procedure ExemploJSONPart(ServerURL, LOGIN, SENHA: string): string;
var
mtpart1, mtpart2, mtpart3, mtpart4, mtpart5, mtpart6, mtpart7, mtpart8,
mtpart9, mtpart10, mtpart11, mtpart12: TFDMemTable;
edtInicial, edtFinal, edtHoraFin, edtHoraIni: TEdit;
begin
mtpart1 := TFDMemTable.Create(self);
mtpart2 := TFDMemTable.Create(self);
mtpart3 := TFDMemTable.Create(self);
mtpart4 := TFDMemTable.Create(self);
mtpart5 := TFDMemTable.Create(self);
mtpart6 := TFDMemTable.Create(self);
mtpart7 := TFDMemTable.Create(self);
mtpart8 := TFDMemTable.Create(self);
mtpart9 := TFDMemTable.Create(self);
mtpart10 := TFDMemTable.Create(self);
mtpart11 := TFDMemTable.Create(self);
mtpart11 := TFDMemTable.Create(self);
with TDAOClientREST.Create(ServerURL, LOGIN, SENHA) do
try
Resource('endpoint')
.AddHeader('dataini', edtInicial.Text + ' ' + edtHoraIni.Text)
.AddHeader('datafin', edtFinal.Text + ' ' + edtHoraFin.Text);
if condicao in [cd1, cd2] then
JSONPartToDataSet('part1', mtpart1)
.JSONPartToDataSet('part2', mtpart2)
.JSONPartToDataSet('part3', mtpart3)
.JSONPartToDataSet('part4', mtpart4)
else
JSONPartToDataSet('part5', mtpart5)
.JSONPartToDataSet('part6', mtpart6)
.JSONPartToDataSet('part7', mtpart7)
.JSONPartToDataSet('part8', mtpart8)
.JSONPartToDataSet('part9', mtpart9)
.JSONPartToDataSet('part10', mtpart10)
.JSONPartToDataSet('part11', mtpart11)
.JSONPartToDataSet('part12', mtpart12);
Get;
// Se a função .MemTable for usada também no mesmo request, vai ignorar todos os .JSONPartToDataSet!
// Use ou o .MemTable ou o .JSONPartToDataSet
if StatusCode <> 200 then
Showmessage(ResponseText)
else
// Faz Algo
finally
Free;
end;
end;