none
connexion VB 2008 (.NET) / Access RRS feed

  • Question

  • Bonjour,
    Je dois faire un programme en VB 2008 servant à enregistrer des données dans une bdd Access (et accessoirement je suis sous Windows 7).
    Je me suis inspiré du code d'une amie qui à dû faire un programme similaire auparavant (son programme fonctionne bien évidemment pour elle).

    Or voici mon problème : quand j'essaye d'enregistrer une valeur dans la bdd via mon programme, celui-ci plante et VB me retourne l'erreur suivante en surlignant ma requête :
    COMException was unhandled.
    Impossible d'utiliser cette connexion pour effectuer cette opération. Elle est fermée ou non valide dans ce contexte.


    Je ne comprend pas où ça bloque, j'ai même supprimé et recréé la connexion à ma bdd .mdb mais ça ne fontionne toujours pas... j'ai comparé et re-comparé mon code avec celui de mon amie, on a pourtant exactement le même pour ce qui concerne les liaisons avec la bdd.


    Mon code :
    Public Class dates_importantes
    Dim CON As ADODB.Connection
    Dim REC As ADODB.Recordset
    Dim Requete As String

    Private Sub dates_importantes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    CON = New ADODB.Connection
    REC = New ADODB.Recordset
    CON.Provider = "Microsoft.Jet.Oledb.4.0"
    CON.ConnectionString = My.Application.Info.DirectoryPath + "\Base de données1.mdb"
    CON.Open()

    End Sub

    Private Sub bouton_valider_date_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bouton_valider_date.Click
    REC.Open("INSERT INTO Dates (titre_evenement) VALUES ('" & champ_titre_evenement.Text & "') ", CON)
    'Cette requete-test est censée enregistré le contenu du champ de la Textbox "champ_titre_evenement" dans la colonne "titre_evenement"
    'de la table "Dates" de ma bdd
    REC.Close()

    End Sub
    End Class
    Donc voilà, si vous avez une solution, je suis prenant ! Il me reste peu de temps avant de devoir rendre ce projet, et tant que je reste bloqué sur ce problème je ne peux rien faire...
    dimanche 7 mars 2010 22:05

Réponses

  • Merci à vous deux, mon problème semble résolu.

    Etant en 64 bitsJ'ai aussi du faire la manipulation suivante dans VB :
    Tools --> Options --> Projects and Solutions-->General  Check "Show advanced build configurations"
    If "Configuration Manager" doesn't show on the Buid menu, add it and click it.
    Active Solution Platform --> New --> Type or select the new platform x86
    • Marqué comme réponse Alex Petrescu mercredi 10 mars 2010 10:38
    mardi 9 mars 2010 15:06

Toutes les réponses

  • Bonjour,

    es tu sûr de ta chaine de connexion ? A prioi tu devrais plutot avoir une connectionstring de type :

    Provider =Microsoft.Jet.OLEDB.4.0; Data Source =C:\mydatabase.mdb; User Id =admin; Password =;

    Pour plus d'infos sur les chaines de connection voir ici

    Cordialement
    lundi 8 mars 2010 09:55
  • Bonjour, J'ai testé ce que tu m'as dis et ça ne marche pas :s Il me dit que 'Jet' n'est pas un membre de 'Microsoft' et qu'il y a des erreurs de synthaxe, apparement liées au ";" de (Microsoft.Jet.OLEDB.4.0;Data Source=)
    lundi 8 mars 2010 12:00
  • Bonjour,

    je n'ai pas fait attention mais vous utilisez ADODB qui est une ancienne libraire d'accès aux données utilisée en VB.
    Vous indiquez que vous êtes en VB2008.Net. Vous devriez plutôt utiliser ADO.Net et donc la classe OleDbConnection pour vous connecter à votre base access ( il vous faut ajouter la namesapce System.Data.OleDb dans les propriétés du projet ).

    Voici votre exemple avec ADO.Net :

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Dim sql As String = "INSERT INTO Table1 (Titre) VALUES (@titre)"
            Dim connString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}\Base de données1.mdb;", Application.StartupPath)
    
            Using cn As New OleDbConnection(connString)
                cn.Open()
    
                Using cmd As New OleDbCommand(sql, cn)
                    cmd.Parameters.AddWithValue("@titre", Me.champ_titre_evenement.Text)
                    cmd.ExecuteNonQuery()
    
                End Using
            End Using
    
        End Sub

    ( dans ce cas la base doit être dans le même repertoire que l'exécutable cad par défaut ./bin/debug en debug sous visual studio )

    Cordialement

    lundi 8 mars 2010 13:21
  • Bonjour,

     

    Je vous propose aussi cette page qui contient des chaines de connexion :

    http://www.connectionstrings.com/

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    mardi 9 mars 2010 10:32
  • Merci à vous deux, mon problème semble résolu.

    Etant en 64 bitsJ'ai aussi du faire la manipulation suivante dans VB :
    Tools --> Options --> Projects and Solutions-->General  Check "Show advanced build configurations"
    If "Configuration Manager" doesn't show on the Buid menu, add it and click it.
    Active Solution Platform --> New --> Type or select the new platform x86
    • Marqué comme réponse Alex Petrescu mercredi 10 mars 2010 10:38
    mardi 9 mars 2010 15:06