Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Conexão Listview com BD Sqlite

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
ACGuedelha
Colaborador
Colaborador
Mensagens: 10
Registrado em: Sáb Fev 01, 2020 12:15 pm
Localização: Belo Horizonte

Conexão Listview com BD Sqlite

Mensagem por ACGuedelha »

Boa tarde, a todos.

Estou tentando efetuar uma conexão de um tabela Sqlite com um Listview vba excel, contudo não obtendo sucesso em pesquisas na internet, alguém poderia me ajudar com este entrave.
O modulo ClassConexão já esta funcionando para todas os formulários onde haja inclusão, exclusão e alteração, contudo quando chego no Listview não consigo resolver a conexão.

MODULO

Código: Selecionar todos

Option Explicit
Global Const PATHDB = "H:\Banco de Dados\"
Global Const DBNAME = "Caixa.DB"
Public total As Long
Public Function Id()
    Dim cx As New ClasseConexao
    Dim banco As ADODB.Recordset
    Dim Sql As String
    Dim i As Long
    
    Sql = "SELECT * FROM Bancos"
    Set banco = New ADODB.Recordset
    cx.Conectar
    banco.Open Sql, cx.conn, adOpenKeyset, adLockOptimistic
    'total = banco.RecordCount
    For i = 1 To banco.RecordCount
        If banco(0) = BancoPesquisa.lstv.SelectedItem Then
            Id = i
            Exit For
        Else
            banco.MoveNext
        End If
   Next
   Set banco = Nothing
   cx.Desconectar
End Function
PROGRAMAÇÃO NO LISTVIEW

Código: Selecionar todos

Public ProcurarPor As String
Public OrdenarPor As String
Public Ordem As String
Sub cboOrdem_Change()
    Select Case cboOrdem.ListIndex
        Case 0
            Ordem = "DESC"
        Case 1
            Ordem = "ASC"
    End Select
    txtPesquisa_Change
End Sub
Private Sub cboOrdenarPor_Change()
    txtPesquisa_Change
End Sub
Private Sub chkPesquisa_Click()
    txtPesquisa_Change
End Sub
Private Sub lstv_Dblclick()
    With CadastroBancos
        .sql = "SELECT codigo, banco, codbanco, sigla, competencia, website, e_mail, status, UF, Cidade, Bairro, Unidade, NomeUnidade, TipoUnidade, SR, Endereco, CEP FROM t_bancos"
        .sql = .sql & " WHERE codigo = " & lstv.SelectedItem
        Set .banco = New ADODB.Recordset
        .cx.Conectar
        .banco.Open .sql, .cx.Conn, adOpenKeyset, adLockOptimistic
        Call .CarregaRegistros
        .Indice = Id
        .lblIndice.Caption = Id
        .lblTotal.Caption = Total
    Set .banco = Nothing
    .cx.Desconectar
    End With
    Unload Me
End Sub
Private Sub lstv_KeyPress(KeyAscii As Integer)
    lstv_Dblclick
