Um conhecimento só é válido quando compartilhado.

quarta-feira, 19 de outubro de 2016

ORMBr - Criando Lookup Field

No delphi desde sempre existiu o lookup field, e como não podemos deixar no ORMBr podemos criar lookup field de forma simples, é o que vamos mostrar nesse artigo de hoje.
No nosso modelos teremos uma propriedade que receberá o ID da tabela lookup, ficando assim o exemplo:
   
    ...
    [Column('detail_lookup_id', ftInteger)]
    [Dictionary('detail_lookup_id','Mensagem de validação','','','',taCenter)]
    property detail_lookup_id: Integer Index 0 read Flookup_id write Flookup_id;
    ...
Continuando, teremos a tabela que irá receber o ID da tabela lookup que vou representa-la pela variável oDetail, ela é quem terá a propriedade acima no seu modelo.
Também teremos a tabela lookup, que mostrará todos os seus registros para que possamos selecionar um, vou representa-la pela variável oLookup, ficando assim o exemplo:
    ... 
    var
      oLookup: IContainerDataSet< tlookup >;
      oDetail: IContainerDataSet< tdetail >;
    begin
      oDetail := TContainerClientDataSet< tdetail >.Create(oConn, CDSDetail);
      oLookup := TContainerClientDataSet< tlookup >.Create(oConn, CDSLookup);
      oDetail.DataSet.AddLookupField('lookup_field',
                                     'detail_lookup_id',
                                     oLookup.DataSet,
                                     'lookup_id',
                                     'lookup_description');
      ...
Observe que as variáveis oDetail e oLookup, foram instanciadas recebendo dois parâmetros, de conexão e um TClientDataset para fazer cache, até ai normal como já mostrado em outro artigo. O segredo está aqui nessa linha:
  oDetail.DataSet.AddLookupField('lookup_field',
                                 'detail_lookup_id',
                                 oLookup.DataSet,
                                 'lookup_id',
                                 'lookup_description');
Como o campo ID será recebida pela tabela oDetail como falei acima, o campo lookup será criado nela, chamando o método AddLookupField, esse método receberá todos os parâmetros necessários para configurar um TField do tipo Lookup, os parâmetros são:
    
    procedure AddLookupField(AFieldName: string;
                             AKeyFields: string;
                             ALookupDataSet: TObject;
                             ALookupKeyFields: string;
                             ALookupResultField: string);
AFieldName: Nome para o TField campo; 
AKeyFields: Nome do campo que receberá o valor do campo que será definido em LookupKeyFields que virá da tabela lookup; 
ALookupDataSet: A variável que foi instanciada e terá os registros lookup, no nosso caso oLookup; 
ALookupKeyFields: Nome do campo chave que será o retorno da tabela lookup, para ser armazenado no AKeyFields; 
ALookupResultField: Nome do campo result para ser visualizado.

2 comentários :

  1. Isaque, como funciona os Select, Consultas onde tenho que fazer Select complexos,

    existe alguma classe Critéria?

    ResponderExcluir
    Respostas
    1. Bom dia existe sim, na unit ormbr.criteria.interface.pas.

      para usar usa assim:

      var
      oSQL: ICriteria;
      begin
      oSQL := ICriteria.SQL.Select('lista de campos').From('tablename')

      e por diante.

      Veja mais sintaxe no link : http://www.thedelphigeek.com/2015/04/runtime-sql-query-builder.html

      Excluir

SAC Automação Delphi e Lazarus

SAC Automação Delphi e Lazarus
Assine nosso SAC Automação Delphi e Lazarus para ter suporte técnico especializado em desenvolvimento

Quem sou eu

Minha foto

Proprietário/Administrador de Empresa em TI (Tecsis Informática)
  • Autor dos projetos OpenSource ORMBr, e DBCBr
  • Autor dos componentes ACBrInstall, ACBrSped, ACBrPaf, ACBrInStore, ACBrDownload.

Total de visualizações

Postagem em destaque

ORMBr - Mapeamento objeto-relacional

Mapeamento objeto-relacional ( ou ORM, do inglês: Object-relational mapping ) é uma técnica de desenvolvimento utilizada para reduzir...

Todo os direitos reservados.. Tecnologia do Blogger.

Seguidores

Google+ Seguindores