PROBLEMA COM PARAMETRO

MESTRE 17/10/2014 10:01:15
#441996
Gente estou com um problema.. tenho uma classe chamada [Ô]conn[Ô] que realiza a conexão com banco de dados Mysql, até ai tudo certo.. só que em caso
de serviço externo nosso funcionário tem que ter acesso ao sistema.. então tenho a seguinte estrutura dentro da minha Public class conn

  
Public Sub New()

host = SelecionaBanco
user = [Ô]meu_user[Ô]
pass = [Ô]minha_senha[Ô]
banco = [Ô]meubanco[Ô]

strCon = [Ô]server=[Ô] & host & [Ô]; user id=[Ô] & user & [Ô]; password=[Ô] & pass & [Ô]; database=[Ô] & banco & [Ô];[Ô]

End Sub

Public Property SelecionaBanco_() As String
Get
Return SelecionaBanco
End Get
Set(ByVal value As String)
SelecionaBanco = value
End Set

End Property


No meu Botão de Login tenho:
     If chkLocal.Checked = True Then
Banco.SelecionaBanco_ = [Ô]IP LOCAL[Ô]
Else
Banco.SelecionaBanco_ = [Ô] HTTP SERVER [Ô]
End If


Só que o problema está ele até passa o valor no Get parece estar tudo certo, só que depois na hora de conectar com o banco ele zera e fica Null.. alguem poderia me ajudar?
MESTRE 17/10/2014 13:47:18
#442005
alguém??
JONATHANSTECKER 17/10/2014 14:04:00
#442006
Falta a parte do código onde você está contruindo a classe... Como você está conectando ao instanciar a classe é necessário passar o banco como parâmetro.
Veja se compreende esse código abaixo:

Na sua classe conn...
    Public Sub New(ByVal pBancoLocal As Boolean)

host = SelecionaBanco(pBancoLocal)
user = [Ô]meu_user[Ô]
pass = [Ô]minha_senha[Ô]
banco = [Ô]meubanco[Ô]

strCon = [Ô]server=[Ô] & host & [Ô]; user id=[Ô] & user & [Ô]; password=[Ô] & pass & [Ô]; database=[Ô] & banco & [Ô];[Ô]

End Sub

Public ReadOnly Property SelecionaBanco(ByVal pBancoLocal As Boolean) As String
Get
If pBancoLocal = True Then
Return [Ô]IP LOCAL[Ô]
Else
Return [Ô] HTTP SERVER [Ô]
End If
End Get
End Property


No seu botão de login:
Dim Banco As New conn(chkLocal.Checked)

MESTRE 17/10/2014 19:18:45
#442010
Entendi a logica sim hehe.. so que deu pal na minha Function de conectar que tem na classe conn tambem
  
Public Function Conectar() As Boolean

Dim Conexao As New MySqlConnection(strCon)

Try
Conexao.Open()
Catch ex As Exception
MsgBox(ex.Message)
End Try


Return Conexao.State

End Function


Deu erro no meu comando [Ô]Dim Conexao As New conn[Ô] do botao login, ele fala: [Ô]Argument not specified for parameter pBancoLocal Of Public Sub New(pBanco local as Boolean)[Ô]
FILMAN 17/10/2014 21:51:11
#442011
Resposta escolhida
Veja se te ajuda
Imports MySql.Data.MySqlClient

Public Class clsConexaoBanco
Private _conn As New MySqlConnection
Private _cmd As New MySqlCommand
Private _StringConexao As String

Private _Server As String
Private _UserID As String
Private _Password As String
Private _DataBase As String

Sub New(ByVal StringConexao As String)
_StringConexao = StringConexao
_conn.ConnectionString = _StringConexao
_cmd.Connection = _conn
End Sub

Sub New(ByVal arr() As String)
_StringConexao = String.Format([Ô]server={0}; user id={1}; password={2}; database={3}[Ô], arr(0), arr(1), arr(2), arr(3))
_conn.ConnectionString = _StringConexao
_cmd.Connection = _conn
End Sub

Sub New()

End Sub

Public Property Server() As String
Get
Return _Server
End Get
Set(ByVal value As String)
_Server = value
End Set
End Property

Public Property UserID() As String
Get
Return _UserID
End Get
Set(ByVal value As String)
_UserID = value
End Set
End Property

Public Property Password() As String
Get
Return _Password
End Get
Set(ByVal value As String)
_Password = value
End Set
End Property

Public Property DataBase() As String
Get
Return _DataBase
End Get
Set(ByVal value As String)
_DataBase = value
End Set
End Property

Public Function AbrirConexao() As Boolean
Try
_conn.Open()
Return True
Catch ex As Exception
Return False
End Try
End Function

Public Function FecharConexao() As Boolean
Try
_conn.Close()
Return True
Catch ex As Exception
Return False
End Try
End Function

Public Sub AtribuiStringConnection()
_StringConexao = String.Format([Ô]server={0}; user id={1}; password={2}; database={3}[Ô], _Server, _UserID, _Password, _DataBase)
_conn.ConnectionString = _StringConexao
_cmd.Connection = _conn
End Sub

End Class


Para chamar faça assim
[ô]Assim
Dim conexao as New clsConexaoBanco()
conexao.Server = [Ô]localhost[Ô]
conexao.UserID = [Ô]usuario[Ô]
conexao.Password = [Ô]senha[Ô]
conexao.DataBase = [Ô]banco[Ô]
conexao.AtribuiStringConnection()
if conexao.AbrirConexao() Then
MessageBox.Show([Ô]Conectou[Ô])
Else
MessageBox.Show([Ô]Não Conectou[Ô])
End If
if conexao.FecharConexao() Then
MessageBox.Show([Ô]Fechou Conexao[Ô])
Else
MessageBox.Show([Ô]Não Fechou Conectou[Ô])
End If


[ô]Ou Assim
Dim arr() As String = {[Ô]Server[Ô], [Ô]UserID[Ô], [Ô]Password[Ô], [Ô]Banco[Ô]}
Dim conexao as New clsConexaoBanco(arr())
if conexao.AbrirConexao() Then
MessageBox.Show([Ô]Conectou[Ô])
Else
MessageBox.Show([Ô]Não Conectou[Ô])
End If
if conexao.FecharConexao() Then
MessageBox.Show([Ô]Fechou Conexao[Ô])
Else
MessageBox.Show([Ô]Não Fechou Conectou[Ô])
End If


[ô]Ou Assim
Dim conexao as New clsConexaoBanco([Ô]server=localhost; user id=usuario; password=senha; database=banco[Ô])
if conexao.AbrirConexao() Then
MessageBox.Show([Ô]Conectou[Ô])
Else
MessageBox.Show([Ô]Não Conectou[Ô])
End If
if conexao.FecharConexao() Then
MessageBox.Show([Ô]Fechou Conexao[Ô])
Else
MessageBox.Show([Ô]Não Fechou Conectou[Ô])
End If
JONATHANSTECKER 17/10/2014 22:44:24
#442013
Tens que passar o parâmetro na instância da classe...

Dim Conexao As New conn(chkLocal.Checked)
FILMAN 03/11/2014 22:54:42
#442277
Se o problema foi resolvido, por favor encerre o tópico
MESTRE 04/11/2014 07:40:05
#442278
Opa pessoal resolveu sim muito obrigado é pq fazia um tempinho que eu não acessava o forum mesmo..

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