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


2 participantes

    Consulta união com consulta acresentar

    avatar
    valliclay
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 09/09/2011

    Consulta união com consulta acresentar Empty Consulta união com consulta acresentar

    Mensagem  valliclay Sex 26 Dez 2014, 09:32

    Bom dia!

    A todos

    Pessoal existe a possibilidade de criar um consulta união e depois adicionar o resulta em uma tabela direto no Sql.
    Por exemplo:
    Tenho a consulta união abaixo e preciso adicionar o resultado na tabela tbl_Bom_AP_SMT que contem os campos PRODUCT, PRIORITY e PN.

    SELECT numerarSQL([ZS_PRODORI]) AS PRIORITY, *
    FROM tbl_SZS01
    WHERE (((tbl_SZS01.ZS_PRODORI) Like 'CEB31ZAHL00001*'));
    UNION ALL SELECT numerarSQL(Null), * FROM tbl_SZS01 WHERE 1=0;

    Estou utilizando esta consulta para criar um campo sequencial, na tabela tenho o campo PRODUCT recebe o campo ZS_PRODORI, o campo PRIORITY recebe o campo PRIORITY e o campo PN recebe o campo ZS_PRODALT.

    Estava pesando em algo do tipo INSERT INTO tbl_BOM_AP_SMT ( PRODUCT, PRIORITY, PN ) seguido da consulta mas não consigo fazer funcionar este dando erro.
    criei a consulta união e salvei com nome Con_sequencial assim eu consigo fazer com que o resultado seja acrescentado na tabela, mas preciso criar no VBA para que rode tudo junto ou seja criar a consulta união junto com a consulta acrescentar na tabela ou um consulta atualizar.
    O porque de tudo isso, o usuário vai apertar um botão que aciona o vba para rodar esta consulta dentro de um loop o filtro utilizado na consulta acima Like 'CEB31ZAHL00001*' será substituido por uma variável como por exemplo '" & CEB & "*' esta variável var receber a cada loop um novo numero automaticamente e depois que a sequencia do loop terminar o resultado será exibido para o usuário.

    Desde já agradeço a atenção de todos.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Consulta união com consulta acresentar Empty Re: Consulta união com consulta acresentar

    Mensagem  Alexandre Neves Sex 26 Dez 2014, 12:03

    Boa tarde,
    Teste (porquê 1=0?)
    INSERT INTO tbl_Bom_AP_SMT(Product, Priority, PN) SELECT ZS_PRODORI, numerarSQL([ZS_PRODORI]) AS PRIORITY,ZS_PRODALT
    FROM tbl_SZS01
    WHERE (((tbl_SZS01.ZS_PRODORI) Like 'CEB31ZAHL00001*'));
    UNION ALL SELECT ZS_PRODORI, numerarSQL(Null), ZS_PRODALT FROM tbl_SZS01 WHERE 1=0;


    .................................................................................
    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
    avatar
    valliclay
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 09/09/2011

    Consulta união com consulta acresentar Empty Re: Consulta união com consulta acresentar

    Mensagem  valliclay Sex 26 Dez 2014, 13:33

    Boa tarde!

    Alexandre

    1=0
    O segundo select cria um campo 1 e no critério fica igual a zero.

    Pegue no fórum este consulta e adaptei para a minha necessidade.

    Tentei da forma que você indicou mas da um erro de: caracteres encontrados após a final da instrução SQL.
    Parece o Access quando executa a consulta lé apenas ate o primeiro ponto e virgula.
    apos a mensagem de erro o cursor seleciona a palavra UNION.

    O porque desta consulta tenho uma tabela com codigos de produtos por exemplo CEB31ZAHL00001 quando filtro este código no campo PN posso ter ate 04 códigos relacionados a este, na consulta adicionei uma coluna para que o usuário ao filtrar este código CEB... a consulta deve retornar os três campos sedo que o campo PRIORITY deve conter uma sequencia indicando para o usuário que o codigo que tem o numero 1 no campo PRIORITY e o código que tem a prioridade para o consumo.
    Ficaria algo do tipo

    PRIORITY ZS_PRODORI ZS_PRODALT
    1 CEB431SB000003 SB00000RV00
    2 CEB431SB000003 SJ10000E500
    3 CEB431SB000003 SP050006B10
    1 CEB431SJ100067 SP070013E00
    2 CEB431SJ100067 SB00000DH00
    3 CEB431SJ100067 SCS00005C00

    Se observarmos na coluna PRIORITY temos duas sequencias de começam do 1 ao 3 a tabela de origem não tem o campo PRIORITY e todos os dias tenho que rodar esta consulta e atualizar ou acrescentar em outra tabela o resulta pois as prioridades muda todos os dias, conforme o consumo.
    Sendo assim esta consulta será criada no VBA para que o usuário possa atualizar a qualquer momento.
    a tabela de referencia tema aproximadamente 12000 registros e cada código CEB contem de 03 a 05 outros códigos onde cada código deve conter as prioridade de uso.
    No VBA vou criar um código utilizando um loop para que em cada volta seja adicionado no consulta acima no filtro o próximo CEB...
    Ficaria algo do tipo primeiro loop a consulta através do filtro traz as informações e coloca o código sequencias e acrescenta na tabela A
    Próximo loop consulta através da variável recebe outro codigo CEB... e faz o mesmo processo ate acabar.

    Não sei se tem como fazer de outra forma!!!

    Desde já te agradeço pela ajuda
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Consulta união com consulta acresentar Empty Re: Consulta união com consulta acresentar

    Mensagem  Alexandre Neves Sex 26 Dez 2014, 15:08

    Realmente, tem caracter que não devia ter, mas tinha dito que a consulta união funciona, mas não deverá funcionar
    Não devia nomear nenhum campo a começar por algarismo.
    Veja assim
    INSERT INTO tbl_Bom_AP_SMT(Product, Priority, PN) SELECT ZS_PRODORI, numerarSQL([ZS_PRODORI]) AS PRIORITY,ZS_PRODALT FROM tbl_SZS01
    WHERE tbl_SZS01.ZS_PRODORI Like 'CEB31ZAHL00001*' UNION ALL SELECT ZS_PRODORI, numerarSQL(Null), ZS_PRODALT FROM tbl_SZS01 WHERE 1=0;


    .................................................................................
    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
    avatar
    valliclay
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 09/09/2011

    Consulta união com consulta acresentar Empty Re: Consulta união com consulta acresentar

    Mensagem  valliclay Sex 26 Dez 2014, 20:19

    Alexandre

    Agora esta dando erro de:
    Erro de sintaxe(operador faltando) na expressão de consulta tbl_SZS01.ZS_PRODORI Like 'CEB31ZAHL00001*' UNION ALL SELECT ZS_PRODORI, numerarSQL(Null), ZS_PRODALT FROM tbl_SZS01 WHERE 1=0;
    Testei a primeira parte antes do UNION e esta funcionando ou seja estou dando o resultado esperado.

    Sim a consulta sem o INSERT INTO funciona.

    Conteúdo patrocinado


    Consulta união com consulta acresentar Empty Re: Consulta união com consulta acresentar

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Dom 19 maio 2024, 12:22