Acesso a dois bancos iguais dependendo da senha
:?:
Olá a todos.
Tenho uma aplicação de controle de pedidos já pronta e funcionando.
O banco de dados é Firebird e o nome do Data module é DMDADOS,
neste datamodule tenho 33 tabelas.
Uso DbExpress e criei variáveis para cada tipo de componente.
===
V_SqlCnctn : TSqlConnection;
V_CliDtSt : TClientDataSet;
V_SqlDtSt : TSqlDataSet;
V_DtStPrv : TDataSetProvider;
V_DtSource : TDataSource;
===
Ao selecionar uma opção no menu faço:
begin
try
V_CliDtSt := DmDados.CliDtStPedidos;
V_SqlDtSt := DmDados.SqlDtStPedidos;
V_DtSource := DmDados.DsPedidos;
FrC1070 := TfrC1070.Create(Application);
FrC1070.ShowModal;
finally
FrC1070 := Nil;
end;
end;
===
O meu problema é, tenho outro banco de dados com o nome DMDADOS_,
com as mesmas 33 tabelas, só que dependendo da senha informada ao
entrar no sistema preciso abrir um banco (DMDADOS) ou o outro (DMDADOS_), DEPENDENDO DA SENHA.
Mas as rotinas de chamada dos programas no menu estão conforme acima.
Uma solução seria:
begin
If senha = 1 then
begin
try
V_CliDtSt := DmDados.CliDtStPedidos;
V_SqlDtSt := DmDados.SqlDtStPedidos;
V_DtSource := DmDados.DsPedidos;
FrC1070 := TfrC1070.Create(Application);
FrC1070.ShowModal;
finally
FrC1070 := Nil;
end;
else // senha 2
begin
try
V_CliDtSt := DmDados_.CliDtStPedidos;
V_SqlDtSt := DmDados_.SqlDtStPedidos;
V_DtSource := DmDados_.DsPedidos;
FrC1070 := TfrC1070.Create(Application);
FrC1070.ShowModal;
finally
FrC1070 := Nil;
end;
end;
===
Ainda não tenho uma solução para este caso mas acredito que não
deva ser esta a melhor.
Penso que deva haver uma forma mais inteligente para resolver este problema.
Caso possam me ajudar agradeço.
Um Abraço a todos e Obrigado
Neto
Olá a todos.
Tenho uma aplicação de controle de pedidos já pronta e funcionando.
O banco de dados é Firebird e o nome do Data module é DMDADOS,
neste datamodule tenho 33 tabelas.
Uso DbExpress e criei variáveis para cada tipo de componente.
===
V_SqlCnctn : TSqlConnection;
V_CliDtSt : TClientDataSet;
V_SqlDtSt : TSqlDataSet;
V_DtStPrv : TDataSetProvider;
V_DtSource : TDataSource;
===
Ao selecionar uma opção no menu faço:
begin
try
V_CliDtSt := DmDados.CliDtStPedidos;
V_SqlDtSt := DmDados.SqlDtStPedidos;
V_DtSource := DmDados.DsPedidos;
FrC1070 := TfrC1070.Create(Application);
FrC1070.ShowModal;
finally
FrC1070 := Nil;
end;
end;
===
O meu problema é, tenho outro banco de dados com o nome DMDADOS_,
com as mesmas 33 tabelas, só que dependendo da senha informada ao
entrar no sistema preciso abrir um banco (DMDADOS) ou o outro (DMDADOS_), DEPENDENDO DA SENHA.
Mas as rotinas de chamada dos programas no menu estão conforme acima.
Uma solução seria:
begin
If senha = 1 then
begin
try
V_CliDtSt := DmDados.CliDtStPedidos;
V_SqlDtSt := DmDados.SqlDtStPedidos;
V_DtSource := DmDados.DsPedidos;
FrC1070 := TfrC1070.Create(Application);
FrC1070.ShowModal;
finally
FrC1070 := Nil;
end;
else // senha 2
begin
try
V_CliDtSt := DmDados_.CliDtStPedidos;
V_SqlDtSt := DmDados_.SqlDtStPedidos;
V_DtSource := DmDados_.DsPedidos;
FrC1070 := TfrC1070.Create(Application);
FrC1070.ShowModal;
finally
FrC1070 := Nil;
end;
end;
===
Ainda não tenho uma solução para este caso mas acredito que não
deva ser esta a melhor.
Penso que deva haver uma forma mais inteligente para resolver este problema.
Caso possam me ajudar agradeço.
Um Abraço a todos e Obrigado
Neto
Neto
Curtidas 0
Respostas
Rjun
27/01/2006
Por que você não cria duas strings de conexão? Uma para cada senha.
GOSTEI 0
Neto
27/01/2006
Olá Rjun, obrigado pela força.
Ao informar a senha eu estou fazendo uma validacão assim:
If Senha = 1 then
begin
V_SqlCnctn := DmDados.SQLCnctnConexao;
V_SqlCnctn.Connected := true;
end;
else // abrir a segunda conexão - DMDADOS_
begin
V_SqlCnctn := DmDados_.SQLCnctnConexao;
V_SqlCnctn.Connected := true;
end;
Até ai para abrir uma conexão ou outra tudo bem, mas o problema
é ao chamar abrir as tabela, todos as rotinas se referenciam a
conexão DMDADOS. Será que é possível criar tipo um mesmo ALIAS,
para hora uma conexão e hora outra????
Obrigado
Neto
Ao informar a senha eu estou fazendo uma validacão assim:
If Senha = 1 then
begin
V_SqlCnctn := DmDados.SQLCnctnConexao;
V_SqlCnctn.Connected := true;
end;
else // abrir a segunda conexão - DMDADOS_
begin
V_SqlCnctn := DmDados_.SQLCnctnConexao;
V_SqlCnctn.Connected := true;
end;
Até ai para abrir uma conexão ou outra tudo bem, mas o problema
é ao chamar abrir as tabela, todos as rotinas se referenciam a
conexão DMDADOS. Será que é possível criar tipo um mesmo ALIAS,
para hora uma conexão e hora outra????
Obrigado
Neto
GOSTEI 0
Rjun
27/01/2006
Você está usando dois Data Modules? Ainda acho que em vez de utilizar dois objetos de conexão, dois data modules, utilize duas strings de conexão.
GOSTEI 0
Neto
27/01/2006
Preciso de duas conexões porque um banco fica no servidor dentro da empresa e o outro banco fica num prédio fora da empresa (BEM DISTANTE COM OUTRO IP FIXO).
De qualquer forma se sua dica resolver meu problema tudo bem.
Poderia me dar um exemplo de como fazer duas strings de conexão??
Obrigado novamente
Neto
De qualquer forma se sua dica resolver meu problema tudo bem.
Poderia me dar um exemplo de como fazer duas strings de conexão??
Obrigado novamente
Neto
GOSTEI 0
Rjun
27/01/2006
Eu nunca trabalhei com FB então vamos por parte. No seu objeto SQLCnctnConexao deve ter uma propriedade chamada ConnectionString ou StringConnection. Nela você terá os parâmetros para se conectar ao banco de dados (nome do banco, servidor, usuario, senha, etc...). Faça com que a atribuição da string de conexão seja em run-time, fazendo com que seja alterado os valores que você deseja, dependendo da senha informada.
GOSTEI 0
Neto
27/01/2006
Puts é isso mesmo, fazendo assim não preciso de dois datamodules e portanto esta resolvida a questão.
Muito obrigado pelas preciosas dicas.
Vou implementar isso, mas já saquei e não tenho duvidas de que vai funcionar.
T+
Neto
Muito obrigado pelas preciosas dicas.
Vou implementar isso, mas já saquei e não tenho duvidas de que vai funcionar.
T+
Neto
GOSTEI 0