Forum
See question

Aceder a tabela de utilizador através de outra empresa   

46 views
1
0

Boa noite.

Já andei a pesquisar, mas sem sucesso. É possível aceder a uma tabela de utilizador estando noutra empresa, através dum formulário de utilizador?

EX 1: tenho na empresa pribase uma tabela+campos de utilizador. Estando na empresa pri001, ou pri102, etc. aceder a essa tabela da empresa base, que será sempre a pribase (isto é, a referência até pode ficar fixa no código).

EX 2: tenho na mesma a tdu na empresa pribase, mas estando nessa poder aceder às outras pri101, pri102, etc, as que forem seleccionadas (do género do módulo gestão de gabinetes).

Já li aqui que com o método abreempresa se pode aceder a outras, se é que  percebi bem, mas o acesso que pretendo era a essas tdu.

 

Obrigada

Faça login para poder traduzir
V10
Marked as spam
Created 1 year and 3 weeks ago sandrasantos
sandrasantos Iniciante
3 answers
1
Private answer

Obrigada pelas indicações, vou estudar os exemplos do github do Custom Forms no fim-de-semana, depois acrescento aqui. Mas não percebi a referência a outroBSO, tentei no meu editor e deu erro.

Aproveitando a questão (e a disponibilidade): já li sobre controlos SDK, e pelo que percebi, há vantagens?

 

Obrigada

(sou contabilista e apesar de ter feito o curso Primavera em nov/2021 nunca mais peguei nisto, fiz algumas coisas para consumo próprio, daí a minha ignorância, ando agora a rever apontamentos)

Faça login para poder traduzir
Marked as spam
Created 1 year and 3 weeks ago sandrasantos
sandrasantos Iniciante
    Comments
    Os controlos SDK foram criados especificamente pela Primavera. Por exemplo a PriGrelha é basicamente uma tabela mas com funcionalidades especificas ao Primavera. As caixas de texto que dá pra fazer F4 para procurar várias coisas dentro do ERP são outro exemplo. Os controlos presentes no PRISDK100.dll são bastante poderosos mas por vezes requerem um pouco de estudo, mas vale a pena porque o Primavera em si tem classes e métodos de suporte aos controlos. Quanto ao "outroBSO", a lógica era abrir outra empresa em segundo plano, com o intuito de fazer a query à base de dados dessa empresa directamente. Mas é mais fácil simplesmente alterar a query como escrevi na Opção 2. Se for preciso ajuda com a query SQL a usar, também posso dar uma mãozinha. Uma coisa a ter em atenção, o objecto retornado pela query criada pelo BSO.Consulta(...) é do tipo StdBELista. Se bem me lembro este objecto não é enumerável, ou seja, não é possivel fazer só um loop e correr os elementos directamente. O StdBELista tem métodos para meter o cursor no inicio e fim, andar para o elemento seguinte ou anterior, e verificar se está no inicio ou no fim.
    1 year and 2 weeks ago
    ricardogiro
      Obrigada pela resposta e pela disponibilidade, mas contínuo confusa sobre o outroBSO. é que na opção 2 também tem. SQL safo-me e percebo o conceito de cursores. Será algo como isto (ver novo post) ? É um "bulk" que fiz para a versão 10, deixo aqui o código (este código uso para comparar tabelas entre empresas, gosto de manter as tabelas de base sincronizadas e tenho o módulo gestão de gabinetes; mas às vezes corro isto para testar pois às vezes abre conta "aqui" e com o pouco tempo acabo por esquecer o sincronizar) O que sei de C# foi de um cursinho online que fiz antes da formação primavera. Sei programar em C, mas linguagens de PPO "nada". Em relação aos controlos SDK, quando estive a rever os apontamentos do curso fiquei com essa ideia, e com um empurrão e umas pesquisas acabo por chegar lá. Pelo menos boa vontade tenho. Vou colar o código num post novo, até pode ter interesse para alguém.
      1 year and 2 weeks ago
      sandrasantos
        2
        Private answer

        Eu sempre acedi a tabelas de utilizador através de queries SQL utilizando o BSO, que por sua vez criam StdBEListas. Neste caso consigo pensar em duas maneiras de fazer o que pede:

        1. Abrir um novo contexto de empresa BSO
        2. Escrever uma query que defina exactamente qual a base de dados.

        Opção 1:

            public partial class  Formulario : CustomForm
            {
                private void GetTDU ()
                {
                    using (ErpBS outroBSO = new ErpBS())
                    {
                        // Abre empresa neste BSO específico 
                        outroBSO.AbreEmpresaTrabalho(StdBETipos.EnumTipoPlataforma.tpProfissional, "empresa1", "username", "password");
        
                        // Carrega TDUs das Taxas Penalizadoras no arranque
                        StdBELista lista1 = outroBSO.Consulta("SELECT * FROM TDU_TabelaUtilizador WHERE Restricao = 'valor';");
                        outroBSO.FechaEmpresaTrabalho()
                    }
            }
        }
        
        
        
        

        Opção 2 (query referencia a BD explicitamente):

        StdBELista lista1 = outroBSO.Consulta("SELECT * FROM PRI101.dbo.TDU_TabelaUtilizador WHERE Restricao = 'valor';");

        Em qualquer um dos métodos é possível dinamicamente alterar a empresa a que se acede, seja pelo argumento do BSO.AbreEmpresaTrabalho na opção 1, ou intercalando uma string dentro da query na opção 2.

        Se a resposta ajudar e estiver correcta, agradeço que marque como certa, obrigado! ;) Se for preciso mais ajuda basta comentar.

        Faça login para poder traduzir
        Marked as spam
        Created 1 year and 3 weeks ago ricardogiro
        ricardogiro Responsiveness Member
          Comments
          Obrigada pelas indicações, vou estudar os exemplos do github do Custom Forms no fim-de-semana, depois acrescento aqui. Mas não percebi a referência a outroBSO, tentei no meu editor e deu erro. Aproveitando a questão (e a disponibilidade): já li sobre controlos SDK, e pelo que percebi, há vantagens? Obrigada (sou contabilista e apesar de ter feito o curso Primavera em nov/2021 nunca mais peguei nisto, fiz algumas coisas para consumo próprio, daí a minha ignorância, ando agora a rever apontamentos)
          1 year and 3 weeks ago
          sandrasantos
            0
            Private answer

            Basta na query sql indicar explicitamente a BD, por exemplo "select * from PRI101.dbo.Artigo"

            Faça login para poder traduzir
            Marked as spam
            Created 1 year and 3 weeks ago uwusolutionslda
              Comments
              Obrigada pela indicação (de sql percebo alguma coisa :) )
              1 year and 3 weeks ago
              sandrasantos
                Pessoalmente acho que esta é a "melhor forma" de o fazer se estamos a falar de consultas básicas. Ao instanciar "outro BSO" vai estar a "duplicar recursos" o que é completamente desnecessário na maior parte dos casos.
                1 year and 2 weeks ago
                uwusolutionslda