Administre sua Empresa – Parte I


Tenho juntado um punhado de dúvidas de diversos leitores ao longo de algum tempo; dúvidas com GRID, SPREAD, em suma; Todas estão relacionadas com o grupo de Componentes do Visual Basic.

Afinal, é indispensável para o bom programador VB, saber carregar um SPREAD, um MSFLEX GRID, um DBGRID e até mesmo uma PROGRESS BAR. E o melhor, de forma higiência. Criando funções específicas e separadas.

Juntei este ao qual chamarei de catalógo de dúvidas e resolvi destinar o meu espaço no Imasters para comentar sobre o uso dos componentes mais sensacionais do Front End Visual Basic, em cima de alguma lógica plausível e bem postada.

Acompanhando uma série de estatíticas sobre a administração das empresas nacionais, sofri uma catalepsia momentânea !

O resultado me assustou tanto, foi pior do que tomar um fora de uma baranga em festa de formatura.
É justo, mas 90% dos microempresários brasileiros não sabem realmente quanto ganham e quanto gastam. Vou ainda mais longe, pois 88% das microempresas paulistas não possuem um Prolabore estimado. Têm o capital dos sócios administrado concomitantemente em paralelo à receita da empresa. Isso é como você montar uma barraquinha de Hot Dog e administrar os seus gastos pessoais em cima da renda bruta obtida com as vendas do seu negócio.

E não é necessário ser pós graduado em Administração de Empresas para saber que o correto é: estimar o capital bruto, retirar a despesa líquida ou o caixa para rêpor a mercadoria, no caso da barraquinha de Hot Dog. E por fim, a sobra é aplicada a um fundo de caixa e o restante é o que chamamos de Prolabore. A renda que deve ser destinada aos respectivos sócios e submetida a um processo semelhante.

O problema é que nem tudo mundo detém essa forma de administrar como uma regra básica, como uma lei!

É é ai que mora o perigo. E onde morre esta série de colunas; pois tentarei ao máximo simplificar resumindo todo o processo de Contas a Pagar/Contas a Receber e Livro Caixa. Em um único projeto. Usando em matéria de componentes, o que o Visual Basic tem de melhor.

Meu amigo, antes que você saia como um pedreiro codificando o que vê pela frente.
Faremos um breve estudo e em cima deste construiremos a base de dados.
Parte por parte. Nada de construir a base toda e depois ir desenvolvendo os formulários no decorrer das outras matérias.

Tentarei ao máximo adicionar um fechamento a cada coluna.

1.1 Contas a Pagar

Para que se obtenha sucesso no ato de fazer um fechamento de gastos mensal e tirar o seu Prolabore.
Ter todas as contas a pagar em dia é fundamental. E mais fundamental ainda é construir um projeto que atenda as espectativas financeiras e proceda uma amarração contábil eficiente.
Sendo assim, para o formulário de Contas a Pagar funcione corretamente vincularemos o mesmo a três chaves estrangeiras:
Fornecedores, Contas Memo (Contas Bancárias) e Categorias/Sub Categorias de Despesa.

Já com a questão das CONSTRAINTS após a criação das tabelas. É bem simples!
Todos os relacionamentos deste pequeno módulo, estão concentrados da tabela PCOMPRA. Afinal, uma conta a pagar provém de um Fornecedor, é paga a partir de uma conta bancária e possui uma Categoria / Sub Categoria para despesa, exemplo Categoria – Despesas Domésticas, Sub Categoria – Conta de Luz, assim como o Microsoft Money.
Foi uma idéia oficializada neste software e que eu particularmente adorei.

O Relacionamento Categoria com SubCategoria, ocorrerá numa mesma tabela; de forma sintética e analítica.
E com essa base devidamente preenchida você já terá um controle simples das suas despesas podendo até fazer um fechamento mensal de gastos.
Mas é claro, vamos dar uma cara a essa lógica. Usando o nosso bom e velho Visual Basic, portando algumas técnicas de programação modernas, generalizando o código em Funções Globais ao invés de ficar copiando e colando código.

Dentre as funções genéricas, separei algumas neste módulo:

