Notifications
Clear all

DAO FindFirst Recordset - base de dados em excel

3 Posts
2 Usuários
0 Reactions
1,210 Visualizações
(@vinniz)
Posts: 0
New Member
Topic starter
 

Bom dia, pessoal
Por favor, estou com um dúvida em uma macro que fiz utilizando a técnica DAO. O jeito que preciso fazer é utilizando uma base em Excel ao invés de utilizar uma base em Access.
O problema que encontrei foi no comando: Recordset.FindFirst
Não estou conseguindo colocar a sintaxe correta no critério. Poderiam me ajudar?

Segue abaixo o código e anexo os arquivos para teste (só precisando atualizar o endereço do arquivo base).

Option Explicit
Private Endereco2 As String
Private Nome2 As String
Private db As DAO.Database
Private rs As DAO.Recordset

Sub definirenderecosnomes()
   Endereco2 = "C:UsersvpoliveiraDesktop"
   Nome2 = "base.xlsx"
End Sub

Sub EditaCampoNaBaseDeDados()
  Dim Resp As String
  Call definirenderecosnomes

  Set db = OpenDatabase(Endereco2 & Nome2, False, False, "Excel 12.0")
  Set rs = db.OpenRecordset("Plan1$")
  
  Resp = InputBox("Digite o nome da pessoa")
  
  '************************************************
 rs.FindFirst "[Nome] = " & Chr(34) & Resp & Chr(34)
  '************************************************
 
  '-------------------------------------------------------------------
  If rs.NoMatch = True Then
    MsgBox "Nome não encontrado", vbOKOnly + vbInformation, "Acesso DAO"
    Exit Sub
  Else
    'Alterar os dados que estão no recordset
    rs.Edit
      rs!Nome = InputBox("Digite o novo nome")
      rs!Cidade = InputBox("Digite a nova cidade")
      rs!Pais = InputBox("Digite o novo nome do país")
    'Gravar os dados do recordset na base
    rs.Update
  End If
  '-----------------------------------------------------------------

MsgBox "Registro alterado com sucesso!"
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing

End Sub

 
Postado : 25/07/2017 6:07 am
(@basole)
Posts: 487
Reputable Member
 

Sua sintaxe esta correta, mas faltou voce setar seu recordset com dbOpenDynaset.

 
Postado : 25/07/2017 7:08 am
(@vinniz)
Posts: 0
New Member
Topic starter
 

Sua sintaxe esta correta, mas faltou voce setar seu recordset com dbOpenDynaset.

Muito obrigado!!

 
Postado : 25/07/2017 7:19 am