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

4 participantes

    Como resolver problema ao utilizar "INNER JOIN" no access?

    Novato_access
    Novato_access
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 23/03/2018

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Novato_access 24/3/2018, 12:41

    Pessoal, estou com um problema no "INNER JOIN".
    Estou tentando fazer com que as informações que busco do servidor como db_produto e db_ID e incluir na tabela TB_new sem repetir o db_produto, até aí está tudo certo porém, gostaria que antes de adicionar as informações na tabela que comparace o db_ID do servidor com db_ID da tabela TB_produtos que criei e inserir na tabela TB_new o Nome no campo Nome após a comparação usando o INNER JOIN porém fiz o exemplo abaixo e ocorreu o seguinte erro:

    '............................................................................................................
    Erro em tempo de execução '3075':

    Erro de sintaxe (operador faltando) na expressão de consulta 'b.db_ID = CH124444WHERE db_produto= 0001122334'.
    '............................................................................................................



    Do While Not rsADO.EOF

    Set db = CurrentDb()
    LocalSQL = "SELECT *, b.Nome as Nome FROM [TB_new] a INNER JOIN TB_produtos b on b.db_ID = " & rsADO!db_ID & "WHERE db_produto= " & rsADO!db_produto & ""
    Set sr = db.OpenRecordset(LocalSQL)

    If sr.EOF Then
    sr.AddNew
    Else
    sr.Edit
    End If


    sr!db_produto = "" & rsADO!db_produto
    sr!Nome = sr!Nome

    sr.Update

    rsADO.MoveNext
    db.Close
    Set sr = Nothing
    Set db = Nothing
    Loop



    cn.Close
    Set rsADO = Nothing
    Set cn = Nothing
    Exit Sub

    End Sub
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  FabioPaes 24/3/2018, 15:16

    Olá, seu SELECT está errado amigo!!!

    Comece corrigindo ele:
    SELECT *, b.Nome as Nome FROM [TB_new] a INNER JOIN TB_produtos b on b.db_ID = " & rsADO!db_ID & "WHERE db_produto= " & rsADO!db_produto & "

    Correto:
    SELECT a.*, b.Nome as Nome FROM [TB_new] As a INNER JOIN TB_produtos As b on b.db_ID = " & rsADO!db_ID & " WHERE db_produto= " & rsADO!db_produto & "

    .
    O Item destacado ( " & rsADO!db_ID & " ) Deve ser Subsistido pelo campo que faz a ligação entre as duas tabelas, A e B. Pois está utilizando Inner Join, Junção Interna.


    Ex: As b on b.db_ID = A.Campo Where.... Campo DB da tabela A é igual ao Campo xxx da tabela B




    Dica, Faça essa consulta em Modo Gráfico/Designer e veja como ela fica... Depois Leve-a ao VB.


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    Novato_access
    Novato_access
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 23/03/2018

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Novato_access 24/3/2018, 15:54

    Tentei da forma que me passou mais também deu erro. Talvez fosse consulta entre duas tabelas daria certo porém os dados onde busco é do servidor da empresa.

    SELECT a.*, b.Nome as Nome FROM [TB_new] As a INNER JOIN TB_produtos As b on b.db_ID = a.db_ID" & "WHERE db_produto= " & rsADO!db_produto & "
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  FabioPaes 25/3/2018, 02:06

    Faltou um Espaço antes do Where.

    SELECT a.*, b.Nome as Nome FROM [TB_new] As a INNER JOIN TB_produtos As b on b.db_ID = a.db_ID WHERE a.db_produto= " & rsADO!db_produto & ""


    db_produto é de qual tabela? A ou B?


    Veja se vai...


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    Novato_access
    Novato_access
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 23/03/2018

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Novato_access 26/3/2018, 12:05

    Meu amigo FabioPaes, muito obrigado pelas diversas respostas. Você está me ajudando baste porém deu erro novamente Sad

    Tentei essas mesma informações como também de outras formas mais apresenta o erro:

    Erro em tempo de execeção '3061':
    Parâmetros insuficientes. Eram esperados 1.


    SELECT a.*, b.Nome as Nome FROM [TB_new] As a INNER JOIN TB_produtos As b on b.db_ID = a.db_ID WHERE a.db_produto= " & rsADO!db_produto & ""


    Esse "& rsADO!db_produto &" vem do servidor.
    Esse "a.db_produto" é tabela "TB_new" que no caso deve ficar "b.db_produto" porém tentei e também não deu certo.

    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  FabioPaes 26/3/2018, 14:55

    Como não será possível anexar o Exemplo, recomendo que crie essa consulta Física sem o Filtro rsADO!db_produto

    Dessa forma, no seu código, apenas mande pegar os dados dessa consulta e aee aplique o Filtro rsADO!db_produto, Assim deverá funcionar!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    Cláudio Más
    Cláudio Más
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1293
    Registrado : 21/01/2012

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Cláudio Más 26/3/2018, 15:47

    Pode tentar assim também:

    SELECT a.*, b.Nome as Nome FROM [TB_new] As a INNER JOIN TB_produtos As b on b.db_ID = a.db_ID WHERE a.db_produto = '" & rsADO!db_produto & "'"
    Novato_access
    Novato_access
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 23/03/2018

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Novato_access 27/3/2018, 11:41

    Pessoal, agradeço de mais a vocês por tentarem me ajudar mais ainda não consegui.

    Observação:
    Dessa forma consigo numa boa que é para não repetir o db_produto mais quando utilizo o INNER JOIN não funciona.

    "SELECT * FROM [TB_new] WHERE db_produto= " & rsADO!db_produto & ""


    Tentei dessas formas, porém não deu certo:

    SELECT a.*, b.Nome as Nome FROM [TB_new] As a INNER JOIN TB_produtos As b on b.db_ID = a.db_ID WHERE a.db_produto = '" & rsADO!db_produto & "'"

    SELECT a.*, b.Nome as Nome FROM [TB_new] As a INNER JOIN TB_produtos As b on b.db_ID = " & rsADO!db_ID & " WHERE a.db_produto = '" & rsADO!db_produto & "'"

    SELECT a.*, b.Nome as Nome FROM [TB_new] As a INNER JOIN TB_produtos As b on b.db_ID = a.db_ID"
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8019
    Registrado : 05/11/2009

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Alexandre Neves 27/3/2018, 15:34

    Boa tarde,
    Que campos e tipo de dados tem em cada tabela? e campos de relacionamento?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Novato_access
    Novato_access
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 23/03/2018

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Novato_access 28/3/2018, 12:37

    Tenho duas tabelas:
    1ª Tabela: TB_produtos que contém os campos (Nome, db_ID)

    2ª Tabela: TB_new que contém os campos (Nome, db_produto, db_ID, db_data)

    Busco as informações do servidor que tenho acesso a db_produto, db_ID e db_data.

    Consigo jogar as informações do servidor que seria (db_produto, db_ID e db_data) para a tabela "TB_new" e com esse ("SELECT * FROM [TB_new] WHERE db_produto= " & rsADO!db_produto & "") consigo sem problemas ter os dados na tabela "TB_new" sem repetir o "db_produto" porém o servidor não fornece a informações "Nome", por isso criei a tabela "TB_produtos" com o Nome de cada "db_ID" quero que ao buscar do servidor os dados que tem jogar na tabela "TB_new" fazendo o "INNER JOIN" para acrescentar também o "Nome".


    Agradeço desde já Smile

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8019
    Registrado : 05/11/2009

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Alexandre Neves 30/3/2018, 23:09

    Boa noite,
    Tente
    LocalSQL = "SELECT TB_new.*, Nome FROM [TB_new] INNER JOIN TB_produtos ON TB_new.db_ID=TB_produtos.db_ID WHERE db_produto= " & rsADO!db_produto


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Novato_access
    Novato_access
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 23/03/2018

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Novato_access 3/4/2018, 13:42

    Com essas informações (LocalSQL = "SELECT TB_new.*, Nome FROM [TB_new] INNER JOIN TB_produtos ON TB_new.db_ID=TB_produtos.db_ID WHERE db_produto= " & rsADO!db_produto) apresentou erro:

    Erro em tempo de execução '3079':
    O campo especificado 'Nome' pode se referir a mais de uma tabela relacionada na cláusula FROM da instrução SQL.





    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8019
    Registrado : 05/11/2009

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Alexandre Neves 3/4/2018, 20:17

    Boa noite,
    Será
    LocalSQL = "SELECT TB_new.*, TB_produtos.Nome FROM [TB_new] INNER JOIN TB_produtos ON TB_new.db_ID=TB_produtos.db_ID WHERE db_produto= " & rsADO!db_produto


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Novato_access
    Novato_access
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 23/03/2018

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Novato_access 4/4/2018, 11:51

    Com essas informações (LocalSQL = "SELECT TB_new.*, TB_produtos.Nome FROM [TB_new] INNER JOIN TB_produtos ON TB_new.db_ID=TB_produtos.db_ID WHERE db_produto= " & rsADO!db_produto) apresentou erro:

    Não é possível efetuar a atualização. O banco de dados ou objeto é somente leitura.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8019
    Registrado : 05/11/2009

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Alexandre Neves 4/4/2018, 11:58

    Bom dia
    Isso já é problema de acesso à tabela.
    Tente ver se tem a tabela aberta, p.ex.


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Novato_access
    Novato_access
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 23/03/2018

    Como resolver problema ao utilizar "INNER JOIN" no access? Empty Re: Como resolver problema ao utilizar "INNER JOIN" no access?

    Mensagem  Novato_access 6/4/2018, 11:57

    A tabela está fechada e não tem nada somente leitura, mais muito obrigado pela ajuda. Very Happy

      Data/hora atual: 19/9/2021, 00:17