Problème de connexion VB 2008 (.NET) / Access

ezus59 Messages postés 3 Date d'inscription dimanche 7 mars 2010 Statut Membre Dernière intervention 9 mars 2010 - 7 mars 2010 à 23:16
ezus59 Messages postés 3 Date d'inscription dimanche 7 mars 2010 Statut Membre Dernière intervention 9 mars 2010 - 9 mars 2010 à 16:07
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...

5 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
7 mars 2010 à 23:49
Salut
Parce qu'un INSERT INTO ou un DELETE ne se fait pas avec un RecordSet mais directement en méthode Execute sur la connexion, genre :
   CON.Execute "Insert Into ..."

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ezus59 Messages postés 3 Date d'inscription dimanche 7 mars 2010 Statut Membre Dernière intervention 9 mars 2010
8 mars 2010 à 13:09
Bonjour,

merci pour ta réponse.

Par contre en remplaçant ma requête :
REC.Open("INSERT INTO Dates (titre_evenement) VALUES ('" & champ_titre_evenement.Text & "') ", CON)

par :
CON.Open()
CON.Execute("INSERT INTO Dates (titre_evenement) VALUES ('" & champ_titre_evenement.Text & "') ", CON)

ça me retourne l'erreur, en surlignant CON.Open(), "Impossible de trouver le fournisseur, il est peut-être mal installé"
(et si je met le CON.Open() dans le load il me dit que la connexion n'est pas ouverte)
(si je met REC.Execute ("ma requete") il me dit que 'Execute' n'est pas membre de 'REC')
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
8 mars 2010 à 20:30
Bah ta Sub dates_importantes_Load ne fonctionne plus ?
Elle est pourtant là pour ouvrir la connexion. On ne peut faire un Open qu'en ayant paramétré le ConnectionString et autre ...
Une connexion, en général, ne se referme pas. On ne la referme qu'à la fermeture de l'appli ou en cas de besoin.
Avant de faire un .Open, vérifie bien le .State pour ne pas essayer d'ouvrir une connexion déjà ouverte.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
8 mars 2010 à 20:31
Charge quelques sources qui parlent de connexion à une DB et regarde <ce site dédié>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ezus59 Messages postés 3 Date d'inscription dimanche 7 mars 2010 Statut Membre Dernière intervention 9 mars 2010
9 mars 2010 à 16:07
Merci pour le site.

Mon problème semble résolu mais j'ai dû revoir mon code et étant en 64 bits, j'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
0