MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Relatório a partir de vários back end com campos iguais

    avatar
    kleyton_mendes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  kleyton_mendes em 2/12/2016, 17:04

    Prezados,

    Tenho um BD com um back end por base de minha empresa, todos iguais com mesmos campos, sendo que cada um é preenchido por uma base, e preciso consolidar todos em um único relatório.

    Minha opção inicial foi criar um novo arquivo access, vincular cada back end e criar uma consulta agrupando, porém não estou obtendo exito.

    Alguém tem alguma ideia que possa ajudar?

    Att,

    Kleyton
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

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

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  FabioPaes em 2/12/2016, 20:12

    Uma alternativa amigo, é Vincular todas as tabelas em um único arquivo.
    Na Origem dos dados do seu Relatório, mude para uma Consulta UNION, que irá unir os dados de todas as tabelas iguais.

    Ao vincular uma tabela com o mesmo nome que j exista na Base de dados o Acces acrescentará o Numero 1,2,3... no Nome.


    Veja o Exemplo: Irei vincular a tabela (tbCadIndividuo) que tem os mesmos Campos da tabela Local tbCadIndividuo.

    Na consulta Origem do relatório ficou assim:


    SELECT *,"tbCadIndividuo" as Origem FROM tbCadIndividuo 
    UNION ALL 
    SELECT *,"tbCadIndividuo1" FROM tbCadIndividuo1;


    "tbCadIndividuo" as Origem <== Aqui eu crio uma nova Coluna na Consulta com o Nome "Origem" que ira me mostrar de onde veio os dados... Observe que pra primeira consulta eu coloquei "tbCadindividuo" que é da primeira tabela, e na segunda eu coloquei "tbCadIndividuo1" que é da tabela Vinculada. Assim eu saberei de qual tabela veio a linhas, para caso precise alterar algo ou verificar alguma coisa.

    Pode add Quantas tabelas precisar, na mesma sequencia....

    SELECT *,"tbCadIndividuo" as Origem FROM tbCadIndividuo 
    UNION ALL 
    SELECT *,"tbCadIndividuo1" FROM tbCadIndividuo1
    UNION ALL 
    SELECT *,"tbCadIndividuo2" FROM tbCadIndividuo2;


    Dica:

    Crie a Consulta Normalmente de forma Gráfica para uma Unica Tabela... Quando chegar ao resultado que pretende, basta colocar a consulta em Modo SQL, criar uma nova consulta e colocar o texto copiado... colocar UNION ALL e colocar novamente os dados mudando agora apenas o nome da tabela para a próxima tabela.


    .................................................................................
    _____________________________________________________________________
    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!
    avatar
    kleyton_mendes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  kleyton_mendes em 2/1/2017, 21:54

    Prezado FabioPaes,

    Muito obrigado pelo apoio, e por favor me desculpe pela demora em responder, tive uns imprevistos que me impossibilitaram.

    Criei a consulta usando o union e funcionou bem.

    Porém peço ainda seu apoio nesta questão, pois minha necessidade vai um pouquinho além, este relatório eu lhe falei eu precisarei disponibilizar para o usuário visualizar no próprio access ou exportar para um arquivo de excel preformatado.

    Este relatório tem um filtro por mes de referência com padrão "mês/ano" tipo "dezembro/2016".

    Para tanto criei uma form chamada fmrrel_idmai com uma combobox com os meses preformatados que chamei de cboper_ref

    Criei um relatório com a consulta (csltIDMAI) com base na consulta que vc me orientou e adicionei um WHERE com o seguinte sql:

    WHERE (((IDMAI_ARME.per_ref)=[Formulários]![fmrrel_idmai]![per_ref]))

    Desta forma funcionou muito bem esse relatório no próprio access, filtrando direitinho.

    Para exporta para o excel criei um campo chamado local e um botão de localizar para o usuário vincular o caminho aonde esta o arquivo do excel (para fazer esse comando usei um exemplo aqui do forum) e até ai esta funcionando muito bem

    E em seguida criei um botão que exportar para o arquivo excel com o seguinte codigo:

    Private Sub Comando15_Click()
    Dim objAPP As Object
    Dim objwk As Object
    Dim objSh As Object
    Dim Rs As DAO.Recordset

    Set rst = CurrentProject.Connection.Execute("Select * from csltIDMAI")

    Set objAPP = CreateObject("Excel.application")
    objAPP.Workbooks.Open Me.local

    Set objwk = objAPP.Workbooks.Add

    Set objSh = objwk.ActiveSheet

    Set Plan = objAPP.Worksheets(1)

    objAPP.Visible = True

    objAPP.Workbooks.Open Me.local

    objAPP.Sheets("origem").select

    objAPP.Cells(6, 2).CopyFromRecordset rst

    End Sub

    Porém para esta função parece que o where não esta funcionado bem, pois ele apresenta o erro VBA "erro em tempo de execução - nenhum valor fornecido para um ou mais parâmetros necessários."

    Testei tirando o where e exporta direitinho para o arquivo que preciso, porém não filtra somente os registro do meses de referência que preciso.

    Pode me auxiliar?

    Abraços

    Kleyton

    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

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

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  FabioPaes em 3/1/2017, 00:03

    Se vc ja tem a COnsulta fisica salva, que contem o criterio que pega o Campo do formulario... entao mude:

    de: Set rst = CurrentProject.Connection.Execute("Select * from csltIDMAI")

    Para: Set rst = CurrentProject.Connection.Execute("csltIDMAI")



    .................................................................................
    _____________________________________________________________________
    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!
    avatar
    kleyton_mendes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  kleyton_mendes em 3/1/2017, 11:51

    Não certo Sad "erro em tempo execução - instrução SQL inválida. 'DELETE', 'INSERT', PROCEDURE', 'SELECT' ou 'UPDATE' esperado.
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

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

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  FabioPaes em 3/1/2017, 18:37

    Posta aqui, pra ver se achamos uma solução amigo!


    .................................................................................
    _____________________________________________________________________
    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!
    avatar
    kleyton_mendes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  kleyton_mendes em 3/1/2017, 23:14

    Prezado Fabio

    Segue o meu BD conforme falamos.

    Abraços

    Kleyton
    Anexos
    [Resolvido]Relatório a partir de vários back end com campos iguais AttachmentDEMAi.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.1 Mb) Baixado 5 vez(es)
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

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

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  FabioPaes em 4/1/2017, 12:10

    Meu amigo, ficou claro que o problema é no Critério, certo?
    Então ocorre que ao abrir o RecordSet a linha de critério da forma como esta na consulta gráfica nao e compreendida...
    WHERE (((IDMAI_ARME.per_ref)= [Formulários]![fmrrel_idmai]![per_ref] )) <== dessa formão nao esta sendo compreendido, poi o correto seria:
    WHERE (((IDMAI_ARME.per_ref)='" & [Forms]![fmrrel_idmai]![per_ref] & "'))


    Sendo assim, não vejo outra alternativa que não seja a de Colocar o SQL da consulta la no Codigo do Botão...

    Veja como ficou apenas com 3 tabelas (Realmente são muitas tabelas heim!) kkkkkkkk
    Mude de: Set rst = CurrentProject.Connection.Execute("Select * from csltIDMAI")

    Para:

    Set rst = CurrentProject.Connection.Execute("SELECT *,'IDMAI_ARME' as Origem FROM IDMAI_ARME " & _
    "WHERE (((IDMAI_ARME.per_ref)='" & [Forms]![fmrrel_idmai]![per_ref] & "')) " & _
    "UNION ALL SELECT *,'IDMAI_PAME' FROM IDMAI_PAME " & _
    "WHERE (((IDMAI_PAME.per_ref)='" & [Forms]![fmrrel_idmai]![per_ref] & "')) " & _
    "UNION ALL SELECT *,'IDMAI_BEME' FROM IDMAI_BEME " & _
    "WHERE (((IDMAI_BEME.per_ref)='" & [Forms]![fmrrel_idmai]![per_ref] & "'))")


    Selecione um Mes que tenha valores e veja se funciona...


    .................................................................................
    _____________________________________________________________________
    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!
    avatar
    kleyton_mendes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  kleyton_mendes em 4/1/2017, 12:41

    Grande Fabio,

    Com os tres que vocês deu certo, porém como vc mesmo disse são muitas tabelas, e quando fui lançar todas no codigo esta dando número excessivo de linhas.
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

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

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  FabioPaes em 4/1/2017, 18:28

    Mas esta dando algum erro e isso? Pq nao lembro de haver limites em linhas o...


    .................................................................................
    _____________________________________________________________________
    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!
    avatar
    kleyton_mendes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  kleyton_mendes em 31/1/2017, 18:00

    REsolvido
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

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

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  FabioPaes em 31/1/2017, 18:56

    Grato pelo retorno e até a próxima se Deus quiser!

    Nos conte qual foi a solução?


    .................................................................................
    _____________________________________________________________________
    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!
    avatar
    kleyton_mendes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Relatório a partir de vários back end com campos iguais Empty Re: [Resolvido]Relatório a partir de vários back end com campos iguais

    Mensagem  kleyton_mendes em 31/1/2017, 19:16

    Retirei o salta linha que tinha após o &...

    "UNION ALL SELECT *,'IDMAI_BEME' FROM IDMAI_BEME " & "WHERE (((IDMAI_BEME.per_ref)='" & [Forms]![fmrrel_idmai]![per_ref] & "')) " & _

      Data/hora atual: 26/5/2020, 21:55