[RESOLVIDO] Mesma aplicação, mas abrindo um banco para cada usuário.

Olá pessoal. Alguém poderia me dar uma luz?
Tenho uma solução PDV que roda em uma ponta em um tablet (Java), e na outra em um server (PHP) utilizando 100% ScriptCase.
Cada cliente (lojista) tem um banco no server, cujo nome é o seu CNPJ. O cliente, ao logar na estação (tablet) fornece o CNPJ, o login e a senha, acessa seu BD, e “segue o baile”. Tá funcionando redondo, com tudo de direito.
No lado do server, há dois sistemas: um é o Dashboard, onde se cadastram os clientes (lojistas) e outros controles, também rodando redondo. O outro é a plataforma para cada lojista administrar suas vendas, emitir seus relatórios, etc e tal.
Bom, o gargalo é: da mesma forma que no tablet, como fazer para o lojista, fornecendo o CNPJ, o login e a senha acessar o seu banco, via aplicação desenvolvida no ScriptCase.
Com um banco único, utilizando um “id_empresa” e variável global, funciona perfeitamente. Mas não consegui fazer desta outra forma, ou seja, cada cliente acessando seu banco.
Se isto é possível, e alguém puder dar uma dica, apontar o caminho das pedras, … desde já, muito, mas muito obrigado!

e possível sim, você antes terá que criar uma conexão para cada cliente no seu ambiente de produção acessando a área de configurações, aquela que aparece na primeira vez que você roda o sistema em produção, uma vez criada cada conexão apontando para cada BD ,
no Login do usuário você identifica o usuário y roda a macro

sc_change_connection(“Conexao_Antiga”, “Conexao_Nova”);

http://www.scriptcase.com.br/docs/pt_br/v8/manual_mp.htm#macros-scriptcase/macros-scriptcase

se o login e senha estiver no banco do cliente terã que er um controle para inserir o cnpj, na onvalidate você troca a conexão ecom a macro indicado pelo nosso amigo e redireciona para tela de login normal;

Ou pode ter um banco master onde registra cnpjs (clientes), usuários e senhas por cnpj o login usa a conexão master para autenticar o usuário, e na onvalidate troca a conexão para o banco do cliente e chama o menu do sistema.

Se no cadastro do cliente tiver um apelido por exemplo você pode no login usar login@apelido ou login@cnpj.

Willian e Haroldo, bom dia!
Muito obrigado pelos retornos. Me ajudaram em “como fazer”.
Porém restou agora o “porque fazer” de uma ou outra forma.
Usar um banco para cada lojista ou um “bancão” para todos eles?
Em ambos os casos há vantagens e desvantagens. Agora é avaliar em qual das situações a saldo é positivo.
No lado do tablet não muda nada, porque isso é transparente ao lojista.
Mas para quem fica do lado server, que vai explorar e trabalhar com a massa de informações armazenadas, isso pode significar economia de recursos, tempo e ganho de produtividade.
Mas quero agradecer a ambos pela ajuda.
Sucesso a todos!

Multi-Bancos em vez de 1 banco Multi-empresas:

Pós:

  1. backup por cliente, você garante um backup por cliente

  2. Tabelas mais enxutas, melhor performance nas inserções e nos selects complexos

  3. Não precisa se preocupar com a programação em cada aplicação e / ou correr o risco de um cliente ver os dados de outros.

Contras:

  1. Atualização e alteração nas estruturas das tabelas vai requerer rodar em todos os bancos, mas já sugerimos como fazer isso automáticamente aqui no forum.

Haroldo, você está correto em suas observações, e eu tendia para este lado, ou seja, usar, como você diz, multi-bancos.
O que me faz re-pensar em utilizar 1 banco multi-empresas é poder explorar uma grande massa de dados, cruzando dados de produtos e fornecedores, clientes e seu hábitos de consumo (estabelecer um perfil), e outros “etcs e tais”, e fazer tudo isso virar um novo e opcional serviço aos lojistas, o que significa mais uma oportunidade de geração de recursos. Além disso, como a solução também faz a emissão da NFC-e (com os registros devidamente arquivados em BD), penso em depois criar um serviço ao consumidor, para que ele tenha um histórico de suas compras, emita a 2ª via da NFC-e por exemplo, e por aí vai…