MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Descobrir versão do conector MySQL

    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    Descobrir versão do conector MySQL Empty Descobrir versão do conector MySQL

    Mensagem  DamascenoJr. em 24/12/2018, 05:25

    Atualizei a versão do driver mysql connector instalado na minha máquina e tive problemas com minhas aplicações.
    Fiquei imaginando isso acontecendo na máquina dos clientes e o tamanho da dor de cabeça.

    Deve haver outras formas de se fazer isso, mas atualmente esta me resolve

    Código:
    Private Sub fncConectorVersao()

        Dim i As Byte
        Dim j As Byte
        Dim k As String
        Dim l As String
        Dim m As Boolean
       
        'locais a serem pesquisados
        k = Environ("PROGRAMFILES(x86)") & "|" & Environ("ProgramFiles") & "|" & Environ("Programw6432")
       
        'versão a serem pesquisadas
        l = "5.1|5.3|8.0"

        'access 2010 e superiores
        #If VBA7 Then
            'access 64 bits
            #If Win64 Then
                'varrendo versões a serem pesquisadas
                For i = 0 To UBound(Split(l, "|"))
                    'varrendo locais a serem pesquisados
                    'nesse caso particular, somente o resultado de Environ("Programw6432")
                    For j = 2 To 2
                        'atribuindo true à variável "m" caso exista na subpasta MySQL
                        'a pasta com uma das versões a serem pesquisadas
                        m = Nz(Dir(Split(k, "|")(j) & "\MySQL\Connector ODBC " & Split(l, "|")(i), vbDirectory)) <> ""
                        'se a variável "m" for true então saia deste laço for
                        If m Then Exit For
                    'próximo local
                    Next j
                    'se a variável "m" for true então saia deste laço for
                    If m Then Exit For
                'próxima versão
                Next i
            'access 32 bits
            #Else
                'varrendo versões a serem pesquisadas
                For i = 0 To UBound(Split(l, "|"))
                    'varrendo locais a serem pesquisados
                    'nesse caso particular, não incluir o resultado de Environ("Programw6432")
                    For j = 0 To 1
                        'atribuindo true à variável "m" caso exista na subpasta MySQL
                        'a pasta com uma das versões a serem pesquisadas
                        m = Nz(Dir(Split(k, "|")(j) & "\MySQL\Connector ODBC " & Split(l, "|")(i), vbDirectory)) <> ""
                        'se a variável "m" for true então saia deste laço for
                        If m Then Exit For
                    'próximo local
                    Next j
                    'se a variável "m" for true então saia deste laço for
                    If m Then Exit For
                'próxima versão
                Next i
            'fim da verificação condicional
            #End If
        'access 2007
        #Else
            'varrendo versões a serem pesquisadas
            For i = 0 To UBound(Split(l, "|"))
                'varrendo locais a serem pesquisados
                'nesse caso particular, não incluir o resultado de Environ("Programw6432")
                For j = 0 To 1
                    'atribuindo true à variável "m" caso exista na subpasta MySQL
                    'a pasta com uma das versões a serem pesquisadas
                    m = Nz(Dir(Split(k, "|")(j) & "\MySQL\Connector ODBC " & Split(l, "|")(i), vbDirectory)) <> ""
                    'se a variável "m" for true então saia deste laço for
                    If m Then Exit For
                'próximi local
                Next j
                'se a variável "m" for true então saia deste laço for
                If m Then Exit For
            'próxima versão
            Next i
        'fim da verificação condicional
        #End If
       
        'se a variável "m" for true então
        If m Then
            'mensagem com a versão detectada
            Call MsgBox("Versão MySQL Connector/ODBC detectada: " & Split(l, "|")(i), vbInformation, "MySQL")
        'senão
        Else
            'mensagem sem versão
            Call MsgBox("Nenhuma versão do MySQL Connector/ODBC detectada.", vbExclamation, "MySQL")
        'fim da verificação condicional
        End If
       
    End Sub

    Eu utilizo assim

    Código:
    ...

        'se a variável "m" for true então
        If m Then
            'atualizo versão na tabela que armazena parâmetros da aplicação
            Call CurrentDb.Execute("update tblParametros set driver = '" & Split(l, "|")(i) & IIf(i > 0, " ANSI", "") & "';")
        'senão
        Else
            'mensagem sem versão
            Call MsgBox("Nenhuma versão do MySQL Connector/ODBC detectada.", vbExclamation, "MySQL")
        'fim da verificação condicional
        End If


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    hiperjohn
    hiperjohn
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 97
    Registrado : 06/06/2013

    Descobrir versão do conector MySQL Empty Re: Descobrir versão do conector MySQL

    Mensagem  hiperjohn em 27/12/2018, 19:15

    Ivan, obrigado pela sua contribuição!
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    Descobrir versão do conector MySQL Empty Re: Descobrir versão do conector MySQL

    Mensagem  DamascenoJr. em 27/12/2018, 19:50

    Obrigado pelo retorno. Very Happy


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    Descobrir versão do conector MySQL Empty Re: Descobrir versão do conector MySQL

    Mensagem  DamascenoJr. em 12/10/2020, 04:03

    Código atualizado

    Código:
    Public Sub fncVersaoDriverMySQL()
    ' ----------------------------------------------------------------
    ' Autor    : DamascenoJr. (contato@damascenojr.com.br)
    ' Data      : 11/10/2020
    ' Propósito : Descobrir as versões do driver ODBC MySQL instalados.
    ' ----------------------------------------------------------------

    On Error GoTo trataErro

        Dim booNaoLeuChave  As Boolean
        Dim IsAccess64      As Boolean
        Dim arrValor
        Dim intContador    As Integer
        Dim booEncontrou    As Boolean

        #If Win64 Then
          IsAccess64 = True
        #Else
          IsAccess64 = False
        #End If

        booNaoLeuChave = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"). _
                        EnumValues(&H80000002, "Software" & _
                        IIf(fncIsWin64 And (Not IsAccess64), "\Wow6432Node", "") & _
                        "\ODBC\ODBCINST.INI\ODBC Drivers", arrValor)

        If Not booNaoLeuChave Then

            For intContador = LBound(arrValor) To UBound(arrValor)
                If arrValor(intContador) Like "MySQL ODBC*" Then
                    Call MsgBox(arrValor(intContador), vbInformation, "ODBC")
                    booEncontrou = True
                End If
            Next intContador
           
            If Not booEncontrou Then
                Call MsgBox("Nenhuma versão do MySQL ODBC detectada.", vbExclamation, "ODBC")
            End If
           
        Else
            Call MsgBox("Não foi possível verificar os drivers instalados no sistema.", vbExclamation, "ODBC")
        End If

    sair:
    On Error Resume Next
        Exit Sub

    trataErro:
        Resume sair

    End Sub

    Função auxiliar
    Código:
    Private Function fncIsWin64() As Boolean
    ' ----------------------------------------------------------------
    ' Propósito : Detectar se o sistema operacional é 64 bits.
    ' ----------------------------------------------------------------

      Dim objOperatingSystem

      For Each objOperatingSystem In GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_OperatingSystem")
          fncIsWin64 = InStr(objOperatingSystem.OSArchitecture, "64") > 0
      Next

    End Function


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

      Data/hora atual: 3/12/2020, 09:50