Desenvolvimento - Mobile

Controle de Estoque 1.0 (Final)

Chegamos ao nosso terceiro artigo sobre o desenvolvimento de um aplicativo Palm que utiliza tabelas para armazenar informações. Nosso exemplo é um controle de estoque, simples porem define bem o uso do NS Basic.

por Wellington Pinto de Oliveira



Chegamos ao nosso terceiro artigo sobre o desenvolvimento de um aplicativo Palm que utiliza tabelas para armazenar informações. Nosso exemplo é um controle de estoque, simples porem define bem o uso do NS Basic.

Quem ainda não tenha lido os artigos anteriores aconselhamos que, antes de continuar, leia os artigos os anteriores, pois este é uma continuação.

No primeiro artigo implementamos toda a parte de interface deixando o trabalho de manipulação de dados para o segundo artigo, os dados são trabalhados por funções internas do aplicativo deixando o usuário livre de edição de parâmetros e códigos.

Vamos abrir o formulário frmMain e selecionar o evento "Before Code", para isso clique com o botão direito do mouse sobre o formulário e selecione o evento, conforme podemos ver na imagem abaixo:


Figura 1 - Before Code

Edite o seguinte código:

    Dim registros as Integer
    Dim resultado as Integer
    Dim produto as String
    Dim i as Integer
    
    
    Call openProduto()
    registros = dbGetNoRecs(dbProdutos)
    lstEstoque.clear
    For i = 1 to registros
        resultado = dbReadNext(dbProdutos,produto)
        lstEstoque.add produto
    Next
    Call closeProduto()

No código acima estamos chamando a função "openProduto()" para abrir o objeto Database "dbProdutos", com isso podemos ter acesso aos dados do arquivo. Usamos o "dbGetNoRecs()" para capturar o numero de registro dentro do arquivo PDB, agora que sabemos quantos registros podemos executar um for no arquivo e capturar a primeira coluna para ser adicionar ao ListBox.

Não se esqueça de fechar o arquivo usando "closeProduto()".

Estamos usando o objeto ListBox, mas o que é este objeto?

ListBox é uma caixa onde encontramos várias opções na qual podemos selecionar uma, este objeto é ideal para carregar listas e exibir para o usuário. Atualmente temos outros objetos para este fim, podemos destacar o PopUp e o Grid.

Quando o usuário seleciona um item no ListBox é disparado um evento que possui dois comandos, conforme podemos ver abaixo:

    ponteiro = lstEstoque.Selected
    NextForm "frmVProduto"

Estamos capturando a posição do item selecionado e passando para a variável ponteiro e logo após estamos carregando e exibindo o formulário "frmVProduto".

Porem antes de desenvolver o código deste formulário vamos preparar o formulário "frmNProduto" para podermos cadastrar registros.

Abra o formulário e edite o seguinte código para o botão "btNGravar":

    Dim resultado as Integer
    Dim produto as String
    Dim preco as Float
    Dim quantidade as Integer
    
    "vamos converter os dados e armazenar em 
    "variáveis locais
    produto = fldNProduto.text
    preco = Val(fldNPreco.text)
    quantidade = Val(fldNQuantidade.text)
    "vamos chamar a rotina que grava o produto
    resultado = gravaProduto(produto,preco,quantidade)

O código acima captura os valores digitados pelo usuário e envia para a função "gravarProduto()" que faz todo o trabalho de padronização das entradas de dados no arquivo.

Bom agora vamos editar o código do botão "btNVoltar"

    Call limpaNCampos()
    NextForm "frmMain"
Bom agora temos como entrar com registros no PDB então vamos editar o código do formulário "frmVProduto". Este formulário é mais complexo que o anterior, então vamos ao "After Code" do formulário.

Edite o seguinte código:

    Dim resultado as Integer
    Dim produto as String
    Dim preco as Float
    Dim quantidade as Integer
    
    Call openProduto()
    resultado = dbPosition(dbProdutos,ponteiro,0)
    If resultado = 0 Then
        resultado = dbGet(dbProdutos,produto,preco,quantidade)
        fldVProduto.text = produto
        fldVPreco.text = str(preco)
        fldVQuantidade.text = str(quantidade)
    Else
        MsgBox "Erro ao posicionar ponteiro."
    End If
    Call closeProduto()

