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

Cadastro Produtos VBA com Data Base File (.DB)

Esclarecimentos e dúvidas sob o Modelo de Aplicativo de Cadastro em VBA no Microsoft Excel publicado no site e blog http://www.tomasvasquez.com.br
ACGuedelha
Colaborador
Colaborador
Mensagens: 10
Registrado em: Sáb Fev 01, 2020 12:15 pm
Localização: Belo Horizonte

Cadastro Produtos VBA com Data Base File (.DB)

Mensagem por ACGuedelha »

Boa tarde
a Todos.

Estou criando projeto vba para conexão com arquivo Data Base File (.DB o login e senha possuo).
Contudo não estou conseguindo o código correto para conexão, carregar, excluir, editar, incluir
no banco de dados. Alguém poderia me ajudar como resolver.
Segue em anexo arquivo (banco SqL e projeto Vba) para analises.

Desde já agradeço qualquer ajuda.
Deus acima de tudo e todos.
Anexos
Downloads.rar
(2.12 MiB) Baixado 501 vezes


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.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Cadastro Produtos VBA com Data Base File (.DB)

Mensagem por webmaster »

ACGuedelha,

A dúvida é um pouco ampla demais para um só tópico. Uma explicação de até onde conseguiu chegar. O modelo é seu?

A connection string parece estar no caminho certo. Dê uma olhada neste link: http://www.macoratti.net/12/04/vb_pbd1.htm


Avatar do usuário
Guedelha
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Dom Jul 08, 2018 5:02 pm

Re: Cadastro Produtos VBA com Data Base File (.DB)

Mensagem por Guedelha »

Boa tarde
a Todos.

Criei projeto vba com banco Data Base File, e fiz o código abaixo com pesquisas e indicações
do forum. Contudo o código de conexão não carrega para editar, excluir, ou incluir.
Estou quebrando a cabeça. Alguém poderia me ajudar como resolver.

Código: Selecionar todos

Public Total As Long

Public Function ID()
On Error Resume Next
Dim cx As New ClasseConexao
Dim banco As ADODB.Recordset
Dim sqlite3 As String
Dim i As Long

sqlite3 = "SELECT * FROM t_produtos"
Set banco = New ADODB.Recordset
cx.Conectar
' ABRE CONEXAO
banco.Open sqlite3, cx.conn
sqlite3 = "DRIVER=SQLite3 ODBC Driver; Database=NotizCaixa.DB; LongNames=0; Timeout=100000; NoTXN=0; SyncPragma=NORMAL; StepAPI=0;UserID=A*****; Password=***********;"
Total = banco.RecordCount
' ABRE GRAVAÇAO
banco.Open sqlite3, cx.conn, adOpenKeyset, adLockOptimistic
banco.Close

' ENCERRAMENTO
Set rst = Nothing: Set conn = Nothing
    
End Function

Código: Selecionar todos

Public conn As New ADODB.Connection

Public Sub Conectar()

    Dim nConectar As String
    nConectar = "DRIVER=SQLite3 ODBC Driver; Database=NotizCaixa.DB; LongNames=0; Timeout=100000; NoTXN=0; SyncPragma=NORMAL; StepAPI=0;UserID=A*****; Password=***********;"
    conn.ConnectionString = nConectar
    conn.Open
    
End Sub

Public Sub Desconectar()
    conn.Close
End Sub
Grato por qualquer ajuda.

"O impossível existe até que alguém duvide
dele e prove o contrário."
(Albert Einstein)


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.


ACGuedelha
Colaborador
Colaborador
Mensagens: 10
Registrado em: Sáb Fev 01, 2020 12:15 pm
Localização: Belo Horizonte

Re: Cadastro Produtos VBA com Data Base File (.DB)

Mensagem por ACGuedelha »

Boa tarde
a Todos.

Consegui criar a conexão do projeto vba com banco DB, e fiz o código abaixo com pesquisas e indicações
do fórum, e ficou assim.

Código: Selecionar todos

Public conn As New ADODB.Connection

Public Sub Conectar()

    On Error GoTo Sair
    Dim nconectar As String
    Set conn = New ADODB.Connection
    Driver = "SQLite3 ODBC Driver"
    Rota = "H:\Banco de Dados\NotizCaixa.DB"
With conn
        .Provider = "MSDASQL"
        .ConnectionString = "DRIVER=" & Driver & ";DataBase=" & Rota & ";": C_Error = True
        .Open
End With
        MsgBox "Conexão efetivada", vbInformation
Exit Sub
Sair:
    C_Error = False
    MsgBox "Error" & Err.Description, vbCritical
    Err.Clear
End Sub

Public Sub Desconectar()
    If C_Error = True Then
        conn.Close
        Set conn = Nothing
        C_Error = False
    End If
End Sub
Mantive o módulo auxiliar.

Código: Selecionar todos

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 Produtos"
    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) = PesqInsumo.lstv.SelectedItem Then
            Id = I
            Exit For
        Else
            banco.MoveNext
        End If
   Next
   
   Set banco = Nothing
   cx.Desconectar

