MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    Copiar dados de uma views do Mysql para uma tabela no Access utilizado drive odbc

    Compartilhe

    MARIA ALICE
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 1
    Registrado : 30/04/2016

    Copiar dados de uma views do Mysql para uma tabela no Access utilizado drive odbc

    Mensagem  MARIA ALICE em Sab 30 Abr 2016, 23:19

    Prezados,

    Para tentar copiar dados de uma views do mysql para uma tabela no access utilizando drive odbc, utilizei o seguinte exemplo (autor FreiNando):

    DoCmd.Hourglass True

    Dim Con As New ADODB.Connection
    Dim rstADO As New ADODB.Recordset
    Dim rstDao As DAO.Recordset

    Con.ConnectionString = "DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=mysql5.porta80.com.br;PORT=3306;" _
    & ";DATABASE=coosaude;UID=coosaude;PASSWORD=coop14@@;OPTION=3;"


    Con.Open

    rstADO.Open "SELECT * FROM vw_resumo_ch_horaria WHERE dt_registro Between Date(Forms!PlanilhaTipoPontoData!DataInicial) and Date(Forms!PlanilhaTipoPontoData!DataFinal)and cd_lotacao =" & Forms!PlanilhaPesquisa.Vinculo & ", Con, adOpenStatic, adLockOptimistic"
    Set rstDao = CurrentDb.OpenRecordset("SELECT * FROM vw_resumo_ch_horaria1")


    Do Until rstADO.EOF
    rstDao.AddNew

    'copiar os campos, registo por registo
    rstDao("dt_registro").Value = rstADO("dt_registro").Value
    rstDao("de_setor").Value = rstADO("de_setor").Value
    rstDao("nr_matricula").Value = rstADO("nr_matricula").Value
    rstDao("cd_lotacao").Value = rstADO("cd_lotacao").Value
    rstDao("cd_vinculo").Value = rstADO("cd_vinculo").Value
    rstDao("Diruno").Value = rstADO("Diurno").Value
    rstDao("Noturno").Value = rstADO("Noturno").Value
    rstDao("Diurno FDS").Value = rstADO("Diurno FDS").Value
    rstDao("Nourno FDS").Value = rstADO("Noturno FDS").Value
    rstDao.Update
    rstADO.MoveNext
    Loop

    Con.Close

    DoCmd.Hourglass False

    Entretanto o código não funciona e retorna a seguinte mensagem:
    A conexão não pode ser usada para realizar essa operação. Ela está fechada ou é inválida nesse contexto.

    Grata pela atenção!!!



    Gilberto Rocha
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1022
    Registrado : 21/01/2010

    Re: Copiar dados de uma views do Mysql para uma tabela no Access utilizado drive odbc

    Mensagem  Gilberto Rocha em Ter 03 Maio 2016, 21:08

    Olá, seja bem vindo.

    Mais ou menos isso:

    Public Function fncCopiaTabelaDoMysql()
    On Error Resume Next
    Dim Db As Database
    Dim Rs As Recordset

    DoCmd.SetWarnings False
    sSQL = "DELETE * FROM TabelaQueRecebe"
    DoCmd.RunSQL (sSQL)
    DoCmd.SetWarnings True

    On Error GoTo trata
    Set Db = CurrentDb
    MyslqServidor = "seuservidor"
    MyslqDatabase = "bancodedados"
    MyslqUsuario = "usuario"
    MyslqSenha = "senha"

    cnmy.Open "Driver={MySQL ODBC 5.1 Driver};Server=" & MyslqServidor & ";Database=" & MyslqDatabase & ";User=" & MyslqUsuario & "; Password=" & MyslqSenha & ";Option=3;"
    rsmy.CursorLocation = adUseClient
    rsmy.Open "Select * from tabelamysql order by id;", cnmy, adOpenDynamic, adLockOptimistic
    rsmy.MoveFirst
    Set Rs = Db.OpenRecordset("TabelaQueRecebe")

    If rsmy.EOF Or rsmy.BOF Then
    MsgBox "Não existem dados!", vbCritical, "Atenção"
    GoTo trata
    End If

    Do While Not rsmy.EOF

    Rs.AddNew

    If IsNull(rsmy!ID) = True Or rsmy!ID = "" Then
    Else
    Rs!ID = rsmy!ID
    End If

    If IsNull(rsmy!Campo1) = True Or rsmy!Campo1 = "" Then
    Else
    Rs!Campo1 = rsmy!Campo1
    End If

    If IsNull(rsmy!Campo2) = True Or rsmy!Campo2 = "" Then
    Else
    Rs!Campo2 = rsmy!Campo2
    End If

    Rs.Update

    rsmy.MoveNext
    Loop


    On Error Resume Next
    rsmy.Close
    cnmy.Close 'fecha o banco de dados
    Set rsmy = Nothing

    Rs.Close
    Set Db = Nothing

    sai:
    On Error Resume Next
    Set rsmy = Nothing
    Set Db = Nothing
    Exit Function

    trata:
    DoCmd.Hourglass False
    DoCmd.Echo True
    MsgBox "Erro Gerado no :" _
    & vbNewLine & "Erro Número: " & err.Number _
    & vbNewLine & "linha: " & Erl _
    & vbNewLine & "Descrição: " & err.Description _
    & vbNewLine & "Por favor contate o Administrador de Sistema.", vbCritical, err.Number & ", linha:" & Erl
    Resume sai

    End Function

    Verifique se a versão do seu driver é a correta.


    .................................................................................
    Resolveu? Clique em resolvido!
    Sistema para administração de Igrejas e Ministérios Evangélicos Congrega Fácil Online.
    Seja um representante em sua cidade!
    Baixe o sistema Congrega Fácil Online: Baixe aqui
    Código de cliente para testes: congregafacil

    SisFAT Cursos Online
    Faça Faculdade Teológica Online: Baixe aqui
    [Você precisa estar registrado e conectado para ver este link.]

    Batalha Bíblica, teste gratis!
    [Você precisa estar registrado e conectado para ver este link.]


    Analista de Controladoria

      Data/hora atual: Seg 05 Dez 2016, 04:25