EVITAR UM FROM SOMENTE A PRIMEIRA EXECUSÃO

COQUITO 06/10/2015 16:09:31
#452229
Caros amigos.

Sei que neste site, tem pessoas que ajudam muito no seus trabalhos. porem há problemas que dia a dia, isso deixa a fazer mais um desafio.
me encontro com este problema, cada vez que executo o programa tenho que estar passando pelo instalador do banco de dados. para poder acessar ao login de acesso.

veja por exemplo

tenho uma janela chamado instalador do banco de dados e outra chamado login de acesso. quando abro o programa primeiro me aparece a janela instalador depois o login, o que quero é saber se há como poder colocar o checkbox que administre se eu quero que mostre a janela instalado ou nao futuramente. e bloquear a janela instalador para ir direto na janela login. sem precisar fazer a conexao do banco de dados.

alguma ideia é bem vinda veja a imagem
ACCIOLLY 06/10/2015 17:03:20
#452232
Boa tarde ARAMUYA, ao invés de vc colocar um check vc pode trabalhar com um arquivo externo tipo txt onde vc vai informar o caminho do banco. Não coloque o nome do banco nem a senha, apenas informe o caminho. depois crie um evento que verifica se o banco encontra-se naquele caminho gravado no arquivo externo. se o caminho estiver correto, o programa inicia mostrando a tela de login. caso o banco não seja localizado, essa janela de conexao ao banco é mostrada para o usuario informar o caminho correto do banco. informando o caminho, se ele estiver correto o programa substitui essa informação no arquivo externo e o programa entra.

O visual studio te dá suporte pra trabalhar com qualquer tipo de arquivo, em especial txt, conf, ini, xml, etc...

eu particularmente acho bem vantajoso trabalhar com xml, pois você pode guardar qualquer configuração de inicialização em um único arquivo de forma bem estruturada.
por exemplo:
eu quero guardar duas informações: caminho do banco e o caminho da imagem de plano de fundo da janela principal

<?xml version=[Ô]1.0[Ô] encoding=[Ô]UTF-8[Ô]?>
<Informacoes>
<caminho_banco>C:/banco.mdb</caminho_banco>
<imagem_janela>C:/imagem.jpg</imagem_janela>
</informacoes>


Aqui vai um tutorial de como se trabalhar com xml:

C#
http://www.linhadecodigo.com.br/artigo/3449/manipulando-arquivos-xml-em-csharp.aspx

VB.NET
http://www.baboo.com.br/tutorial/lendo-e-gravando-arquivos-xml-com-o-vb-net/
COQUITO 07/10/2015 06:18:36
#452250
cara vc tem algum exemplo mas especifico?
KURTGU 07/10/2015 10:13:57
#452258
Aqui tem um exemplo de como usar arquivos .INI

http://www.macoratti.net/07/05/vbn5_ini.htm
ACCIOLLY 07/10/2015 10:26:41
#452260
Vou te passar esse exemplo q fiz rapidinho
O arquivo xml está na pasta como [Ô]ini.xml[Ô]

Como eu te falei antes

Eu tenho duas classes, uma [Ô]Inicializa[Ô], outra [Ô]conexao[Ô]. A inicializa é responsável por ler e gravar no arquivo XML. A de conexao é responsável por verificar se a conexao existe, por fazer pesquisa no banco e por gravar no banco.

Note que na classe [Ô]Conexao[Ô] eu coloquei o nome do banco e a senha, deixando apenas o caminho do banco no arquivo xml. Se vc quizer pode colocar toda string de conexao no xml mas eu não aconselharia isso!
No método [Ô]testaConexao()[Ô] da classe de conexao, caso a conexão seja realizada sem erros o programa segue adiante, se houver erro na conexao, o form2 é chamado pra vc colocar o caminho do banco
Então no Form1 que é o principal no evento load ele chama esse metodo de testaConexao da classe de conexao

Baixe e abra o projeto em VS 2012 ou superior. Se vc executar o projeto a classe de conexao vai fazer abrir o form2 pra vc indicar o caminho exato do banco de dados.