ModFunções

 'Módulo Básico com que conterá
 'as funções mais básicas usadas
 Option Explicit
 Dim cConn As ADODB.Connection
 Dim cStrConn As Variant
 Public cMensagem As String
 Public Const cTitulo = "FINANCEIRO"

 Public Function ConectaBanco() As  Boolean

 	ConectaBanco = False

 	'Protegendo em memória na função
 	'os objetos a serem usados
 	Set cConn = New ADODB.Connection

    'Não se esqueça de direcionar o path com o banco	
    'para o diretório em que o mesmo estive em sua
    'máquina. Ou ultilize um arquivo .INI para informar
    'o path de conexão com a máquina.
    cStrConn = "Provider=Microsoft.Jet.OLEDB.4.0;"
 	cStrConn = cStrConn & "Data Source=D:Imasters40ª Materiafinanceiro.mdb;"
 	cStrConn = cStrConn & "Persist Security Info=False" 'Abrindo conexão  com a base

    cConn.Open cStrConn 
    Set cStrConn = Nothing

    ConectaBanco = True

 End Function

 Public Function DesconectaBanco() As Boolean 

      DesconectaBanco  = False

      cConn.Close
      Set cConn = Nothing

      DesconectaBanco = True

 End Function

 Public Function HabilitaCampo(NomeForm As Form, _
                               NomeCampo As TextBox, _
                               Habilita As Boolean)

      'Instrução Reduzida para Habilitar
      'ou desabilitar Campos

       NomeForm.NomeCampo.Enable = Habilita

  End Function

 Public Function DisparaComandos(cInstrucao As String) As Boolean

      'Esta função fará as conexões com o banco e dispará  os
      'comandos direto ao objeto de conexão
      'sem o uso de command's e ou recordset's

      DisparaComandos = False

      If ConectaBanco = True Then

        If IsNull(cInstrucao) = True Then
          cMensagem = MsgBox("ERRO INTERNO: O Banco 
Recebeu uma instrução  nula.", vbCritical, cTitulo)
          Exit Function
        End If

        cConn.Execute cInstrucao

      End If

      Call DesconectaBanco

      DisparaComandos = True

 End Function

Notem que generalizei ao máximo. Tudo o que for usado em um ou mais formulários recomenda-se aplicar em funções globais com retorno Booleano ou seja, sempre vamos ter a certeza de que aquela função foi executada com sucesso.

frmContaMemo

Este é o cadastro simples de contas bancárias, que mandará um código Chave Estrangeira para o formulário frmPCompra.
Este será codificado passo a passo na semana que vem. Notem o encaixe dos componentes:

Atualmente ando abolindo o uso do DataControl para cordenação de registros em um Cadastro.

Seu método de acesso ao banco é arcaíco e mau estruturado. Seus procedimentos são meio desengonçados.
Ele protege além do objeto de conexão, outro objeto em memória de forma preemptiva.
Imagine um passageiro no ônibus sem o número da passagem.

O ideal na hora de programar qualquer tipo de cadastro, é deixar o formulário o mais solto possível.
Fazendo as rotinas de alteração/inclusão e exclusão via instrução SQL direto no objeto de conexão; sem a necessidade de
um ponteiro recordset.Que a propósito só deve ser aberto, quando os botões de navegação forem acionados.
No caso do exemplo da figura abaixo são os botões Próximo e Anterior.

Não se esqueça ainda de aplicar validações rigorosas e de preferência na hora de disparar as rotinas dentro do banco,
como uma página em ASP quando faz o Submit. Note na figura que o Combo com o Nome do Banco é carregado em
tempo de execução. Não há nenhuma tabela de cadastros de bancos na nossa base de dados.
Talvez até houvesse a necessidade em sistemas de escrita contábil. Então todos sabemos que existem menos de 20
bancos economicamente participantes em nosso país. Por que não carregar em tempo de execução o Combo.
E se caso o meliante do usuário desejar optar por um que não tenha sido carregado.
Basta clicar no botão ao lado e incluir um novo banco ao cadastro, naquela execução.
Pois não há o mínimo interesse em aumentar o volume de dados do Combo.

frmFornecedores

Já neste Form. A auto numeração foi deixada por conta do banco. É só será exibida no quando as rotinas de navegação entre os
registros for disparada. Neste formulário foi codificado as rotinas essenciais e não se esqueça de inserir a mascára no campo
referente a Data de Entrega. Observe:

Clique  aqui para abrir a janela pop up com o código

frmCATEGORIASUB

Com este aqui, coloque a mão na massa. E obtenha assim uma idéia básica de como iniciar um simples plano de despesas para
administrar a sua microempresa. É claro que empresas como a Votorantim,
possuem um plano de contas muito mas muito mais complexo. Qualquer dúvida, eu tô na área . . .

Legenda do código:

destaque
comentários
códigos

Na semana que vem. Volto com a continuação enquanto vocês se recuperam dos estragos causados pelo Carnaval. Ainda por fim, preciso comunicar-lhes sobre os problemas que estive com minha conta de email do Imasters e acabei por não receber nenhum email enviado no período de 26/02/2003 a 05/03/2003. Porém quero comunicar-lhes que já está tudo certo e o meu email continua o mesmo: fernando.andrade@imasters.com.br.

Abraços a todos. Beijos para as meninas. E quando chegar o final de semana:

Esse negócio de se trajar de mulher no Carnaval e sobretudo afirmar que isso é só por que é Carnaval. Não é digno. Eu particularmente acho que isso é uma perobagem adquirida e um processo de encapsulamento que mais cedo ou mais tarde poderá expandir-se e lhe tornar uma mulher presa no corpo de um homem.

Publicado em 29 de dezembro de 2008, em VBA. Adicione o link aos favoritos. Deixe um comentário.

Deixe um comentário