End Sub
Private Sub txtPesquisa_Change()
    Dim cx As New ClasseConexao
    Dim banco As ADODB.Recordset
    Dim sql As String
    
    ProcurarPor = Me.cboPesquisarPor.Text
    OrdenarPor = Me.cboOrdenarPor.Text
    
    With Me.lstv
        .ListItems.Clear
        
        sql = "SELECT codigo, banco, codbanco, sigla, competencia, website, e_mail, status, UF, Cidade, Bairro, Unidade, NomeUnidade, TipoUnidade, SR, Endereco, CEP FROM t_bancos"
        
        If Me.chkPesquisa.Value = True Then
            sql = sql & " WHERE " & ProcurarPor & " LIKE '%" & Me.txtPesquisa.Value & "%' ORDER BY " & OrdenarPor & " " & Ordem
        
        ElseIf Me.chkPesquisa.Value = False Then
            sql = sql & " WHERE " & ProcurarPor & " LIKE '" & Me.txtPesquisa.Value & "%' ORDER BY " & OrdenarPor & " " & Ordem
        End If
        
        Set banco = New ADODB.Recordset
        cx.Conectar
        
        banco.Open sql, cx.Conn, adOpenKeyset, adLockOptimistic
        
        Dim i As Integer
        For i = 0 To banco.RecordCount - 1
            If Not IsNull(banco(0)) Then
                .ListItems.Add 1, , banco(0)
                .ListItems(1).ListSubItems.Add 1, , banco(1)
                .ListItems(1).ListSubItems.Add 2, , banco(2)
                .ListItems(1).ListSubItems.Add 3, , banco(3)
                .ListItems(1).ListSubItems.Add 4, , banco(4)
                .ListItems(1).ListSubItems.Add 5, , banco(5)
                .ListItems(1).ListSubItems.Add 6, , banco(6)
                .ListItems(1).ListSubItems.Add 7, , banco(7)
                .ListItems(1).ListSubItems.Add 8, , banco(8)
                .ListItems(1).ListSubItems.Add 9, , banco(9)
                .ListItems(1).ListSubItems.Add 10, , banco(10)
                .ListItems(1).ListSubItems.Add 11, , banco(11)
                .ListItems(1).ListSubItems.Add 12, , banco(12)
                .ListItems(1).ListSubItems.Add 13, , banco(13)
                .ListItems(1).ListSubItems.Add 14, , banco(14)
                .ListItems(1).ListSubItems.Add 15, , banco(15)
                
            End If
            banco.MoveNext
        Next i
        Set banco = Nothing
        cx.Desconectar
    End With
    
    Me.StatusBar1.Panels(1).Text = "Total de Itens Localizados: " & Me.lstv.ListItems.Count
    
End Sub
Private Sub UserForm_Initialize()
   
    With cboPesquisarPor
        .AddItem "Banco"
        .AddItem "codBanco"
        .AddItem "Sigla"
        .AddItem "Competencia"
        .AddItem "WebSite"
        .AddItem "E_mail"
        .AddItem "Status"
        .AddItem "UF"
        .AddItem "Cidade"
        .AddItem "Bairro"
        .AddItem "Unidade"
        .AddItem "NomeUnidade"
        .AddItem "TipoUnidade"
        .AddItem "SR"
        .AddItem "Endereco"
        .AddItem "Cep"
        .ListIndex = 1
    End With
    
    cboOrdenarPor.List = cboPesquisarPor.List
    cboOrdenarPor.ListIndex = 0
    With cboOrdem
        .AddItem "Crescente"
        .AddItem "Descrescente"
        .ListIndex = 0
    End With
    
    With Me.lstv
        
        .FullRowSelect = True
        .View = lvwReport
        .Gridlines = True
        .Font.Size = 10

        .ColumnHeaders.Add Text:="Codigo", Width:=50
        .ColumnHeaders.Add Text:="Banco", Width:=150
        .ColumnHeaders.Add Text:="CodBanco", Width:=150
        .ColumnHeaders.Add Text:="Sigla", Width:=100
        .ColumnHeaders.Add Text:="Competencia", Width:=150
        .ColumnHeaders.Add Text:="WebSite", Width:=100
        .ColumnHeaders.Add Text:="E_mail", Width:=100
        .ColumnHeaders.Add Text:="Status", Width:=100
        .ColumnHeaders.Add Text:="UF", Width:=100
        .ColumnHeaders.Add Text:="Cidade", Width:=100
        .ColumnHeaders.Add Text:="Bairro", Width:=100
        .ColumnHeaders.Add Text:="Unidade", Width:=100
        .ColumnHeaders.Add Text:="NomeUnidade", Width:=100
        .ColumnHeaders.Add Text:="TipoUnidade", Width:=100
        .ColumnHeaders.Add Text:="SR", Width:=100
        .ColumnHeaders.Add Text:="Endereco", Width:=100
        .ColumnHeaders.Add Text:="Cep", Width:=50
    End With
    Me.StatusBar1.Panels(1).Text = "Total de Itens Localizados: " & Me.lstv.ListItems.Count
    
End Sub
Desde já agradeço qualquer ajuda, pois estou a meses procurando uma solução para este projeto.

Grato.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder