Pular para o conteúdo principal

Lazarus - Usando Dicionários de Dados

Nos dois posts anteriores:
Lazarus - O Lazarus Data Desktop e
Lazarus - Dicionário de Dados
estudamos a ferramenta Lazarus Data Desktop e como criar dicionários de dados. Neste artigo iremos mostrar como usar os dicionários nas aplicações desenvolvidas usando Lazarus.
Como já falamos, um dicionário de dados descreve entre outras coisas os atributos dos campos das tabelas de um esquema de banco de dados. E essa descrição, também chamada de metadados, pode ser usada nas aplicações para evitar que tenhamos que repetir essas definições em cada DataSet. Assim, vamos supor que já exista um dicionário de dados criado para um tabela chamada PRODUTO. E vamos mostrar como usar o dicionário de dados em tempo de execução e como aplicá-lo em tempo de desenvolvimento.
O primeiro passo é o mesmo necessário para acessar qualquer tabela sem usar o recurso do dicionário de dados. Supondo que estejamos usando ZeosLib, coloque todos os componentes que são precisos, no Data Module: ZConnection, ZQuery e um DataSource. Faça todas as configurações exigidas. Agora crie os campos persistentes TFields para a ZQuery - este é um procedimento obrigatório para o funcionamento do dicionário de dados. Dê um duplo clique na ZQuery e você verá uma pequena janela como na figura abaixo:
Clique no botão com o sinal de + ou pressione CTRL + INS para inserir os campos. Uma nova janela mostrando todos os campos da tabela correspondente será mostrada, como a figura a seguir:
Selecione todos os campos e pressione o botão Create.

Usando dicionário de dados em run-time

Uma maneira de usar o dicionário de dados em tempo de execução é inserir o código, por exemplo, no evento OnCreate do Data Module. A classe TFPDataDictionary está localizada na unit fpdatadict. Portanto, é necessário declarar esta unit na cláusula uses no módulo onde será instanciada TFPDataDictionary. Assim, nosso código poderá ficar assim:

procedure TdmData.DataModuleCreate(Sender: TObject);
var
  Dict : TFPDataDictionary;
begin
  Dict := TFPDataDictionary.Create;
  // carrega o arquivo do dicionário de dados
  Dict.LoadFromFile('produto.fpd');
  // aplica o dicionário ao DataSet
  Dict.ApplyToDataset(queProduto);
  // libera a memória usada pelo dicionário de dados
  Dict.Free;
end;

Num form você pode inserir um TDBGrid, onde serão mais facilmente visualizados os efeitos que desejamos.  Associe essa grade ao DataSource que está ligado ao DataSet onde foi aplicado o dicionário.
Agora execute o programa e você poderá constatar que todas as definições feitas no dicionário de dados serão assumidas pelos TFields que foram criados.

Usando dicionário de dados em tempo de projeto

Neste caso, o primeiro passo é registrar no projeto o dicionário desejado. Isso é feito usando a opção de menu Project > Data Dictionary > Set ... Quando selecionar este item de menu um diálogo será aberto:
Marque a caixa Use Data dictionary for this project. E selecione o dicionário de dados desejado. Confirme pressionando OK.
Agora localize o DataSet e clique com o botão direito sobre ele. Selecione o item Data dictionary e depois em Apply.
Isso irá aplicar o dicionário ao DataSet, da mesma forma que fizemos usando código. Agora podemos executar o programa e aproveitar o recurso.
Post escrito tendo como referência o livro Lazarus - the Complete Guide, publicado pela Blaise Pascal Magazine.

Comentários

Postagens mais visitadas deste blog

Lazarus - Acessando banco de dados com SQLdb - Parte I

Para fazer nossa primeira aplicação usando banco de dados no Lazarus vamos usar o SQLite e o conjunto de componentes nativo SQLdb. Inicialmente vamos apresentar passo como essa aplicação foi criada. Essa foi a maneira que eu fiz, e eu agradeço sugestões e questionamentos que pessoas que já passaram por essa experiência. Depois irei fazer algumas considerações sobre o uso do SQLdb. SQLite SQLite é uma biblioteca que implementa um motor de banco de dados SQL. É livre para qualquer finalidade, seja uso particular ou comercial. Lê e escreve em um único arquivo que pode ter além de tabelas, índices, gatilhos e visões. Executa em várias plataformas e é indicado para aplicações embarcadas. Maiores detalhes podem ser encontrados no site oficial. Para usá-lo, baixe-o do site e faça a instalação adequada para o seu sistema operacional. No Windows isso é muito simples, apenas copie sqlite3.dll para o system32 da pasta do sistema operacional. Existe uma ferramenta de linha de comando chamada

Tipos de dados no SQLite

Em SQLite, diferente de outros motores de banco de dados, o tipo de dado de um valor está associado com o valor propriamente dito, e não com o seu contêiner. É um sistema de tipo dinâmico. Um campo de uma tabela em SQLite pode receber qualquer tipo de dado. Assim, o SQLite simplesmente ignora o tipo informado no comando CREATE TABLE. Então, dizemos que no SQLite existem classes de armazenamento. E essas classes são: NULL - como em qualquer outro banco de dados. INTEGER - inteiro com sinal, armazenado em 1, 2, 3, 4, 6 ou 8 bytes dependendo da grandeza do valor. REAL - valor de ponto flutuante armazenado em 8 bytes. TEXT - uma string armazenada usando UTF-8, UTF-16BE ou UTF-16LE. BLOB - armazena um blob, como indica o nome. Uma coluna INTEGER PRIMARY é uma exceção. Só aceita números inteiros. Qualquer valor em um comando SQL tem uma classe de armazenamento implícita. Durante a execução do comando SQL, o SQLite pode converter valores entre classes numéricas (INTEGER e REAL)

Lazarus - Criando relatórios com FortesReport (Parte I)

Para a criação de relatórios, o Lazarus já trás o componente LazReport, no entanto ele precisa ser instalado no IDE. Para fazer a instalação do pacote, acesse o menu Package -> Open package file (.lpk) . Localize o diretório de instalação do Lazarus e na pasta components abra lazreport e depois source . Abra o pacote lazreport.lpk , clique em Compile e depois em Install . Como já sabemos isso irá recompilar o IDE. Depois de inicializado novamente estará disponível a aba LazReport . Leia aqui um tutorial básico sobre o LazReport. No entanto queremos mostrar uma alternativa ao LazReport . Por essa razão, vamos apresentar neste artigo o FortesReport . Para quem conhece o QuickReport, que fazia parte do Delphi, não terá dificuldade de desenvolver com esse componente. Baixe o pacote aqui e instale. Os procedimentos são semelhantes aos que mostramos acima. Você terá uma nova aba chamada Fortes Report . Conectando o banco de dados O primeiro passo para criar a aplicação é fazer