Páginas

quarta-feira, 18 de agosto de 2010

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.

14 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

Vinaug 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.

Moisés Ferreira 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.

Norberto morais branco 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".

Norberto morais branco 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.

 
Creative Commons License
This work by Carlos Alberto P. Araújo is licensed under a Creative Commons Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Brasil License.