Melque,
Você precisa definir uma forma melhor de limpar os controles logo após gravar uma Nota. Veja:
Na sua rotina btnGravar_Click() a última linha de comando chama a rotina LimpaControles.
A rotina LimpaControles, por sua vez, sai modificando os valores dos diversos objetos existentes em seu formulário. Issi implica dizer que quando ela altera o valor de um objeto desses, faz disparar a rotina Change desse objeto.
Assim, quando você altera (na rotinaLimpaControles) o valor do objeto CboOPPedido, é disparada a rotina Change desse objeto que faz a leitura de um objeto de BD. Nesse momento, o objeto de BD não existe ou não foi aberto. Assim, o código a que você se referiu aqui nesse último post, fica em loop infinito, chegando a travar a máquina, porque Do While Not banco.EOF (enquanto não chegar o fim do arquivo) sempre vai ser falso.
Desse modo, você precisará traçar estratégias de como tratar isso. Dentre as opções disponíveis, você definir uma variável booleana para verificar quando o controle já foi limpo, nãolimpar os controles ou esse controle, mudar o código desse evento no objeto para um outro evento como o evento Exit, etc.
Precisa pensar um pouquinho mais para resolver isso. Coloque um break point na linha 6 da rotina btnGravar_Click() (If Not Me.LstvDP.ListItems.Count > 0 Then) e depois continue a execução com F8 (depuração passo-a-passo) que você vai perceber o que estou lhe dizendo.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Postado : 01/11/2012 10:48 am