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

    Automatizar criação de consultas

    avatar
    Daniel Meireles
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 16/05/2012

    Automatizar criação de consultas Empty Automatizar criação de consultas

    Mensagem  Daniel Meireles 13/11/2012, 10:15

    Bom dia!

    Sou novato no Access e utilizo a versão 2007, estou criando um trabalho de capacidade de estoque Vs Demanda no meu trabalho, dei a ideia e foi muito bem vista mas eu não tinha noção do trabalho que seria,planejei uma coisa e vi que seria uma utra bem mais trabalhosa, agora eu tenho que criar muitas consultas "make table", eu gostaria de saber se vocês conhecem algo que eu possa usar para automatizar essa criação.

    no momento eu estou fazendo o seguinte, copio a consulta em modo SQL no Word e substituo as informações, pois a base é a mesma. Substituo somente o que esta em Vermelho e o nome da tabela é sempre QAMN e o numero que esta em vermelho.

    SELECT [AMN-AMK03].Locacao, [AMN-AMK03].Tipo, IIf([Num Peca] Is Not Null,[Num Peca],"Vazio") AS Peca, ALMOXARIFADO_MU.MU, ALMOXARIFADO_MU.Qtd, ALMOXARIFADO_MU.Pack, ALMOXARIFADO_MU.[Data MU], IIf([DB12M]+[RM]<1 And [Data Trans] Is Null,"01/01/1900",[Data Trans]) AS [Last M], [Pecas New].DB12M, [Pecas New].Rate, [Pecas New].[Data Trans], [Pecas New].RM, IIf([DB12M] Is Null,"VERIFICAR",[DB12M]+[RM]) AS DB12 INTO AMN032405FROM [AMN-AMK03] LEFT JOIN (ALMOXARIFADO_MU LEFT JOIN [Pecas New] ON ALMOXARIFADO_MU.[Num Peca] = [Pecas New].PEÇA) ON [AMN-AMK03].Locacao = ALMOXARIFADO_MU.[Pop Name]
    GROUP BY [AMN-AMK03].Locacao, [AMN-AMK03].Tipo, IIf([Num Peca] Is Not Null,[Num Peca],"Vazio"), ALMOXARIFADO_MU.MU, ALMOXARIFADO_MU.Qtd, ALMOXARIFADO_MU.Pack, ALMOXARIFADO_MU.[Data MU], IIf([DB12M]+[RM]<1 And [Data Trans] Is Null,"01/01/1900",[Data Trans]), [Pecas New].DB12M, [Pecas New].Rate, [Pecas New].[Data Trans], [Pecas New].RM, IIf([DB12M] Is Null,"VERIFICAR",[DB12M]+[RM])
    HAVING ((([AMN-AMK03].Locacao) Like "AMN032405" Or ([AMN-AMK03].Locacao) Like "AMk032405"));


    Estou postando parte do BD, se alguem tiver uma ideia ficarei grato.
    Anexos
    Automatizar criação de consultas AttachmentControle Almoxarifado.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (811 Kb) Baixado 21 vez(es)
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Cláudio Más 15/11/2012, 10:09

    Bom dia,

    Use o método .CreateQueryDef, por exemplo:

    Código:
    Dim db As Database
    Dim qd As QueryDef
    Dim s As String, varCodigo As String

    Set db = CurrentDb

    varCodigo = InputBox("Informe o código:")
    s = "SELECT * FROM QAMN" & varCodigo

    Set qd = db.CreateQueryDef("Nome da Consulta", s)

    Set db = Nothing

    Você estará sempre utilizando uma única consulta, atualizada de acordo com varCodigo, que seria a parte em vermelho citada na sua mensagem.
    avatar
    Daniel Meireles
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 16/05/2012

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Daniel Meireles 21/11/2012, 09:36

    Obrigado pela resposta,

    Como eu devo dispor este codigo?

    Num botão?

    abraço
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Cláudio Más 21/11/2012, 09:42

    Sim, pode ser num botão.
    Utilize uma cópia do sistema para testes.
    Abs
    avatar
    Daniel Meireles
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 16/05/2012

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Daniel Meireles 21/11/2012, 12:08

    Cláudio,

    Fiz o botão e ao digitar o codigo "022503" que seria a proxima consulta deu o seguinte erro: 3012 Object "Nome da consulta" already exists.

    Porém essa consulta ainda não existe.

    O erro ocorre nesta parte em vermelho:

    Dim db As Database
    Dim qd As QueryDef
    Dim s As String, varCodigo As String

    Set db = CurrentDb

    varCodigo = InputBox("Informe o código:")
    s = "SELECT * FROM QAMN" & varCodigo

    Set qd = db.CreateQueryDef("Nome da Consulta", s)
    Set db = Nothing


    O que pode ter ocrrido de errado?
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Cláudio Más 21/11/2012, 13:04

    Daniel, você deve ter clicado no botão anteriormente, e a consulta já deve existir sim.
    Acontece que a janela de consultas do Access não é atualizada imediatamente quando a consulta é criada, isso pode estar confundindo.

    De qualquer maneira, tente esse outro método:

    Código:
    Dim qdf As DAO.QueryDef
    Dim s As String, varCodigo As String

    varCodigo = InputBox("Informe o código:")
    s = "SELECT Result" & varCodigo & ".* FROM Result" & varCodigo

    Set qdf = CurrentDb.QueryDefs("Nome da Consulta")
    qdf.SQL = s
    avatar
    Daniel Meireles
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 16/05/2012

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Daniel Meireles 21/11/2012, 13:47

    Entendi o porque diz que ja existe, criou uma consulta com o nome "Nome da Consulta", mas na verdade o nome da consulta é QAMN e o numero que eu digitar, por exemplo 022503, ficaria QAMN022503.


    Então a consulta deveria criar uma relação entre a tabela AMN-AMK02 com as tabelas ALMOXARIFADO_MU e Pecas New e na consulta também a funções, no exemplo que eu anexei você pode visualizar uma consulta, esta muito mais díficl do que eu imaginava.


    No "FROM" deveria ser AMN-AMK02 onde esta em vermelho,porém ocorre o erro 3131 "Syntax error in FROM clause"

    Dim db As Database
    Dim qd As QueryDef
    Dim s As String, varCodigo As String

    Set db = CurrentDb

    varCodigo = InputBox("Informe o código:")
    s = "SELECT * FROM AMN-AMK02" & varCodigo
    Set qd = db.CreateQueryDef("Nome da Consulta", s)

    Set db = Nothing
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Cláudio Más 21/11/2012, 15:50

    AMK02 é o código da peça, será digitado na inputbox e não deve estar no código vba, certo?

    Segue a correção:

    Código:
    s = "SELECT * FROM [AMN-" & varCodigo & "]"
    avatar
    Daniel Meireles
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 16/05/2012

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Daniel Meireles 22/11/2012, 10:20

    AMN-AMK02 é o nome da tabela, a consulta consiste desta tabela e outras duas chamadas de ALMOXARIFADO_MU E Pecas New.

    o Cogigo que você desenvolveu gera a consulta com no nome "Nome da Consulta" porem não faz as relações entre as tabelas e nem as funções que nela existe.

    Seria pouco mais complexo do que o codigo que vc criou, se for algo que te leve muito tempo, não há problema, já agredeço muito sua ajuda.
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Cláudio Más 22/11/2012, 10:44

    Ah sim, a instrução completa é a que vc postou na sua primeira mensagem.

    Eu fiz só um exemplo, acho que não teria maiores problemas para adaptar, vc tentou?
    avatar
    Daniel Meireles
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 16/05/2012

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Daniel Meireles 23/11/2012, 09:06

    Sim eu tentei adapta-lo porém não consegui
    Mad
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Cláudio Más 24/11/2012, 12:19

    Fala sério, vc nem tentou né... Shocked

    Código:
    Dim db As Database
    Dim qd As QueryDef
    Dim s1 As String, s2 As String, varCodigo As String

    Set db = CurrentDb

    varCodigo = InputBox("Informe o código:")

    s1 = "SELECT [AMN-AMK03].Locacao, [AMN-AMK03].Tipo, IIf([Num Peca] Is Not Null,[Num Peca],'Vazio') AS Peca, ALMOXARIFADO_MU.MU, ALMOXARIFADO_MU.Qtd, ALMOXARIFADO_MU.Pack, ALMOXARIFADO_MU.[Data MU], IIf([DB12M]+[RM]<1 And [Data Trans] Is Null,'01/01/1900',[Data Trans]) AS [Last M], [Pecas New].DB12M, [Pecas New].Rate, [Pecas New].[Data Trans], [Pecas New].RM, IIf([DB12M] Is Null,'VERIFICAR',[DB12M]+[RM]) AS DB12 INTO AMN" & varCodigo & " FROM [AMN-AMK03] LEFT JOIN (ALMOXARIFADO_MU LEFT JOIN [Pecas New] ON ALMOXARIFADO_MU.[Num Peca] = [Pecas New].PEÇA) ON [AMN-AMK03].Locacao = ALMOXARIFADO_MU.[Pop Name]" & _
    " GROUP BY [AMN-AMK03].Locacao, [AMN-AMK03].Tipo, IIf([Num Peca] Is Not Null,[Num Peca],'Vazio'), ALMOXARIFADO_MU.MU, ALMOXARIFADO_MU.Qtd, ALMOXARIFADO_MU.Pack, ALMOXARIFADO_MU.[Data MU], IIf([DB12M]+[RM]<1 And [Data Trans] Is Null,'01/01/1900',[Data Trans]), [Pecas New].DB12M, [Pecas New].Rate, [Pecas New].[Data Trans], [Pecas New].RM, IIf([DB12M] Is Null,'VERIFICAR',[DB12M]+[RM])" & _
    " HAVING ((([AMN-AMK03].Locacao) Like 'AMN" & varCodigo & "'"

    s2 = s1 & " Or ([AMN-AMK03].Locacao) Like 'AMk" & varCodigo & "'))"

    Set qd = db.CreateQueryDef("Nome da Consulta", s2)
    Set db = Nothing

    Só tem um problema, ao criar a consulta, o vba converte [Pecas New].Rate para [Pecas New].Taxa, e não tenho idéia de como resolver, a não ser trocando o nome do campo Rate.
    avatar
    Daniel Meireles
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 16/05/2012

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Daniel Meireles 26/11/2012, 11:26

    Ficou perfeito, eu mudei o nome de Rate para taxa, ai deu certinho,

    o unico problema é que a consulta fica com o nome "Nome da consulta", há alguma forma de deixar sempre como "QAMN" + o número do codigo que eu digitar?
    Onde esta em vermelho.

    Dim db As Database
    Dim qd As QueryDef
    Dim s1 As String, s2 As String, varCodigo As String

    Set db = CurrentDb

    varCodigo = InputBox("Informe o código:")

    s1 = "SELECT [AMN-AMK01].Locacao, [AMN-AMK01].Tipo, IIf([Num Peca] Is Not Null,[Num Peca],'Vazio') AS Peca, ALMOXARIFADO_MU.MU, ALMOXARIFADO_MU.Qtd, ALMOXARIFADO_MU.Pack, ALMOXARIFADO_MU.[Data MU], IIf([DB12M]+[RM]<1 And [Data Trans] Is Null,'01/01/1900',[Data Trans]) AS [Last M], [Pecas New].DB12M, [Pecas New].Rate, [Pecas New].[Data Trans], [Pecas New].RM, IIf([DB12M] Is Null,'VERIFICAR',[DB12M]+[RM]) AS DB12 INTO AMN" & varCodigo & " FROM [AMN-AMK01] LEFT JOIN (ALMOXARIFADO_MU LEFT JOIN [Pecas New] ON ALMOXARIFADO_MU.[Num Peca] = [Pecas New].PEÇA) ON [AMN-AMK01].Locacao = ALMOXARIFADO_MU.[Pop Name]" & _
    " GROUP BY [AMN-AMK01].Locacao, [AMN-AMK01].Tipo, IIf([Num Peca] Is Not Null,[Num Peca],'Vazio'), ALMOXARIFADO_MU.MU, ALMOXARIFADO_MU.Qtd, ALMOXARIFADO_MU.Pack, ALMOXARIFADO_MU.[Data MU], IIf([DB12M]+[RM]<1 And [Data Trans] Is Null,'01/01/1900',[Data Trans]), [Pecas New].DB12M, [Pecas New].Rate, [Pecas New].[Data Trans], [Pecas New].RM, IIf([DB12M] Is Null,'VERIFICAR',[DB12M]+[RM])" & _
    " HAVING ((([AMN-AMK01].Locacao) Like 'AMN" & varCodigo & "'"

    s2 = s1 & " Or ([AMN-AMK01].Locacao) Like 'AMk" & varCodigo & "'))"

    Set qd = db.CreateQueryDef("Nome da Consulta", s2)
    Set db = Nothing


    Muito obrigado Claudio
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Cláudio Más 26/11/2012, 11:39

    Set qd = db.CreateQueryDef("QAMN" & varCodigo, s2)

    Valeu
    avatar
    Daniel Meireles
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 16/05/2012

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Daniel Meireles 26/11/2012, 11:59

    Resolvido.
    Claudio, você me ajudou muito com isso.

    Obrigado mesmo.

    cheers
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Cláudio Más 26/11/2012, 14:11

    De nada Daniel, valeu!
    avatar
    Daniel Meireles
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 16/05/2012

    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Daniel Meireles 7/2/2013, 12:09

    Olá boa tarde,

    eu gostaria de reabrir este topico para tirar uma duvida. Neste codigo que o amigo Claudio resolveu eu coloco o nome da consulta numa imputbox para ser gerada e clico num botão uma por uma.

    Existe a possibilidade de fazer com que o access busque o nome da consulta numa tabela e ao clicar num botão o access gere todas as consultas de uma vez só?
    por exemplo,numa tabela assim:

    Nome das consultas
    11003
    11004
    11005
    11006

    E ao clicar no botão o codigo busca todas as linhas e gera as consultas QAMN11003, QAMN11004, QAMN11005, QAMN11006.


    Obrigado




    Conteúdo patrocinado


    Automatizar criação de consultas Empty Re: Automatizar criação de consultas

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 22:17