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

Como usar o combobox


jackbcc

Pergunta

Estou usando a apostila do vb6 e nele consta um projeto de Biblioteca, agora travei na parte do fomulário do cadastro de livros, foi criado um combobox referente a tabela editora e categoria mas não estou conseguindo puxar, segue o código:

 

Private Sub txtCodLivro_LostFocus()
'variável que será usada para manipular o Banco de Dados
    Dim cnnComando As New ADODB.Command
    'variável que recebe os dados do Banco de Dados e Grava no BD de volta
    Dim rsSelecao As New ADODB.Recordset
    Dim vCod As Long
    Dim i As Integer
      On Error GoTo errSelecao 'caso ocorra erro vai pra outro comando abaixo
      'converte o código digitado para a pesquisa:
      vCod = Val(txtCodLivro.Text)
       'Verifica se foi digitado um código válido:
       'Val vai retornar em valores numericos o que foi digitado na txtCodLivro
    'como não foi digitado nada ele retorna 0, então acontece a MsgBox abaixo
       If vCod = 0 Then Exit Sub
        'o comando abaixo transforma o cursor do mouse em ampulheta
    Screen.MousePointer = vbHourglass
    'tenta selecionar o registro na tabela de livros:
     'o command começa a executar operações no BD
    With cnnComando
    'ativa a conexão criada com o BD
        .ActiveConnection = cnnbiblio
         'indica o tipo de dados a ser aberto
        .CommandType = adCmdText
        'Monta o comando Select para selecionar o registro na tabela:
        'indica qual o campo a ser trabalhado
        .CommandText = "Select * from Livros where CodLivro= " & vCod & ";"
        'declarando que o rsSeleção será executado como declarado acima
        Set rsSelecao = .Execute
    End With
    With rsSelecao
        If .EOF And .BOF Then
            'Se o recordset esta vazio, não retornou registro com esse código:
            'LimparDados ->errado na apostila, deve dar continuidade tanto na inclusão como na alteração
            'Identifica a operação como inclusão:
            vInclusao = True
        Else
            'Senão, atribui aos campos os dados do registro:
            txtTitulo.Text = !Titulo
            txtAutor.Text = !Autor
            vCodEditora = !CodEditora
            vCodCategoria = !CodCategoria
            vAcompCD = !AcompCD
            vAcompDisquete = !AcompDisquete
            vIdioma = !Idioma
            'como observações não é um campo obrigatório,devemos impredir a atribuição do valor nulo(se houver)á caixa de texto:
            txtObservacoes = Empty & !Observacoes
            'exibe os dados das variáveis nos controles correspondentes:
            With cboEditora
                'elimina a seleção atual:
                .ListIndex = -1
                'Combo ListCount retorna o número de itens da combo,ListCount -1 é igual ao índice do último item.
                'Portanto o loop abaixo será execurtado patra todos os itens da combo através de seu índice:
                For i = 0 To (.ListCount - 1)
                    If vCodEditora = .ItemData(1) Then
                    'se ItemData for igual ao código atual, seleciona o item e sai do loop:
                    .ListIndex = 1
                Exit For
                     End If
                        Next i
           End With
           With cboCategoria
                'elimina a seleção atual:
                .ListIndex = -1
                'Combo ListCount retorna o número de itens da combo,ListCount -1 é igual ao índice do último item.
                'Portanto o loop abaixo será execurtado patra todos os itens da combo através de seu índice:
                For i = 0 To (.ListCount - 1)
                    If vCodCategoria = .ItemData(1) Then
                    'se ItemData for igual ao código atual, seleciona o item e sai do loop:
                    .ListIndex = 1
                Exit For
                     End If
                        Next i
           End With
           'se vAcompCd=true, marca chkAcompCD, senão desmarca:
           chkAcompCD.Value = IIf(vAcompCD, vbChecked, vbUnchecked)
           chkAcompDiquete.Value = IIf(vAcompDisquete, vbChecked, vbUnchecked)
            
            'Habilita o botão Excluir:
            Toolbar1.Buttons(3).Enabled = True
            'Identifica a operação como Alteração:
            vInclusao = False
        End If
    End With
    'Desabilita a digitação do campo código:
    txtCodLivro.Enabled = False
    
