Peres boa noite.
Fiz uma análise em teu sistema e verifiquei que o sistema não possui/possui poucas validações para manter a integridade dos dados.
Mediante a isto, tomei a liberdade e elaborei um Cadastro de Cliente e nele consta todas as validações necessárias para manter os dados validados.
Fiz alguns ajustes no layout do formulário também.
Os botões de navegação foram excluidos pois não faz sentido utilizá-los sendo que existe uma tela de pesquisa.
OBS: quando sua tabela de clientes tiver mais de 50 registro, a navegação fica inviável.
- Cadastro de Cliente:
- Tela de pesquisa:
Obs: Elaborei esta tela somente para teste e carregar os dados do cliente. Se for necessário, substitua pela tela de pesquisa do sistema.
O sistema possui 2 módulos e suas respectivas funções genéricas:
*** mdlFunctions ***
- fnLimpaCtrl: limpa os controles do formulário informado como parâmetro
- fnBloqCtrl: bloqueia controles do formulário informado como parâmetro
- fnHabilCtrl: habilita controles do formulário informado como parâmetro
- fnBuscaCEP: faz a busca do CEP no webservice dos CORREIOS e carregando os campos pertinentes ao logradouro.
- fnComando: habilita/desabilita botoes de comandos conforme a TAG(propriedade Marca) do botão e o nome do formulário informados como parâmetros.
Explicação da "tag" de cada botão:
*** mdlFunctions ***
- Constam as variáveis globais e constantes declaradas para utilização em todo o sistema.
NOTA: Utilize o formulário "frmCadCliente" como modelo para outros formulários, pois nele já constam todas as rotinas necessárias de validação de dados e comportamentos dos controles e comandos também.
NOTA2: O endereço do cliente deve ficar em uma tabela à parte, pois pode ocorrer do cliente possuir o endereço de entrega diferente do endereço de cobrança.
Também fiz os comentários em cada linha de comando do formulário para melhor entendimento.
Segue versão atualizada.
Espero ter ajudado.
Boa sorte
[]'s
FIM