CRIAR TELA DE LOGIN COM OPCAO DE ESCOLHA DE BASE

VINICIUSEROICO 25/08/2010 08:46:07
#351185
Opa pessoal blz?

estou com uma duvida,eu ja vi isso em um codigo porem nao me lembro como era,hoje na minha tela de login eu tenho um combo que traz os usuarios cadastrados e o campo senha,ate ai nenhuma novidade,eu criei para este sistema 2 bases uma Oficial e uma de Testes,eu gostaria de criar um combo onde por default ele apontasse para a base oficial,porem o usuario tivesse a opçao de escolher se quer logar na base Oficial ou na Teste.

Hoje meu sistema conecta da seguinte maneira,no My Project -> Configurações : eu tenho criado a conexao com a base,junto com isso tenho criado uma classe onde faço os tratamentos da conexao:



Public Class cldBancoDados

[ô] - Passa para varivel StringConexo o valor do arquivo de configurao

Dim StringConexao As String = My.Settings.Conexao.ToString

[ô]- Funçao utilizada para abrir a conexo com o banco de dados

Private Function AbreBanco() As SqlConnection

[ô] - Declara um objeto de conexo

Dim Conn As New SqlConnection

With Conn

[ô] - Passa o valor da string de conexo e abre o banco de dados

Conn.ConnectionString = StringConexao

.Open()

End With

Return Conn

End Function

[ô] - Sub utilizada para fechar a conexo com o banco de dados

Private Sub FechaBanco(ByVal Conn As SqlConnection)

[ô] - Verifica se a conexo do banco de dados est aberta

If Conn.State = ConnectionState.Open Then

[ô]Fecha a conexo

Conn.Close()

End If

End Sub

e assim por diante, o problema que nao estou sabendo onde confirar para dizer para minha classe que estou usando uma conexao ou outra.
FOXMAN 25/08/2010 11:18:01
#351197
Veja bem, meu sistema funciona dessa forma, porém o combo onde vc quer colocar o banco TESTE, eu coloco EMPRESAS incluindo EMPRESA TESTE e obviamente para cada empresa um BANCO.
No meu caso eu controlo isso via REGISTRO DO Windows. Abaixo um pequeno exemplo da estrutura do registro.

>MEU SISTEMA
>MEU SISTEMA>EMPRESAS
>MEU SISTEMA>EMPRESAS>EMPRESA 1
>MEU SISTEMA>EMPRESAS>EMPRESA 1>CONFIGURAÇÕES
>MEU SISTEMA>EMPRESAS>EMPRESA 1>CONFIGURAÇÕES>BANCO DE DADOS
>MEU SISTEMA>EMPRESAS>EMPRESA 1>CONFIGURAÇÕES>BANCO DE DADOS>TESTE

>MEU SISTEMA>EMPRESAS>EMPRESA 2
>MEU SISTEMA>EMPRESAS>EMPRESA 2>CONFIGURAÇÕES
>MEU SISTEMA>EMPRESAS>EMPRESA 2>CONFIGURAÇÕES>BANCO DE DADOS
>MEU SISTEMA>EMPRESAS>EMPRESA 2>CONFIGURAÇÕES>BANCO DE DADOS>EMPRESA 2
>MEU SISTEMA>EMPRESAS>EMPRESA 3
...
>MEU SISTEMA>EMPRESAS>EMPRESA 4

No Load do Login eu busco as empresas registradas e jogo no combo.

Apartir dai fica fácil trabalhar com o banco desejado.

Pois em um Módulo eu tenho variaves publica que guardam valores da empresa atual.(Empresa,Banco,Serivdor,ETC...)

Da forma que faço posso ter diversas empresas em servidores diferentes bastando setar o ip e a base do servidor na variavel pública.

No seu caso vc trabalha com as configurações internas do vb.net, vc pode colocar diversas conexões e buscar no My.Settings localizando a configuração desejada.