Estamos usando a variável ponteiro para posicionar o na tabela, usamos para isso a função "dbPosition()" e estamos lendo os dados usando a função "dbGet()".

O próximo passo e editar o código dos botões que trabalham com o incremento e do decremento dos produtos, selecione o botão "btVDecremento" e edite o seguinte código:

    Dim quantidade as Integer
    Dim valor as Integer
    Dim produto as String
    Dim preco as Float
    
    
    "convertendo os valores dos fld"s
    quantidade = Val(fldVQuantidade.text)
    valor = Val(fldVValor.text)
    produto = fldVProduto.text
    preco = Val(fldVPreco.text)
    
    "caso o decremento seja maior que o estoque ele então executa nada
    If valor > quantidade Then
        MsgBox "Não existe quantidade suficiente no estoque"
    Else
        quantidade = quantidade - valor
        "o parâmetro 0 edema que é um decremento
        If modificaDados(produto,preco,quantidade) = 0 Then
            fldVQuantidade.text = str(quantidade)
        End If
    End If

E para o botão "btVIncremento" edite o código:

    Dim quantidade as Integer
    Dim valor as Integer
    Dim produto as String
    Dim preco as Float
    
    
    "convertendo os valores dos fld"s
    quantidade = Val(fldVQuantidade.text)
    valor = Val(fldVValor.text)
    produto = fldVProduto.text
    preco = Val(fldVPreco.text)
    

    quantidade = quantidade + valor
    "o parametro 0 idica que é um decremento
    If modificaDados(produto,preco,quantidade) = 0 Then
        fldVQuantidade.text = str(quantidade)
    End If

Bom agora podemos modificar a quantidade de um determinado produto. O usuário pode ainda modificar o titulo do produto ou o preço, para tratar este evento vamos editar o seguinte código para o botão "btVModificar":

    Dim quantidade as Integer
    Dim produto as String
    Dim preco as Float
    Dim resultado as Integer
    
    "convertendo os valores dos fld"s
    quantidade = Val(fldVQuantidade.text)
    produto = fldVProduto.text
    preco = Val(fldVPreco.text)
    
    "o parametro 0 idica que é um decremento
     resultado = modificaDados(produto,preco,quantidade) 
     If Not resultado = 0 Then
        MsgBox "Erro ao atualizar dados"
     End If

Caso o usuário queira excluir o produto ele usará o botão "btVExcluir", edite o seguinte código para este botão:

    Dim resultado as Integer
    Dim resposta as Integer

    Call openProduto()
    
    resposta = Alert("Excluir", "Deseja Excluir este ítem?",0,"Sim","Não")
    If resposta = 0 Then
         resultado = dbDelete(dbProdutos,fldVProduto.text) 
         If Not resultado = 0 Then
            MsgBox "Erro ao excluir dados"
         Else
            fldVProduto.Text = ""
            fldVQuantidade.Text = ""
            fldVPreco.Text = ""
            fldVValor.Text = ""
            Call closeProduto()
            NextScreen "frmMain"
         End If
         
    End If   
    Call closeProduto()  

Para finalizar este formulário vamos editar o código do botão "btVVoltar".

    Call limparVCampos()
    NextForm "frmMain"

Chegamos ao fim desta série de artigos que ilustram o desenvolvimento de um aplicativo que mainpula dados de um arquivo PDB.

Estamos abertos a discussão no fórum do site www.softpalm.com.br onde estamos tirando duvidadas desta e de outras ferramentas.

Baixe o código fonte do programa, clicando aqui.

Wellington Pinto de Oliveira
softpalm@softpalm.com.br

Wellington Pinto de Oliveira

Wellington Pinto de Oliveira - Autor do livro "Desenvolvendo Aplicações Palm com NS Basic", atualmente trabalha com automação de processos industriais e códigos de barras. http://www.softpalm.com.br.