CRIAR TELA DE LOGIN COM OPCAO DE ESCOLHA DE BASE
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.
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.
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.
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.
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.
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
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
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?
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)
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.
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