♥ 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 Marked as spam |
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) Marked as spam 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. 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. | |
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:
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. Marked as spam 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) | |
Private answer Basta na query sql indicar explicitamente a BD, por exemplo "select * from PRI101.dbo.Artigo" Marked as spam Comments Obrigada pela indicação (de sql percebo alguma coisa :) ) 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. |