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:
Prof. Carlos
muito bom mesmo,seu blog é muito bom.
Ass: Hugo
Oi Hugo
Obrigado pelo comentário.
[]'s
Prof.Carlos
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)
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.
Genial post and this post helped me alot in my college assignement. Say thank you you seeking your information.
Thanks a lot.
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?
Sim. Você pode usar o método Locate. Veja a documentação aqui http://www.freepascal.org/docs-html/fcl/db/tdataset.locate.html
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
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.
Tenho uma aplicação para wince usando DBF no emulador funciona no coletor quando faço append diz que a dbf esta read only;
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".
As dbf´s gero através do lazarus lendo Oracle e gravando dbf, depois transfiro através do activesync para o coletor
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.
Postar um comentário