none
Problema com conexão RRS feed

  • Pergunta

  • Boa noite, estou com um problema de conexão com o BD em Access!

    É o seguinte, se abro a conexão me dá o seguinte erro:

    "Not allowed to change the 'ConnectionString' property. The connection's current state is open."

    Se fecho a conexão me dá o seguinte erro:

    "ExecuteReader requires an open and available Connection. The connection's current state is closed."

    Este é o código do módulo de conexão.

    Imports System.Data.OleDb
    Module Module1
    
        Public acsconn As New OleDb.OleDbConnection
        Public acsdr As OleDbDataReader
        Public strsql As String
    
        Sub connect()
            acsconn.ConnectionString = "Provider=microsoft.ace.oledb.12.0; data source=|datadirectory|\Copa.accdb;"
            acsconn.Open()
        End Sub
    
    End Module


    Este é o código do botão Update.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Module1.connect()
            strsql = "Select * from Jogos" & Label2.Text & " WHERE Jogo='" & c.text & "'"
            Dim acscmd As New OleDb.OleDbCommand
            acscmd.CommandText = strsql
            acscmd.Connection = acsconn
            acsdr = acscmd.ExecuteReader
            While (acsdr.Read())
                T1.Text = (acsdr("Time1"))
                T2.Text = (acsdr("Time2"))
            End While
            acscmd.Dispose()
            acsdr.Close()
    End Sub

    No que estou errando?

    Desde já agradeço a atenção......


    • Editado McJota sexta-feira, 9 de maio de 2014 00:20
    quinta-feira, 8 de maio de 2014 23:29

Respostas

  • OK, você sabe a parte onde:

    Public acsconn As New OleDb.OleDbConnection

    Aqui você declarou o "acsconn" com "New". O que acontece é que o "New" é disparado na criação do MODULE, que acontece assim que o programa inicia, ele aloca os módulos e define as variáveis. Remova o método "New" e reescreva:

    Sub connect()
        Const Conn As String = "Provider=microsoft.ace.oledb.12.0; data source=|datadirectory|\Copa.accdb;"
        acsconn = New OleDb.OleDbConnection(Conn)
        acsconn.Open()
    End Sub

    Somente

    • Marcado como Resposta McJota sexta-feira, 9 de maio de 2014 04:59
    sexta-feira, 9 de maio de 2014 03:26

Todas as Respostas

  • OK, você sabe a parte onde:

    Public acsconn As New OleDb.OleDbConnection

    Aqui você declarou o "acsconn" com "New". O que acontece é que o "New" é disparado na criação do MODULE, que acontece assim que o programa inicia, ele aloca os módulos e define as variáveis. Remova o método "New" e reescreva:

    Sub connect()
        Const Conn As String = "Provider=microsoft.ace.oledb.12.0; data source=|datadirectory|\Copa.accdb;"
        acsconn = New OleDb.OleDbConnection(Conn)
        acsconn.Open()
    End Sub

    Somente

    • Marcado como Resposta McJota sexta-feira, 9 de maio de 2014 04:59
    sexta-feira, 9 de maio de 2014 03:26
  • Perfeito, não havia me dado conta disso!!

    Muito obrigado pela atenção....

    Abraço.....

    sexta-feira, 9 de maio de 2014 05:00