Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos!
Venho aqui neste forum com o maior respeito, sou novo em desenvolvimento e estou precisando de uma grande ajuda e orientação.
Como eu crio um form para cadastrar o banco de dados e o servidor para quando for instalar minha aplicação em outras estacoes de trabalho, eu tenha a opção de apontar onde o meu banco de dados está.
abaixo segue um resumo do que eu fiz e o que estou passando
Criei uma aplicação em VB.NET com uma strig de conexão com o meu banco de dados em SQL, que está definida no app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="SYS_MANAGMENT_ERP.My.MySettings.BD_ERPConnectionString"
connectionString="Data Source=NOTEBOOK\SQLEXPRESS;Initial Catalog=BD_GESTAO;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
Para todos os formulários da minha aplicação criei diversas public sub para carregar os dados do banco no Datagrid, combobox, form_load da minha aplicação.... Até ai, está tudo funcionando muito bem, veja um pequeno trecho do código que está em cada form.
Imports System.Data
Imports System.Data.SqlClient
Imports System.IO
Imports MetroFramework.Forms
Public Class FormCadastroClientes
Dim Strcon As String = My.Settings.BD_ERPConnectionString.ToString
Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim da As SqlDataAdapter
Public Sub loadData()
conn = New SqlConnection(Strcon)
conn.Open()
Dim str As String = "SELECT
IDCLIENTE AS [Id Cliente],
NOMERAZAO AS [Nome do Cliente]
FROM
CLIENTES
ORDER BY
NOMERAZAO ASC"
da = New SqlDataAdapter(str, conn)
Dim ds As New DataSet
da.Fill(ds, "CLIENTES")
dgvAgenda.DataSource = ds.Tables("CLIENTES")
da.Dispose()
conn.Close()
End Sub
End Class
Ao final, criei um executável da minha aplicação no visual studio no nas propriedades do meu projeto à publish à publish wizard
Agora, tenho que instalar essa aplicação em todas as maquinas da empresa e fazer a conexão com o banco de dados que está em um servidor dedicado chamado “DATA_SERVER”.
O Meu maior problema é, eu não sei desenvolver uma tela para definir a conexão com o banco de dados para que todas as estações possam ser configuradas o caminho para o banco de dados. Dessa forma não precisarei deixar a string de conexão com o servidor fixada no meu código, mesmo porque, fiz um teste e eu só consigo conectar apenas uma estação no banco, quando eu instalo a aplicação em outra máquina ela dá esse erro:

Bom... por favor, me ajude, como eu consigo criar uma aplicação na qual eu tenho um form para definir o alias do meu banco de dados, para quando o usuário for se conectar, defina apenas uma vez o alias de conexão e tenha acesso ao sistema, tipo igual a TOTVS como o print abaixo:

Então os dados da conexão já fica salva para o usuário e dessa forma eu não venho a ter problema com conexão de banco de dados, pois se também o servidor mudar, terei que gerar um novo exe pois o nome do servidor está definida na minha string de conexão.
Alguém tem algum videio, tutorial que ensina passo a passo como desenvolver e deixar salvo os dados do alias ?Olá Quitelab, muito obrigado pelo retorno.
Sim.. toas as estacoes vão utilizar o acesso ao mesmo servidor onde estará o banco de dados.
Preciso desenvolver um form para definir o alias de conexão e banco de dados, pois caso o servidor mude, os usuários definam apenas o servidor e o alias.
ok?
Bom dia Rui,
Não sei se isso realmente possa te ajudar mas no meu sistema para ficar mais facil para trabalhar em casa e no trabalho, eu deixei um dropdown list com as opções de "trabalho" e "home" ao acessar o sistema eu seleciono se no drop a opção, no codigo é bem simples, eu verifico qual opção esta selecionar e dependendo da opção eu seto a conexão que será utilizada.
Rafael, muito obrigado pela atenção.
Conseguei resolver o problema, irei postar abaixo os passo a passo, para que outras pessoas que estejam com o mesmo problema possam resolver.
- No Settings do meu Projeto criei duas string de conexão:
ConexaãoBanco --> Type: String --> Scope: User --> Value: deixei em branco
NomeDoBanco --> Type: String --> Scope: User --> Value: deixei em branco
- Criei um "Module" no meu projeto, com o código abaixo, e concatenei as strings do settings
Imports System.Data
Imports System.Data.SqlClient
Module modConexao
Public Function GetConnection() As SqlConnection
Dim sql As String = "Data Source=" & My.Settings.ConexaoBanco & ";Initial Catalog=" & My.Settings.NomeDoBanco & ";User ID=sa;Password=masterkey"
'Dim sql As String = "Data Source=NOTEBOOK\SQLEXPRESS;Initial Catalog=BD_ERP;Integrated Security=True"
'Dim sql As String = "Data Source=MARC_SERVER;Initial Catalog=BD_ERP;Integrated Security=True"
Return New SqlConnection(sql)
End Function
- Em todas os Form do meu projeto eu chamo a conexão com a seguinte estrutura:
Using conn As SqlConnection = GetConnection()
Try
conn.Open()
<< seu codigo aqui >>
Catch ex As Exception
MsgBox(ex.Message)
Finally
da.Dispose()
If conn IsNot Nothing AndAlso conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
End Using
- Criei um formulário para que o usuário Digite o nome do Servidor ou IP da maquina onde está o banco de dados e, em seguida o nome do banco de dados.
Public Class FormConectaBancoDeDados
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim open As New OpenFileDialog
If open.ShowDialog = Windows.Forms.DialogResult.OK Then
txtCaminho.Text = open.FileName
End If
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Application.Exit()
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Try
If txtCaminho.Text = "" Then
MsgBox("Por favor digite corretamente o caminho do servidor onde está o banco de dados")
Exit Sub
End If
My.Settings.ConexaoBanco = txtCaminho.Text
My.Settings.NomeDoBanco = txtNomeDoBanco.Text
My.Settings.Save()
My.Settings.Reload()
Catch ex As Exception
MsgBox(ex.Message)
Finally
Me.Dispose()
Form1.ShowDialog()
End Try
End Sub
Tem algo que não entendi muito bem. Todas as máquinas que forem usar sua aplicação vou conectar no mesmo banco de dados (mesmo servidor) certo ? Se for desta forma basta você definir na sua conexão um servidor sql server que todas as máquinas tenha acesso.
Você realmente precisa de uma tela pra definir a conexão com o banco ?