da a criar aplicações para o sistema operacional PalmOS – Parte 3

 

No artigo anterior, aprendemos a criar uma tabela e fazer referência a ela em nosso formulário de consulta de clientes. Com base no mesmo conceito e aprendizado, faremos a inclusão de novas telas em nosso sistema, tais como: cadastro de produtos e digitação de pedidos.

Lembrando que nossas telas no sistema apenas consultam a base de dados não possibilitando a inclusão de registros. Essa tarefa será efetuada através do sincronismo entre dispositivo e PC.

Poderíamos criar e utilizar a tela para editar os registros e enviá-los ao PC, porém em nosso exemplo será apenas mais uma janela de consulta. As telas que irão manipular informações são as de pedidos e itens do pedido.

O primeiro passo é criarmos a tabela produtos para armazenarmos os dados e podermos navegar entre os registros. Lembrando que essa tabela será preenchida no momento do sincronismo com o PC. Para isso devemos criar uma nova Unit, como vimos no artigo anterior. Acesse o menu File|New>Unit, salve-a com o nome de “ProdutosDB.pas”. Vale lembrar que podemos utilizar as teclas de atalhos CTRL + Shift + S para salvar nosso projeto. Feito isso vamos montar a tabela de produtos.

Logo abaixo da palavra reservada Interface declare uma seção Uses para adicionarmos a PSL que é a Library do PocketStudio onde estão os métodos necessários para manipularmos o BD dentro da Unit PSDatabase. Após a seção Uses declaramos uma nova seção Const onde informaremos o DBName, DBType e os índices para recuperação e configuração dos valores nos campos da tabela de Produtos.

Após a definição dos campos e seus respectivos índices, declaramos uma seção Var, onde informaremos ao PocketStudio o FieldDefs e um array. Também iremos declarar as variáveis globais que irão referenciar nossa base de dados em todo projeto. A estrutura de todas as tabelas criadas no PocketStudio é sempre a mesma, como uma receita de bolo. Mudamos apenas nome da tabela e campos, mas a maneira de montar e manipular é exatamente igual para todas.

Como no artigo anterior criamos a tabela de clientes, não vou entrar em detalhes de como funciona cada função criada em nossa tabela. Altere a Unit ProdutosDB conforme a Listagem 1.

 

Listagem 1. Código completo da tabela de Produtos

 

unit ProdutosDB;

interface

uses PSL;

const

  ProdutosDBName = 'ProdutosDB';

  ProdutosDBType = Rsc('DBPR');

  Prod_Codigo = 0;

  Prod_DescProd = 1;

  Prod_Preco = 2;

  Prod_Estoque = 3;

  Prod_Tam = 4;

  Prod_Un = 5;

var

  FieldDefs : array[0..5] of TFieldDef =

    ((DataType: ftUInt16),

    (DataType: ftString),

    (DataType: ftDouble),

    (DataType: ftUInt32),

    (DataType: ftString),

    (DataType: ftString));

  bProdutosInclui : Boolean;

  DBPro : TDatabase;

 

function Open: Boolean;

function Close: Boolean;

function ProcuraCodigo(Codigo: UInt16): Boolean;

 

implementation

 

function Open: Boolean;

var

  Atributos : UInt16;

begin

  Result := PSDatabase.Open(DBPro, ProdutosDBName,

    dmModeReadWrite);

  if not Result then

  begin

    Result := PSDatabase.CreateDatabase(ProdutosDBName,

      Creator, ProdutosDBType);

    if Result then

      Result := PSDatabase.Open(DBPro, ProdutosDBName,

      dmModeReadWrite);

  end;

  if not Result then

  begin

    ShowSystemError(PSDatabase.LastError);

    Exit;

  end;

  PsDataBase.DataBaseAttributes(ProdutosDBName,

    Atributos);

  Atributos := Atributos and $FFF7;

  PsDataBase.SetDataBaseAttributes(ProdutosDBName,

    Atributos);

  PSDatabase.SetFieldDefs(DBPro, FieldDefs[0],

    SizeOf(FieldDefs) div SizeOf(FieldDefs[0]));

end;

function Close: Boolean;

begin

  Result := PSDatabase.Close(DBPro);

end;

 

function ProcuraCodigo(Codigo: UInt16): Boolean;

begin

  PSDatabase.First(DBPro);

  while not PSDatabase.EOF(DBPro) do

  begin

    if PSDatabase.FieldUInt16(DBPro, Prod_Codigo) =

      Codigo then

    begin

      Result := True;

      exit;

    end;

...

Quer ler esse conteúdo completo? Tenha acesso completo