Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Como fazer function de busca em tabela access (problemas com ADO)

Discussões sobre a integração do Excel com o Banco de Dados Access

Moderador: joseA

JoaoAnacle
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Sex Out 04, 2019 3:49 pm

Como fazer function de busca em tabela access (problemas com ADO)

Mensagem por JoaoAnacle »

Olá, estou trabalhando com um banco de dados no access, minha planilha Excel e apenas para fazer cálculos e funcionar como painel para gravação de dados no banco de dados (access).

estou tentando fazer uma function para buscar um valor em uma tabela no access. para isso estou usando o seguinte código:

Código: Selecionar todos

Public Function BuscaNomeFuncionario(ByVal Num_Reg As Integer)
  Dim lrs As ADODB.Recordset
  Set lrs = New ADODB.Recordset
   
    lsConectar
        lrs.Open "Select Nome from funcionarios where Num_Registro = " & Num_Reg, gConexao
   
    BuscaNomeFuncionario = lrs
   
    If Not lrs Is Nothing Then
        lrs.Close
        Set lrs = Nothing
    End If
    lsDesconectar

End Function

os códigos de conectar e desconectar e os demais de conexão estão funcionando. porem quando eu tento buscar o valor "Nome" na tabela, a função me retorna o erro: #VALOR!

O comando " lrs.Open "Select Nome from funcionarios where Num_Registro = " & Num_Reg, gConexao" funciona, porem não consigo retorna a celula o valor obtido pela busca.
Alguém sabe onde está o erro?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Como fazer function de busca em tabela access (problemas com ADO)

Mensagem por Reinaldo »

Não tenho como testar, por sua base/arquivo; vamos pelo exposto:
Aparentemente a função BuscaNome.. "espera" como resposta um valor numérico (integer); porem está "recebendo" um texto (string).
Experimente alterar a definição inicial de sua Function conforme incluindo definição adicional como string:
-->Public Function BuscaNomeFuncionario(ByVal Num_Reg As Integer) As String <--

Se não funcionar disponibilize seu modelo (utilize dados fictícios se necessaro) para que possamos testar/acompanhar a execução.

Obs.: CrossPost http://www.planilhando.com.br/forum/vie ... 25&t=31947


JoaoAnacle
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Sex Out 04, 2019 3:49 pm

Re: Como fazer function de busca em tabela access (problemas com ADO)

Mensagem por JoaoAnacle »

Fiz o teste colocando "As string" no final, mesmo assim continuou com o erro.
aqui estão os arquivos com os códigos.
também coloquei um modulo teste, com um código que funcionou, só que não sei ainda o porque.
Desde já, muito obrigado pela ajuda.
Anexos
teste SQL.rar
planilha + bd
(35.74 KiB) Baixado 438 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Como fazer function de busca em tabela access (problemas com ADO)

Mensagem por Reinaldo »

Infelizmente não pude abrir o seu modelo access, pois a minha versão (10) "não tem poderes" para abri-lo; recebo a info "o banco de dados que está tentando abrir requer uma versão mais nova do access".
O interessante e que executando pela Function, não há "menção" ao erro, somente ao executar a lsconectar diretamente.
Então utilizei um arquivo de teste e ajustei as duas functions; teste.
Anexos
teste SQL.zip
(58.97 KiB) Baixado 451 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


JoaoAnacle
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Sex Out 04, 2019 3:49 pm

Re: Como fazer function de busca em tabela access (problemas com ADO)

Mensagem por JoaoAnacle »

Funcionou perfeitamente, muito obrigado pela ajuda! :D
Mas ainda tenho uma duvida. A alteração que você fez nesse trecho de codigo:

Código: Selecionar todos

BuscaNomeFuncionario = lrs(0)
quando você coloca : "(0)", está fazendo referencia ao numero do campo encontrado na busca?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder