Página 1 de 1

Form carregar Registro Conforme Opção [RESOLVIDO]

Enviado: Sáb Mai 06, 2017 6:27 pm
por pedrobb
Pessoal,
Eu uso a função abaixo pra carregar um formulário:

Private Sub CarregaRegistro()
'carrega os dados do primeiro registro
If Not IsEmpty(.Cells(indiceregistro, colCod)) Then
Me.txtCod.Text = .Cells(indiceregistro, colCod).Value
Me.CombAtivos.Value = .Cells(indiceregistro, colNomedoAtivo).Value
Me.TxtTipo.Text = .Cells(indiceregistro, colTipo).Value
Me.txtStatus.Text = .Cells(indiceregistro, colStatus).Value
End Sub

Na Coluna 2, chamada colStatus tenho 2 status: Ativo e Inativo.
Quando o form é aberto, carrega todos os dados, seja Ativo ou Inativo.

Como fazer pro usuário optar por Carregar no Form conforme a sua conveniência?
Ou seja, filtrar por Status: Ativo, Inativo, ou Todos.
Grato,
Pedro

Re: Form carregar Registro Conforme Opção

Enviado: Dom Mai 07, 2017 12:53 am
por srobles
pedrobb,

Para aplicar um filtro ao carregar os dados, adicione OptionButtons ou um ComboBox com os Status citados, e na rotina de carga, adicione a linha contendo o filtro.

Exemplo para o ComboBox:

Código: Selecionar todos

Private Sub CarregaRegistro()
   'carrega os dados do primeiro registro
      If Not IsEmpty(.Cells(indiceregistro, colCod)) Then
      	 If ComboBox1 <>"TUDO" Or ComboBox1 <>"Tudo" Then
            If .Cells(indiceregistro, colStatus) = Me.ComboBox1 Then 'linha para aplicar o filtro
               Me.txtCod.Text = .Cells(indiceregistro, colCod).Value
               Me.CombAtivos.Value = .Cells(indiceregistro, colNomedoAtivo).Value
               Me.TxtTipo.Text = .Cells(indiceregistro, colTipo).Value
               Me.txtStatus.Text = .Cells(indiceregistro, colStatus).Value
            End If
         Else
               Me.txtCod.Text = .Cells(indiceregistro, colCod).Value
               Me.CombAtivos.Value = .Cells(indiceregistro, colNomedoAtivo).Value
               Me.TxtTipo.Text = .Cells(indiceregistro, colTipo).Value
               Me.txtStatus.Text = .Cells(indiceregistro, colStatus).Value         
         End If
      End If
End Sub
Exemplo para os OptionButtons:

Código: Selecionar todos

'Filtrar apenas Ativos
Private Sub OptionButton1_Click()
   'carrega os dados do primeiro registro
      If Not IsEmpty(.Cells(indiceregistro, colCod)) And .Cells(indiceregistro, colStatus) = "Ativo" Then
            Me.txtCod.Text = .Cells(indiceregistro, colCod).Value
            Me.CombAtivos.Value = .Cells(indiceregistro, colNomedoAtivo).Value
            Me.TxtTipo.Text = .Cells(indiceregistro, colTipo).Value
            Me.txtStatus.Text = .Cells(indiceregistro, colStatus).Value
      End If
End Sub

'Filtrar apenas Inativos
Private Sub OptionButton2_Click()
   'carrega os dados do primeiro registro
      If Not IsEmpty(.Cells(indiceregistro, colCod)) And .Cells(indiceregistro, colStatus) = "Inativo" Then
            Me.txtCod.Text = .Cells(indiceregistro, colCod).Value
            Me.CombAtivos.Value = .Cells(indiceregistro, colNomedoAtivo).Value
            Me.TxtTipo.Text = .Cells(indiceregistro, colTipo).Value
            Me.txtStatus.Text = .Cells(indiceregistro, colStatus).Value
      End If
End Sub

'Todos os registros
Private Sub OptionButton3_Click()
   'carrega os dados do primeiro registro
      If Not IsEmpty(.Cells(indiceregistro, colCod)) Then
            Me.txtCod.Text = .Cells(indiceregistro, colCod).Value
            Me.CombAtivos.Value = .Cells(indiceregistro, colNomedoAtivo).Value
            Me.TxtTipo.Text = .Cells(indiceregistro, colTipo).Value
            Me.txtStatus.Text = .Cells(indiceregistro, colStatus).Value
      End If
End Sub
Experimente e retorne ok?

Abs

Re: Form carregar Registro Conforme Opção

Enviado: Dom Mai 07, 2017 9:23 am
por pedrobb
Saulo,
Tentei com OptionButton.
Ao clicar no OptionButton1_Click() já sai do procedimento, pois o primeiro registro é "INATIVO".
Acho que precisa de While ou Do Until, Loop, etc, que é a minha dificuldade.

Pra facilitar, anexo um modelo.
Preciso que os Botões Ativos e Inativos funcionem.
Grato,
Pedro

Re: Form carregar Registro Conforme Opção

Enviado: Dom Mai 07, 2017 12:37 pm
por srobles
pedrobb,

Fiz as modificações necessárias. Veja se é isso o que pretende ok?

Abs

Re: Form carregar Registro Conforme Opção

Enviado: Seg Mai 08, 2017 9:31 am
por pedrobb
Saulo,
Achei genial a sua idéia. Muito obrigado!
Ao passar pra minha planilha, está dando problema ao mover os registros.
Na Listbox, quando o cursor chega no último registro, as caixas de texto mostram os dados do cabeçalho.
Isso não ocorre no seu exemplo postado.
O que ocorre?

Re: Form carregar Registro Conforme Opção

Enviado: Seg Mai 08, 2017 10:41 am
por srobles
pedrobb,

Nos testes que realizei aqui, isso não ocorre. Vou verificar a possível causa disso e volto a postar aqui a solução.
Sua nova planilha possui a mesma estrutura de dados que a postada aqui? O ideal seria trabalharmos na planilha que você utilizará no dia-a-dia.

Abs

Re: Form carregar Registro Conforme Opção

Enviado: Dom Mai 21, 2017 6:40 pm
por srobles
pedrobb,

Como vai amigo?

Favor, caso sua dúvida tenha sido sanada, edite o título de seu tópico com o texto [RESOLVIDO], ok?

Abs