Banco de dados em access 2010.

Classe Inicializa.vb
Imports System.Xml

Public Class Inicializa
[ô]Cria uma instância de um documento XML
Dim oXML As New XmlDocument
Dim oNoLista As XmlNodeList
Dim oNo As XmlNode

[ô]Define o caminho do arquivo XML
Dim ArquivoXML As String = Application.StartupPath & [Ô]\ini.xml[Ô]
[ô]carrega o arquivo XML

Public Function pegaCaminhoBanco() As String
oXML.Load(ArquivoXML)
Dim caminhoBanco As String = oXML.SelectSingleNode([Ô]BANCO[Ô]).InnerText

Return caminhoBanco
End Function

Public Sub editaCaminhoBanco(ByVal caminho As String)
oXML.Load(ArquivoXML)
Dim root As XmlNode = oXML.DocumentElement

[ô]cria um novo node
Dim elem As XmlElement = oXML.CreateElement([Ô]BANCO[Ô])
elem.InnerText = caminho

[ô]troca o elemento do xml pelo novo
root.ReplaceChild(elem, root.FirstChild)

oXML.Save(ArquivoXML)
MessageBox.Show([Ô]O caminho foi alterado![Ô])


End Sub

End Class


Classe Conexao.vb
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Windows.Forms

Public Class Conexao
Dim ini As New Inicializa

Private caminhoBanco As String = ini.pegaCaminhoBanco()
Private Banco As String = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[Ô] & caminhoBanco & [Ô]\base.accdb; Jet OLEDB:Database Password = 12345;[Ô]

Public Sub TestaConexao()
Try
Dim conectar As New OleDbConnection(Banco)
conectar.Open()
Catch ex As Exception
MessageBox.Show([Ô]O banco não foi localizado em: [Ô] & ini.pegaCaminhoBanco & [Ô], Informe o caminho correto[Ô])
Form2.Show()
End Try
End Sub

Public Function Pesquisar(ByVal SQL As String) As DataTable
Dim dados As New DataTable
Try
dados.Rows.Clear()
Dim conectar As New OleDbConnection(Banco)
conectar.Open()
Dim comando As New OleDbCommand(SQL, conectar)
Dim adapter As New OleDbDataAdapter(comando)
adapter.Fill(dados)

Catch ex As Exception
MessageBox.Show([Ô]Erro de Comando SQL: [Ô] & ex.Message)
End Try

Return dados
End Function

Public Sub CRUD(ByVal SQL As String)
Try
Dim conectar As New OleDbConnection(Banco)
conectar.Open()
Dim comando As New OleDbCommand(SQL, conectar)
comando.ExecuteNonQuery()
conectar.Close()
Catch ex As Exception
MessageBox.Show([Ô]Erro de Comando SQL: [Ô] & ex.Message)
End Try
End Sub



End Class


Form1
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim conn As New Conexao
conn.TestaConexao()
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form3.Show()
End Sub
End Class


Form2
Public Class Form2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ini As New Inicializa()
ini.editaCaminhoBanco(TextBox1.Text)
End Sub
End Class


Form3
Public Class Form3
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conn As New Conexao()
conn.CRUD([Ô]INSERT INTO clientes(nome,endereco,telefone) VALUES ([ô][Ô] & TextBox1.Text & [Ô][ô],[ô][Ô] & TextBox2.Text & [Ô][ô],[ô][Ô] & TextBox3.Text & [Ô][ô])[Ô])
TextBox1.Text = [Ô][Ô]
TextBox2.Text = [Ô][Ô]
TextBox3.Text = [Ô][Ô]
MessageBox.Show([Ô]Dadosgravados![Ô])
End Sub
End Class


qualquer dúvida estamos aí
KURTGU 07/10/2015 10:35:41
#452261
Procure sobre my.settings que tambem da pra fazer isso que voce precisa...



Tópico encerrado , respostas não são mais permitidas