TECLA 25/08/2010 11:49:34
#351205
Vou ilustra como costumo fazer.
Normalmente, crio duas chaves com a CONNECTION STRING no app.config, uma para HOMOLOGAÇÃO e outra para PRODUÇÃO.
No Form, adiciono um Drop como a imagem abaixo.



No XML fica mais ou menos assim:
[txt-color=#e80000]<WindowsApplication1.My.MySettings>
<setting name=[Ô]Homologacao[Ô] serializeAs=[Ô]String[Ô]>
<value>Data Source=...</value>
</setting>
<setting name=[Ô]Producao[Ô] serializeAs=[Ô]String[Ô]>
<value>Data Source=...</value>
</setting>
</WindowsApplication1.My.MySettings>[/txt-color]

No código, valido o item selecionado e direciono para o servidor correspondente.
If cboServer.SelectedText = My.Settings.Homologacao Then
[txt-color=#007100] [ô]Homologação[/txt-color]
Else
[txt-color=#007100][ô]Produção[/txt-color]
End If
VINICIUSEROICO 26/08/2010 12:00:36
#351357
Tecla, eu entendi +ou- o jeito que voce faz,porem eu nao consegui entender ainda como eu vou fazer para selecionar a conexao ,que criei no my.settings,se vou seleciona-la no codigo do combo,ou no app.config
VINICIUSEROICO 26/08/2010 16:54:30
#351400
FOXMAN, de que maneira eu busco as conexoes que criei no My.Settings? isso é que ainda nao entendi, pois eu tenho a classe que comunica com o banco de dados,que é este codigo que postei,dai nas configuraçoes do my project tenho criada as conexoes,e na tela de login criei o combo para escolher a base,o que nao estou entendendo é como vou chamar essas configuraçoes,se é no combo,na classe....etc?
TECLA 26/08/2010 17:29:16
#351404
Citação:

:
Tecla, eu entendi +ou- o jeito que voce faz,porem eu nao consegui entender ainda como eu vou fazer para selecionar a conexao ,que criei no my.settings,se vou seleciona-la no codigo do combo,ou no app.config



Uma pequena correção no código.
Dim conStr As String = [Ô][Ô]
If cboServer.SelectedText = [Ô]HOMOLOGAÇÃO[Ô] Then
conStr = My.Settings.Homologacao
Else
conStr = My.Settings.Producao
End If

[txt-color=#007100][ô]Abrir conexão[/txt-color]
Dim conn As New SqlConnection(conStr)
VINICIUSEROICO 27/08/2010 10:40:01
#351455
acho que eu descobri onde estou tendo problemas, acontece assim: meu projeto esta divido em 2 ou seja, em um projeto eu tenho o projeto windows aplicattion com os forms etc...no outro projeto class library eu tenho todas as classe com as regras de negocio ,inclusive a classe que faz a conexao com o banco.

baseado na maneira que voce mostrou acima, eu criei uma variavel publica no meu form de login,e faço a checagem para ver o que o usuario selecionou e atribuo o valor para esta variavel,até ai blz...

ja la na minha classe de conexao com o banco eu criei uma variavel para armazenar a string de conexao (coloquei ela por default a base de produçao)
entao eu verifico se a variavel que guarda o valor do combo ,esta como homologacao ou nao,caso estiver atribuo a variavel de string de conexao a string para a base de homologaçao

O PROBLEMA é: na minha classe nao estou conseguindo chamar esta variavel publica que esta armazenando o valor do meu combo,pois acredito eu devido ao fato de estar em outro project.

tentei uma solução que foi do mesmo jeito que para minha aplicação enxergar as regras tive que adicionar o projeto das regras nas referencias da aplicação ,o processo inverso adicionando a aplicação nas referencias do projeto das regras,porem ele me retorna um erro: dizendo que adicionar este projeto causaria uma referencia circular.
Tópico encerrado , respostas não são mais permitidas