Acionar "botão" de outro BD sem abri-lo ?

Moderador: Avelino Sampaio

leandroandrea07
Mensagens: 123
Registrado em: 02 Mai 2016, 18:06

Acionar "botão" de outro BD sem abri-lo ?

Mensagempor leandroandrea07 » 27 Out 2017, 18:29

Boa tarde pessoal,

Consigo acionar o botão de um BD usando outro BD ? Por exemplo:

Tenho o BD1 e nesse BD tenho o botão "btclick", que inicia uma serie de comandos.
Gostaria de usar o BD2 para acionar o "btclick" que esta no BD1 e iniciar os comandos daquele BD, sem ter que abri-lo.


Isso é possível ?



Grato

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Avelino Sampaio
Mensagens: 1885
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Acionar "botão" de outro BD sem abri-lo ?

Mensagempor Avelino Sampaio » 29 Out 2017, 10:33

leandro,

um exemplo de código, manipulando um outro BD

Código:
Dim objAcc As Access.Application
Dim qdf As DAO.QueryDef
Dim db As DAO.Database
'Abre o Access
Set objAcc = CreateObject("Access.Application")
'Abre o BD desejado
objAcc.OpenCurrentDatabase ("c:\SuaPasta\SeuProjeto.accdb")
Set db = objAcc.CurrentDb
'cria uma consulta ação
Set qdf = db.CreateQueryDef("qry_tblClientes")
qdf.SQL = "SELECT * INTO clone_tblClientes FROM tblClientes;"
'executa a consulta que irá criar um clone da tabela
db.Execute "qry_tblClientes"
'copia a tabela clonada para outro BD
objAcc.DoCmd.CopyObject "C:\SuaPasta\bdvazio.accdb", "cl_tblClientes", acTable, "clone_tblClientes"
'fecha o Access
objAcc.DoCmd.Quit acQuitSaveAll


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

leandroandrea07
Mensagens: 123
Registrado em: 02 Mai 2016, 18:06

Re: Acionar "botão" de outro BD sem abri-lo ?

Mensagempor leandroandrea07 » 31 Out 2017, 17:44

Avelino Sampaio escreveu:leandro,

um exemplo de código, manipulando um outro BD

Código:
Dim objAcc As Access.Application
Dim qdf As DAO.QueryDef
Dim db As DAO.Database
'Abre o Access
Set objAcc = CreateObject("Access.Application")
'Abre o BD desejado
objAcc.OpenCurrentDatabase ("c:\SuaPasta\SeuProjeto.accdb")
Set db = objAcc.CurrentDb
'cria uma consulta ação
Set qdf = db.CreateQueryDef("qry_tblClientes")
qdf.SQL = "SELECT * INTO clone_tblClientes FROM tblClientes;"
'executa a consulta que irá criar um clone da tabela
db.Execute "qry_tblClientes"
'copia a tabela clonada para outro BD
objAcc.DoCmd.CopyObject "C:\SuaPasta\bdvazio.accdb", "cl_tblClientes", acTable, "clone_tblClientes"
'fecha o Access
objAcc.DoCmd.Quit acQuitSaveAll


Aguardamos



Boa tarde Avelino,

A manipulação funcionou.
Mas ainda não conseguir executar os procedimentos de um botão, utilizando outro BD.
No meu BD "Arquivos" tenho o Form "Principal" e nele o "btAtualizar_Click", que realizar diversos procedimentos.
Gostaria de, usando o BD "Relatórios", executar os procedimentos do "btAtualizar_Click" que esta no Form do BD "Arquivos".
Tentei alterar o "Private Sub btAtualizar_Click", por "Public Sub btAtualizar_Click", e chamar o evento através do "Call", mas não fez sentido.

Existe uma maneira ?


Grato

Avatar do usuário
Avelino Sampaio
Mensagens: 1885
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Acionar "botão" de outro BD sem abri-lo ?

Mensagempor Avelino Sampaio » 31 Out 2017, 19:38

leandro,

pelo que vc está descrevendo, o procedimento não depende de informações contidas no formulário, correto ? Mostre aqui um dos procedimentos utilizado no seu código.

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


leandroandrea07
Mensagens: 123
Registrado em: 02 Mai 2016, 18:06

Re: Acionar "botão" de outro BD sem abri-lo ?

Mensagempor leandroandrea07 » 01 Nov 2017, 17:17

Avelino Sampaio escreveu:leandro,

pelo que vc está descrevendo, o procedimento não depende de informações contidas no formulário, correto ? Mostre aqui um dos procedimentos utilizado no seu código.

Aguardamos



Avelino,

abaixo os procedimento de um dos botões que gostaria de acionar sem ter que abrir o BD em que ele está localizado:

Código: Selecionar todos

Private Sub Processar_Click()
On Error GoTo Continuar:
    DoCmd.OpenForm "Limpar Tabelas"
    DoCmd.SetWarnings False
    Status.SetFocus
    Status = "Preparando SepList..."
