locked
Dividir BD RRS feed

  • Pergunta

  • Amigos, não econsigo dividir meu BD no Access. Eis o início do meu arquivo de códigos:

    Option Compare Database 

    Dim VarCh As Double, rst As Recordset, rsn As Recordset

    Dim ftp, ftpini, ftpfin, fhoraini, fhorafin, ftpm

    Dim fdig

    """ O ERRO É APONTADO AQUI, NA SEGUNDA LINHA:  """"

    Private Sub Form_Open(Cancel As Integer)
    Set rst = CurrentDb().OpenRecordset("tabelaA", dbOpenTable)
    DoCmd.Hourglass False
    DoCmd.GoToRecord , , acNewRec, 1
    msTtl = " ATENÇÃO!"
    vbStl1 = vbOKOnly + vbCritical
    vbStl2 = vbOKOnly + vbExclamation
    vbStl3 = vbOKOnly + vbInformation
    msVz = "CAMPO DE PREENCHIMENTO OBRIGATÓRIO   "
    msDpl = "CADASTRO JÁ EXISTE     "
    msTp = "Tempo Gasto:  "
    msTtltp = "TEMPO DE DIGITAÇÃO (Segundos)"
    ffmt1 = "###"
    spc7 = "       "
    MsgBox "ATENÇÃO: ATIVE A TECLA CAPS LOCK PARA ENTRADA DE TEXTOS EM MAIÚCULAS", , "MENSAGEM!"
    End Sub


    Não sei se é um problema de referência aos objetos ou o que.

    Alguém poderia me dar uma luz?

    Grato.

    Abraços.

    terça-feira, 6 de abril de 2010 22:49

Todas as Respostas

  • Rizzo,

    A forma como você está codificando é DAO, não ADO (que é o padrão do Access). Como ambas as formas tem recordset, ele não está conseguindo colocar um recordset DAO dentro do recordset ADO.

    Primeiro de tudo, verifique se o seu projeto está fazendo referência ao DAO. Dentro do editor de código vá em Ferramentas, Referências e deixe marcado a opção Microsoft DAO (com a versão mais alta que tiver).

    Repare que nessa tela o Microsoft ActiveX Data Object já deve estar marcado. Essa opção é o ADO. Aqui você tem 2 opções:

    - Se não estiver usando ADO, desmarque para não fazer confusão.
    - Se precisar do ADO e DAO, defina qual dos dois virá primeiro na ordem dessa lista. A ordem é importante porque quando você definir uma variável como recordset ele saber de que tipo é. Por exemplo:

    Dim rst as Recordset

    O access vai pegar o primeiro que tiver na lista, ou seja, ADO ou DAO. Se você deixar só um marcado não terá que se preocupar com isso.

    Você pode também deixar explícito qual recordset vai usar, pra não ficar refém da ordem, caso precise dos dois, tipo:

    Dim rst as dao.Recordset
    ou
    Dim rst as adodb.Recordset

     

    Qualquer dúvida entre em contato.

    []'s

    Alexandre (atadolfo@gmail.com)

    quarta-feira, 7 de abril de 2010 14:21
  • Olá,

     

    o ADO foi a biblioteca padrão apenas no Access 2000 e XP. No 97, 2003 e 2007, o DAO é o padrão. Mesmo assim, é boa prática sempre colocar o prefixo nas declarações, conforme explicado pelo colega Alexandre.

     

    Creio que o problema experimentado pelo colega Rizzo não tenha a ver com ambiguidade de objetos, mas sim pelo fato dele estar usando dbOpenTable em tabela vinculada, o que não funciona. Como não está usando o método Seek, não é preciso usar dbOpenTable, basta usar dbOpenDynaset.


    Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br
    sábado, 10 de abril de 2010 00:22
    Moderador