MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

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


2 participantes

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

    avatar
    MARIA ALICE
    Novato
    Novato


    Respeito às regras : 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 Empty Copiar dados de uma views do Mysql para uma tabela no Access utilizado drive odbc

    Mensagem  MARIA ALICE 30/4/2016, 19: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
    Gilberto Rocha
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Gilberto Rocha 3/5/2016, 17: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!
    Código de cliente para testes: congregafacil

    SisFAT Cursos Online
    www.congregafacil.com

    Analista de BI SR

      Data/hora atual: 28/3/2024, 22:45