Continuar:
    DoCmd.TransferText acImportFixed, "Seplist", "Seplist", Arq_SepList
    X = GetFileName(Arq_SepList)
    DoCmd.RunSQL "UPDATE SepList AS A SET A.[Dt LS] = Replace([Dt LS],'.','/'), A.[Dt Conf] = Replace([Dt Conf],'.','/'), A.[Dt Fech] = Replace([Dt Fech],'.','/');"
    DoCmd.RunSQL "UPDATE SepList AS A INNER JOIN Clientes AS C ON A.Cliente = C.Cliente SET A.[LS Nr] = 'DELETAR';" ' WHERE C.Tipo = 'Exportação';"
    DoCmd.RunSQL "DELETE A.* FROM SepList AS A WHERE (((A.[LS Nr])='DELETAR')) OR (((A.Qtde) Is Null));"
    For i = 1 To 1
        Status = "Calculando Performance..."
        DoCmd.RunSQL "Delete [Performance] from [Performance];"
         If i = 1 Then Tp = "Normal"
        If i = 2 Then Tp = "Emergência"
          DoCmd.RunSQL "INSERT INTO Performance ( Centro, [Pedido Nr], [Linha Nr], [Item Nr], Tipo, DescTipo, Cliente, Qtde, [Dt LS], Confirmada, [Dt Conf], [Dt Fech] ) " & _
                    "SELECT A.Centro, A.[LS Nr], A.[Linha Nr], A.[Item Nr], A.Tipo, T.Descrição, A.Cliente, A.Qtde, A.[Dt LS], A.[Qt Conf], A.[Dt Conf], A.[Dt Fech] " & _
                    "FROM Seplist AS A INNER JOIN [Tipo de Pedidos] AS T ON A.[Tipo] = T.Tipo WHERE (((T.Descrição)='" & Tp & "') AND ((T.Util)=True));"
          DoCmd.RunSQL "UPDATE Performance AS A INNER JOIN Clientes AS C ON A.Cliente = C.Cliente SET A.[Pedido Nr] = 'DELETAR' WHERE A.DescTipo = 'Normal';"
        DoCmd.RunSQL "DELETE A.* FROM Performance AS A WHERE (((A.[Pedido Nr])='DELETAR'));"
          Status = "Preparando Exceções/Bads/Fors..."
        DoCmd.RunSQL "UPDATE Performance AS P INNER JOIN [Excs] AS H ON (P.[Linha Nr] = H.[Linha Nr]) AND (P.[Pedido Nr] = H.[Pedido Nr]) SET P.LogOut = H.Dias, P.Obs = 'Exceção ' & H.Obs;"
        DoCmd.RunSQL "UPDATE Performance AS P INNER JOIN [Bads] AS H ON (P.[Linha Nr] = H.[Linha Nr]) AND (P.[Pedido Nr] = H.[Pedido Nr]) SET P.LogOut = H.Dias, P.Obs = H.Descrição;"
        DoCmd.RunSQL "UPDATE Performance AS P INNER JOIN [Fors] AS H ON (P.[Linha Nr] = H.[Linha Nr]) AND (P.[Pedido Nr] = H.[Pedido Nr]) SET P.LogOut = H.Dias, P.Obs = H.Descrição;"
         DoCmd.RunSQL "SELECT P.* INTO Exceções FROM Performance AS P WHERE (((P.Obs) LIKE 'Exceção*'));"
        DoCmd.RunSQL "SELECT P.* INTO ExcBads FROM Performance AS P WHERE (((P.Obs) LIKE 'Bad*'));"
        DoCmd.RunSQL "SELECT P.* INTO ExcFors FROM Performance AS P WHERE (((P.Obs) LIKE 'For*'));"
        If P_ExcExc Then DoCmd.RunSQL "DELETE A.* FROM Performance AS A WHERE (((A.Obs) LIKE 'Exceção*')) OR (((P.Obs) LIKE 'Bad*')) OR (((P.Obs) LIKE 'For*'));"
          AtualizaDiasUteis
          If GerarGráficos Then CalcularGráfico
          CriarResumoPerformance
         Dt = Str(Day(Now)) & Str(Month(Now)) & Str(Year(Now))
        Hr = Hour(Now) & Minute(Now)
        Arquivo2 = "Outbound Performance - Atacadista - " & Tp & " " & Dt & " " & Hr & ".xls"
       X = GerarPlanilhas(Arquivo2)
    Next i
   DoCmd.DeleteObject acTable, "Seplist"
    Status.SetFocus
    Status = "Outbound Performance OK !!!"
   X = Mensagem(Status)
    DoCmd.SetWarnings True
End Sub


O BD que consta esse botão chama-se "Analise" e ele esta no form "Principal".


Grato

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Módulos VBA”

Quem está online

Usuários neste fórum: Google Adsense [Bot] e 5 visitantes