CONECTAR COM BANCO DE DADOS PARA TESTE

PERCIFILHO 22/10/2015 10:23:46
#452885
Bom dia pessoal.
Tenho o arquivo executável e o banco de dados dentro da pasta Debug do projeto.
Queria abrir outra pasta dentro do Debug chamada Teste : c\........\Debug\Teste
Dentro da pasta c\.......\Debug\Teste queria copiar o banco de dados, para ir realizando testes sem afetar o banco oficial.
Aí, é mais ou menos assim: digitaria usuário: TESTE e aí o programa entende que a conexão vai ser com o arquivo da pasta \Teste, se for outro usuário, se conecta normalmente com o banco oficial.
Hoje eu tenho um módulo (INICIALIZACAO) onde eu tenho a variável pública conexão:

Public conexao As New System.Data.OleDb.OleDbConnection([Ô]Provider=Microsoft.Jet.oledb.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\Banco_Dados.mdb[Ô])


Então, teria que ser algo semelhante a:

If _usuario = [Ô]TESTE[Ô] Then
conexao = New OleDb.OleDbConnection([Ô]Provider=Microsoft.Jet.oledb.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\Teste\Banco_Dados.mdb[Ô])
Else
conexao = New OleDb.OleDbConnection([Ô]Provider=Microsoft.Jet.oledb.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\Banco_Dados.mdb[Ô])
End If


Alguém me dá uma luz, por favor?
ACCIOLLY 22/10/2015 11:25:47
#452889
Resposta escolhida
Tu tá no caminho certo. A lógica é essa mesmo.
Creio q seu módulo seja uma classe. Sendo uma classe você pode instanciar ela. Seria legal eu ver seu módulo pra te dizer o que poderia ser feito. Mas baseie-se por essa classe de conexão abaixo:

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Windows.Forms

Public Class Conexao

Private banco As String

Public Sub New(ByVal _usuario AS String)

If _usuario = [Ô]TESTE[Ô] Then
banco = [Ô]Provider=Microsoft.Jet.oledb.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\Teste\Banco_Dados.mdb[Ô]
Else
banco = [Ô]Provider=Microsoft.Jet.oledb.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\Banco_Dados.mdb[Ô]
End If
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)
conectar.Close()

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


Repare que o método new é o construtor da classe. E toda vez que vc for instancia-la de oura classe, deve passar pro parametro _usuario o usuário logado. Tipo assim:

se for TESTE
Dim conexao As New Conexao([Ô]TESTE[Ô])

se não for TESTE
Dim conexao as New Conexao([Ô][Ô])

Repare que quando não for teste, vc deve colocar apenas aspas duplas, já quando for TESTE, vc deve colocar uma String, independente se for uma variável criada ou se for entre aspas como no exemplo acima

O conceito de método construtor, era mais / menos isso que queria te passar

Uma ultima dica que quero te passar é não deixar a sua variável de conexao Pública e sim Privada. A variavel que coloquei é [Ô]banco[Ô] repare que ela é private

Espero ter te ajudado
PERCIFILHO 23/10/2015 09:32:19
#452949
Valeu Acciolly, consegui, obrigado pelas dicas.
Um abraço.
Tópico encerrado , respostas não são mais permitidas