End Function
Contudo o código de conexão funciona, mas apresenta o erro ao abrir o formulário VBA.
O driver ODBC não oferece suporte para as propriedades solicitadas.
Diante deste erro fiz diversas pesquisas, mas não encontrei nenhum tema a respeito,
e estou quebrando a cabeça para conseguir.
Alguém poderia me ajudar ou como resolver.
"O impossível existe até que alguém duvide dele e prove o contrário."
(Albert Einstein)


ACGuedelha
Colaborador
Colaborador
Mensagens: 10
Registrado em: Sáb Fev 01, 2020 12:15 pm
Localização: Belo Horizonte

Re: Cadastro Produtos VBA com Data Base File (.DB)

Mensagem por ACGuedelha »

Boa tarde
a todos.

Gostaria de agradecer muito a todos que me orientaram para o sucesso em projeto de cadastro no SQLite usando o VBA Excel, e hoje já consigo efetuar o cadastro com inclusão, alteração e exclusão.
Mas como tudo na vida nada é por completo, e hoje não estou conseguindo efetuar pesquisa diretamente
na tabela no SQLite. Os códigos abaixo funcionam perfeitamente com o Access, e não estou conseguindo efetuar as mesmas tratativas usando o SQLite.
Este primeiro pesquisa usando o Listview.

Código: Selecionar todos

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 * FROM t_locaçao"
        If Me.chkPesquisa.Value = True Then
    sql = sql & " WHERE Codigo = 1;" & ProcurarPor & " LIKE '" & Me.txtPesquisa.Value & "%' ORDER BY " & OrdenarPor & " " & Ordem
        ElseIf Me.chkPesquisa.Value = False Then
        End If
    Set banco = New ADODB.Recordset
    cx.Conectar
    banco.Open sql, cx.conn
    Indice = banco("Codigo")
        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)
            End If
            banco.MoveNext
        Next i
        Set banco = Nothing
        cx.Desconectar
    End With
    Me.StatusBar1.Panels(1).text = "Registros: " & Me.lstv.ListItems.Count
End Sub
Já este segundo efetua o preenchimento do Combobox vba com o registro, e o preenchimento de textboxes com os dados relativos ao registro.

Código: Selecionar todos

Private Sub cboID_change()
    Dim cx As New ClasseConexao
    Dim banco As ADODB.Recordset
    Dim sql As String
    sql = "SELECT  Codigo, CodCliente, Planta, Deposito, Modulo, Rua, Predio, Andar, Apto, QtdVols, Locaçao, CodigoBarra FROM t_locaçao"
    sql = sql & " WHERE codigo = " & Me.cboID
    Set banco = New ADODB.Recordset
    cx.Conectar
    On Error Resume Next
    banco.Open sql, cx.conn

    Dim CodCliente As String
    Dim Planta As String
    Dim Deposito As String
    Dim Modulo As String
    Dim Rua As String
    Dim Predio As String
    Dim Andar As String
    Dim Apto As String
    Dim QtdVols As String
    Dim Locaçao As String
    Dim CodigoBarra As String

    CodCliente = banco.Fields("CodCliente")
    Planta = banco.Fields("Planta")
    Deposito = banco.Fields("Deposito")
    Modulo = banco.Fields("Modulo")
    Rua = banco.Fields("Rua")
    Predio = banco.Fields("Predio")
    Andar = banco.Fields("Andar")
    Apto = banco.Fields("Apto")
    QtdVols = banco.Fields("QtdVols")
    Locaçao = banco.Fields("CodigoBarra")

    Me.txt1.text = CodCliente
    Me.txt2.text = Planta
    Me.txt3.text = Deposito
    Me.txt4.text = Modulo
    Me.txt5.text = Rua
    Me.txt6.text = Predio
    Me.txt7.text = Andar
    Me.txt8.text = Apto
    Me.txt9.text = QtdVols
    Me.txt10.text = Locaçao
    Me.txt11.text = CodigoBarra
    
    Set banco = Nothing
    cx.Desconectar

End Sub
Sub CarregaCombos()

Dim cx As New ClasseConexao
Dim banco As ADODB.Recordset
Dim sql As String

sql = "SELECT Codigo, CodCliente, Planta, Deposito, Modulo, Rua, Predio, Andar, Apto, QtdVols, Locaçao, CodigoBarra FROM t_locaçao"
sql = sql & " ORDER BY codigo" 'Ordenar coluna
Set banco = New ADODB.Recordset
cx.Conectar
banco.Open sql, cx.conn
'Loop para carregar o combobox com a informação da tabela
Do While Not banco.EOF
    Me.cboID.AddItem banco!Codigo
    'Movimenta o banco para o próximo registro
    banco.MoveNext
Loop
Set banco = Nothing
cx.Desconectar
End Sub
Já quebrei a cabeça, além das infindáveis pesquisas na internet, e não consegui nada a respeito.
Agradeceria muito qualquer ajuda para estas soluções.

Grato.
"O impossível existe até que alguém duvide
dele e prove o contrário."
(Albert Einstein)


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