Página 1 de 1

Verificar se já existe registro

Enviado: 28 Fev 2018 às 16:40
por GladstoneD
Boa tarde!!

Eu de novo. Então, estou tentando alterar minha planilha pra salvar os dados no BD do Access. Preciso de um código que verifique se um cadastro já foi cadastrado antes. Encontrei esse na internet. Não sei o que estou fazendo de errado. Todo valor retornar Nothing
Código: Selecionar todos
Sub NovoEndereco ()

Dim VerifEndereco As Recordset
Dim Endereco As String
   
Endereco = frmClientes.cmbEndereco.Text

ConectaDb

    strSQL = "SELECT " & Endereco & " FROM TBEndereços WHERE " & Endereco & " = " & frmClientes.cmbEndereco & """"""

    Set VerifEndereco = CurrentDB.OpenRecordset(strSQL)

     If VerifEndereco.RecordCount <> 0 Then
        MsgBox " Registro Existente.", vbInformation
     Fecha Db
      Exit Sub

    Else

      'ESCREVER CODIGO PARA GRAVAR NOVO ENDEREÇO NA TABELA

    End If
     
   FechaDb
     
 End Sub
O que pode estar errado?

Verificar se já existe registro

Enviado: 28 Fev 2018 às 16:49
por Reinaldo
Difícil assim somente por uma rotina sem saber o que contem cada variável/tabela, mas verifique a composição da string <<strSQL>>.
e definido a variável <<endereço>> como sendo valor do cmbEndereco;
depois na montagem da sql que registros onde Endereco seja igual ao cmbendereco.
Normalmente depois da clausula Where deve ser determinado/informado qual o campo da tabela Access a ser considerado

Re: Verificar se já existe registro

Enviado: 28 Fev 2018 às 19:51
por GladstoneD
Reinaldo escreveu:Difícil assim somente por uma rotina sem saber o que contem cada variável/tabela, mas verifique a composição da string <<strSQL>>.
e definido a variável <<endereço>> como sendo valor do cmbEndereco;
depois na montagem da sql que registros onde Endereco seja igual ao cmbendereco.
Normalmente depois da clausula Where deve ser determinado/informado qual o campo da tabela Access a ser considerado
Reinaldo, boa noite. Obrigado por responder. Vou tentar situar as variáveis. Alterei a variável pra não confundir os nome

Localidade (Variavel que tras o valor do Combobox cmbEnderecos

TBEndereços ( Tabela no Access)

Endereços (Coluna na Tabela TBEndereços - Isso eu corrigi no código depois da sua ultima dica)

Então tenho

SELECT Localidade(Variavel)
FROM TBEndereços(Tabela)
WHERE Endereços(Coluna) = frmClientes.cmbEndereco
Código: Selecionar todos
strSQL = "SELECT " & Localidade & " FROM TBEndereços WHERE Endereço = " & frmClientes.cmbEndereco & ""
Depois da string composta, o resultado é esse
SELECT Sete de Setembro FROM TBEndereços WHERE Endereço = Sete de Setembro

Está correto?

Verificar se já existe registro

Enviado: 01 Mar 2018 às 11:13
por Reinaldo
a clausula Select espera um (ou mais) campo/coluna de uma Tabela; pode-se utiliza o caracter * (asteristico) para selecionar todos os campos da tabela.
Assim me parece mais correto monta sua clausura sql:
Código: Selecionar todos
strSQL = "SELECT * FROM TBEndereços WHERE Endereço = " & localidade & ""
porem o nome na tabela é Endereço ou Endereços?

Re: Verificar se já existe registro

Enviado: 01 Mar 2018 às 13:19
por GladstoneD
Reinaldo escreveu:a clausula Select espera um (ou mais) campo/coluna de uma Tabela; pode-se utiliza o caracter * (asteristico) para selecionar todos os campos da tabela.
Assim me parece mais correto monta sua clausura sql:
Código: Selecionar todos
strSQL = "SELECT * FROM TBEndereços WHERE Endereço = " & localidade & ""
porem o nome na tabela é Endereço ou Endereços?
Boa tarde

Aqui os nomes dos objetos. Estou achando que esse código é pro ACCESS. Estou usando no VBA EXCEL. Seria esse o problema?

Imagem

Imagem

Vou testar esse codigo que vc mandou

Obrigado

Verificar se já existe registro

Enviado: 01 Mar 2018 às 14:40
por Reinaldo
a sintaxe do sql é valida para os dois (access e Excel), tudo depende da conexão com o banco de dados

Re: Verificar se já existe registro

Enviado: 02 Mar 2018 às 09:09
por GladstoneD
Reinaldo escreveu:a sintaxe do sql é valida para os dois (access e Excel), tudo depende da conexão com o banco de dados
Esses são os códigos da conexão:

Variáveis
Código: Selecionar todos
Public db   As New ADODB.Connection
Public rs   As New ADODB.Recordset
Public Peth As String
Public FD   As ADODB.Field
Conectar
Código: Selecionar todos
Sub ConectDB()

  Peth = ThisWorkbook.Path & "\Dados.mdb"
  db.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Peth & ";Jet OLEDB:Database Password=MyDbPassword"

End Sub
Desconectar
Código: Selecionar todos
Sub FechaDb()

  db.Close: Set db = Nothing
  Set rs = Nothing
  Set FD = Nothing

End Sub
Algo de anormal? As rotinas de gravar dados na tabela estão funcionando normalmente