Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda Em Formulário De Alteração


epottag

Pergunta

Bom dia pessoal!

Estou com um problema aqui numa planilha que estamos desenvolvendo...

Tenho um arquivo, que contém, basicamente um banco de dados e dois formulário, sendo um de LANÇAMENTOS e outro para ALTERAÇÕES.

Os lançamentos vêm funcionando corretamente. Entretanto, há vários lançamentos com o mesmo HISTÓRICO, ou seja, mesmo nome o que aparentemente vem trazendo o erro que não conseguimos solucionar.

O formulário de alteração tem os seguintes campos: lançamentos, histórico do movimento, valor de crédito, de débito, data e grupo. Quando selecionamos qualquer um dos lançamentos que têm o mesmo histórico, o GRUPO do primeiro lançamento (dentre os iguais) se altera, ficando igual ao escolhido (seja o segundo, o terceiro, quarto...da lista de lançamentos iguais).

Disponibilizo abaixo as linhas de comando escritas para efetuar as ALTERAÇÕES (estão todas no formulário de alteração de um dos meses) e aguardo alguma sugestão!

Private linha As Long

Private Sub CmdAlterar_Click()

'Altera o valor do movimento

Dim ValorCr As String, Faz As String, ValorDb As String, Hist As String, Data As Date

ValorCr = Me.TxtValorCr.Value

ValorDb = Me.TxtValorDb.Value

Data = Me.TxtData.Value

Hist = Me.TxtHist.Value

Faz = Me.TxtFaz.Value

Range("ValorCrMar06").Item(linha) = ValorCr

Range("ValorDbMar06").Item(linha) = ValorDb

Range("DataMar06").Item(linha) = Data

Range("LancMar06").Item(linha) = Hist

Range("FazMar06").Item(linha) = Faz

'Abre a planilha

ActiveWorkbook.Unprotect "secreto"

Sheets("JABMar06").Visible = True

Sheets("JABMar06").Select

'Classifica dados por ordem de data

Range("A2:G700").Sort key1:=Range("A2"), order1:=xlAscending, header:=xlGuess

'Fecha a planilha ativa e protege a pasta de trabalho

ActiveSheet.Visible = False

ActiveWorkbook.Protect "secreto"

'Redefine o formulário

Me.LstAltMar06.ListIndex = -1

Me.TxtValorCr.Text = Empty

Me.TxtValorDb.Text = Empty

Me.TxtData.Text = Empty

Me.TxtHist.Text = Empty

Me.TxtFaz.Text = Empty

Me.LblLançamento.Enabled = False

Me.LblValorCr.Enabled = False

Me.LblValorDb.Enabled = False

Me.LblData.Enabled = False

Me.LblHist.Enabled = False

Me.LblFaz.Enabled = False

Me.CmdAlterar.Enabled = True

Me.CmdFechar.Enabled = True

End Sub

Private Sub CmdFechar_Click()

Unload Me

End Sub

Private Sub LstAltMar06_Click()

'Define Linha como a posição do movimento selecionada

linha = Me.LstAltMar06.ListIndex + 1

'Habilita os controles desabilitados

Me.CmdAlterar.Enabled = True

Me.CmdFechar.Enabled = True

Me.TxtValorCr.Enabled = True

Me.TxtValorDb.Enabled = True

Me.TxtData.Enabled = True

Me.TxtHist.Enabled = True

Me.TxtFaz.Enabled = True

'Mostra na caixa de texto o valor do movimento selecionado

Me.TxtValorCr = Range("ValorCrMar06").Item(linha)

Me.TxtValorDb = Range("ValorDbMar06").Item(linha)

Me.TxtData = Range("DataMar06").Item(linha)

Me.TxtHist = Range("LancMar06").Item(linha)

Me.TxtFaz = Range("FazMar06").Item(linha)

End Sub

Desde já agradeço e aguardo sugestões!

Abraço a todos

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Então, os históricos são, de fato, iguais. Entretanto, eles têm informações diferentes para os outros campos do formulário, os quais podem ser alterados, entende?

Mas, quando alteramos algum dado em um dos lançamentos que têm históricos iguais, o GRUPO do primeiro destes lançamentos (com o mesmo histórico) é também alterado.

Aliás, nem é necessário que se faça alguma alteração nos dados, basta clicar no botão Alterar que o Grupo será alterado.

Ao fazermos uma depuração, observamos que o comando de alteração não é feito por inteiro (digamos, de "uma só vez"), pois num deterinado momento ele interrompe a rotina que fazia e inicia a rotina "Private Sub LstAltMar06_Click()".

E isso, aparentemente, que vem causando este problema!

E os históricos são, de fato iguais. Mas apenas alguns deles!

Valeu Graymalkin! espero que agora eu tenha conseguido explicar melhor o problema que temos aqui!!

Abraços,

epottag

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - epottag -

Exato! Acreditamos ser este o problema!

Entretanto, esta rotina com o início:

Me.LstAltMar06.ListIndex = -1

Está programada dessa forma! Será que poderiamos modificar algo na programação em si, para que este erro não ocorresse? Não conseguimos encontrar uma solução para isso em termos de programação.

A única solução que já apontamos seria a alteração simultânea do HISTÓRICO do lançamento sempre que algum dado deste lançamento fosse alterado. Dessa forma, excluiríamos o erro, dado que a Lst estaria também "alterada".

Mas isto traria certo prejuízo em termos de operação do programa, certo?

Por isso gostaríamos de concluir a solução em termos de programação...será que é possível?

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Então, nossa intenção com estas linhas de comando é a de manter o formulário aberto (Formulário de Alteração), mas sen qualquer informação nas caixas de listagem e de texto. Assim, colocamos o comando:

Me.LstAltMar06.ListIndex = -1

Me.TxtValorCr.Text = Empty

Me.TxtValorDb.Text = Empty

Me.TxtData.Text = Empty

Me.TxtHist.Text = Empty

Me.TxtFaz.Text = Empty

Em seguida, tornamos "falsos" os valores referentes a cada um deles.

Explicando rapidamente o funcionamento do comando como um todo: na verdade, esse formulário trabalha "sobre" um BD, o qual é formado por uma série de ranges. O formulário tem as caixas que se referem a cada uma das ranges, alterando-as de acordo com o HISTÓRICO selecionado. Assim, o comando acima descrito serviria para o operador poder alterar mais que um lançamento/ítem a cada vez que o formulário é selecionado. Assim, o comando permitiria ao operador efetuar mais alterações sem fechar o formulário!

Será que o comando que damos nessa tentativa não é o ideal?

Obrigado e um abraço,

Erich

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...