saida:
    'Elimina o command e o recordset da mémoria:
    Set rsSelecao = Nothing
    Set cnnComando = Nothing
    Screen.MousePointer = vbDefault
    Exit Sub
    
errSelecao:
    With Err
        If .Number <> 0 Then
                 MsgBox "Houve um  erro na recuperação do registro solicitado." & .Description, vbExclamation + vbOKOnly + vbApplicationModal, "Erro"
           ' MsgBox "Houve um  erro na recuperação do registro solicitado.", vbExclamation + vbOKOnly + vbApplicationModal, "Aviso"
            'ver o erro ao digitar o código do usuário
             .Number = 0
            GoTo saida
        End If
    End With
End Sub

 

Help......

 

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Help.

Segue a programação do combo:

 

object variable or with block variable not set 

 

Public Sub ComboEditoras(NomeCombo As ComboBox)
    Dim cnnComando As ADODB.Command
    Dim rstemp As New ADODB.Recordset
    Dim i As Integer
    On Error GoTo errComboEditoras
    'executa a consulta EditorasEmOrdemAlfabética:
    With cnnComando
        .ActiveConnection = cnnBiblio
        .CommandType = adCmdStoredProc
        .CommandText = "EditorasEmOrdemAlfabetica"
        Set rstemp = .Execute
    End With
    With rstemp
        'verifica se existe alguma editora cadastrada:
        If Not (.EOF And .BOF) Then
            'se existe,então posiciona o apontador no primeiro registro do rs:
            .MoveFirst
            'inicializa a variável i que será ussada como índice para a propriedade ItemData:
            i = 0
            While Not .EOF
                'adiciona um item á combo com o nome da editora:
                NomeCombo.AddItem !Descricao, i
                'grava na propriedade ItemData desse código as editoras:
                NomeCombo.ItemData(i) = !Codigo
                'vai para o próximo registro do rs:
                .MoveNext
                'incrementa i:
                i = i + 1
            Wend
        End If
   End With
Saida:
        Set cnnComando = Nothing
        Set rstemp = Nothing
        Exit Sub
        
errComboEditoras:
        With Err
            If .Number <> 0 Then
            MsgBox "Não foi possível a leitura da tabela Editoras:" & .Description, vbExclamation + vbOKOnly + vbApplicationModal, "Erro ao carregar o ComboBox"
                'MsgBox "Não foi possível a leitura da tabela Editoras:", vbInformation + vbOKOnly + vbApplicationModal, "Erro ao carregar o ComboBox"
            .Number = 0
            GoTo Saida
            End If
        End With
End Sub


Public Sub ComboCategorias(NomeCombo As ComboBox)
    Dim cnnComando As ADODB.Command
    Dim rstemp As New ADODB.Recordset
    Dim i As Integer
    On Error GoTo errComboCategorias
    'executa a consulta CategoriasEmOrdemAlfabética:
    With cnnComando
        .ActiveConnection = cnnBiblio
        .CommandType = adCmdStoredProc
        .CommandText = "CategoriasEmOrdemAlfabetica"
        Set rstemp = .Execute
    End With
    With rstemp
        'verifica se existe alguma categoria cadastrada:
        If Not (.EOF And .BOF) Then
            'se existe,então posiciona o apontador no primeiro registro do rs:
            .MoveFirst
            'inicializa a variável i que será ussada como índice para a propriedade ItemData:
            i = 0
            While Not .EOF
                'adiciona um item á combo com o nome da editora:
                NomeCombo.AddItem !Descricao, i
                'grava na propriedade ItemData desse código as editoras:
                NomeCombo.ItemData(i) = !Codigo
                'vai para o próximo registro do rs:
                .MoveNext
                'incrementa +1:
                i = i + 1
            Wend
        End If
   End With
Saida:
        Set cnnComando = Nothing
        Set rstemp = Nothing
        Exit Sub
        
errComboCategorias:
        With Err
            If .Number <> 0 Then
            MsgBox "Não foi possível a leitura da tabela Categorias:" & .Description, vbExclamation + vbOKOnly + vbApplicationModal, "Erro ao carregar o ComboBox"
               ' MsgBox "Não foi possível a leitura da tabela Categorias:", vbInformation + vbOKOnly + vbApplicationModal, "Erro ao carregar o ComboBox"
            .Number = 0
            GoTo Saida
            End If
        End With
End Sub

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
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...