Pular para o conteúdo principal

Lazarus - Aplicação WinCE usando tabelas DBF

Há algum tempo eu escrevi um artigo aqui no blog chamado Lazarus - Criando uma aplicação para WinCE. Nesse artigo usei SQLite para WinCE. E a implementação tinha bastante código pois usava a unit sqlite3ds. Agora vou mostrar que é possível desenvolver usando tabelas Dbase, aquelas que tem a extensão DBF. Para isso vamos usar o componente TDbf da aba Data Access. A seguir os passos necessários:

1) Crie uma tabela Dbase.
2) Inicie uma nova aplicação e coloque um TDbf no DataModule. Na propriedade TableName localize a tabela que foi criada.
3) Nas propriedades FilePath e FilePathFull ele vai automaticamente definir o caminho do PC onde está a tabela. Depois vamos resolver isso.
4) Coloque um TDataSource no Data Module e faça a associação necessária com o TDbf.
5) Agora vamos ao form da interface e coloque os controles (da aba Data Controls) necessários para cada campo da tabela. Associe a propriedade DataSource de cada controle com o DataSource inserido no passo 4. Na propriedade DataField você pode digitar o nome do campo da tabela DBF ou, se a tabela estiver ativa, selecionar na caixa combinada. Lembre que neste form deve ser incluida a linha uses referente a unit do Data Module.
6) Coloque um TDBNavigator e ligue a propriedade DataSource adequadamente.
7) No evento OnShow do form digite o seguinte:

dbf1.FilePath := '';
dbf1.FilePathFull := '';
dbf1.Open;

Se você tiver mudado a propriedade Name do TDbf, substitua o dbf1 no código acima pelo nome que você escolheu.
Para compilar um projeto WinCE é necessário fazer algumas configurações em Project -> Project options. Na opção Paths abaixo de Compiler Options selecione wince em LCL Widget Type (various). Na opção Code generation escolha WinCE em Target OS (-T) e arm em Target CPU family (-P). Pronto. O compilador irá gerar um executável que executa apenas no PDA. Dessa forma para compilar use sempre CTRL + F9. Nos testes eu usei o Lazarus 0.9.29. Se você utiliza a versão 0.9.28 o caminho para essas configurações está em Project -> Compiler options.
Copie o executável e a tabela para o PDA e execute. Pronto, simples assim. Fiz testes com sucesso em um PDA com WM 5 e no emulador WM 6.

Comentários

Anônimo disse…
Prof. Carlos
muito bom mesmo,seu blog é muito bom.


Ass: Hugo
Professor Carlos disse…
Oi Hugo

Obrigado pelo comentário.

[]'s

Prof.Carlos
Unknown disse…
Prof. Carlos,

Obrigado pela iniciativa do blog, estou iniciando no lazarus e gostando bastante dos seus tutoriais.. tentei fazer a aplicação para o winCe mas estou patinando em alguma coisa. Como vincular meus campos com a base de dados?O DataModule é a mesma coisa do que o form ativo?
Abs

Vinicius(vinaug@gmail.com)
Professor Carlos disse…
Sim. No DataModule você coloca todos os componentes de acesso e conexão. Pra inserir um DataModule vá em New e depois selecione DataModule e confirme. Você pode seguir os mesmos passos que estão no post http://professorcarlos.blogspot.com/2010/02/lazarus-acessando-banco-de-dados-com.html também pra vincular os campos aos controles.
Anônimo disse…
Genial post and this post helped me alot in my college assignement. Say thank you you seeking your information.
Professor Carlos disse…
Thanks a lot.
Anônimo disse…
Queria um exemplo de como fazer pesquisa com tdbf. É para um cadastro de senhas bem simples, com nome, email, senha e descricao. A busca deveria ser feita em todos os campos.
É possível com esse cmponente?
Professor Carlos disse…
Sim. Você pode usar o método Locate. Veja a documentação aqui http://www.freepascal.org/docs-html/fcl/db/tdataset.locate.html
Anônimo disse…
Bom dia Professor.
Estou desenvolvendo uma aplicação para Wince, utilizando dbf. Usei o seu exemplo como base, porem quando executo a aplicação no dispositivo, não consigo ler nem gravar dados. Aparece a mensagem "Dataset is rea-only". Porem a tabela NÃO está configurada só para leitura. Desde já agradeço, e parabéns pelo blog.

Att,

Eurivan
Professor Carlos disse…
Você pode testar sua aplicação no Windows. Mude o as configurações para win32 ou 64, e faça um teste. Se continuar com erro você pode fazer um pequeno demo onde o erro acontece e envie para o meu e-mail, de forma que eu possa verificar.
Unknown disse…
Tenho uma aplicação para wince usando DBF no emulador funciona no coletor quando faço append diz que a dbf esta read only;
Professor Carlos disse…
Norberto

Penso que é preciso saber como funciona essa questão do acesso aos arquivos no dispositivo que você está usando. Aparentemente quando você está transferindo os dados para o equipamento ele muda o atributo para "apenas leitura".
Unknown disse…
As dbf´s gero através do lazarus lendo Oracle e gravando dbf, depois transfiro através do activesync para o coletor
Professor Carlos disse…
Penso que se funciona no emulador, então a aplicação está ok. Não trabalho com os dispositivos para poder ajudar. Na época desse post eu fiz um teste com um PDA que eu tinha e funcionou. Agora não tenho mais como testar em um aparelho.

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