Base de données ACCESS 2007

Résolu
olidef Messages postés 18 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 13 février 2011 - 17 janv. 2011 à 20:57
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 24 janv. 2011 à 14:33
Bonsoir à tous,

J'ai besoin d'aide sur la connexion à une base de données ACCESS 2007.

J'utilise Visual Basic Express 2010, fais "Données" > "Nouvelle source de données"...

Je teste la connexion, jusque là, pas trop de souci.

C'est au moment de la lire et d'y écrire des données à partir d'un formulaire que je cale ! J'ai beau me gaver de tutoriels, je pige rien, et quand je crois comprendre, je pige encore moins.

Pouvez me dire quel code je dois utiliser pour réaliser cette opération ?

Merci pour votre aide.

Je précise que je suis débutant total (une application faite à ce jour, sans grand intérêt d'ailleurs)

3 réponses

Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
18 janv. 2011 à 14:42
Bonjour,

Alors je ne sait pas trop comment tu fait, mais moi je fait plutôt des trucs dans ce genre :
- Je crée une nouvelle class qui me permet de gérer mes connexions. Soit un truc dans ce style :
Public Class Cl_Connexion
#Region "Enumérations"
    Public Enum E_TypeConnexion As Byte
        ODBC = 0
        OleDb = 1
        '... autre (SQLConnection pour SQL serveur, PgConnection pour postgreSQL ext.)
    End Enum
#End Region
#Region "Variable de la classe"
    'Objet qui "tien" la connexion (WithEvents pour recevoir les événement sur la connexion)
    'Il est TOUJOURS mieu de déclarer tes variable en privé et de définir un accéseur ;)
    Private WithEvents P_ObjConnexion As System.Data.Common.DbConnection
    Private P_MyTypeConnexion As E_TypeConnexion
#End Region
#Region "Acceseur aux données"
    'Public ReadOnly Property ObjConnexion() As System.Data.Common.DbConnection '<-- Permet uniquement la lecture de l'objet connexion ;)
    Public Property ObjConnexion() As System.Data.Common.DbConnection
        Get
            Return P_ObjConnexion
        End Get
        Set(ByVal value As System.Data.Common.DbConnection)
            'Traitement de remplacement de la connexion (commit des transaction, et/ou fermer si elle est ouverte, ext.)
        End Set
    End Property
#End Region
#Region "Evenements retournés par la classe"
    Public Event ConnexionOuverte()
    Public Event ConnexionFermer()
#End Region
#Region "Fonctions/Procédures privées"
    Private Sub P_ObjConnexion_StateChange(ByVal sender As Object, ByVal e As System.Data.StateChangeEventArgs) Handles P_ObjConnexion.StateChange
        Select Case P_ObjConnexion.State
            Case ConnectionState.Open
                RaiseEvent ConnexionOuverte()
            Case ConnectionState.Closed
                RaiseEvent ConnexionFermer()
            Case ConnectionState.Broken
                '... tu auras compris le principe ^^
        End Select
    End Sub
#End Region
#Region "Fonctions/Procédures public"
    Public Sub OuvreConnexion(ByVal ChaineDeConnexion As String, ByVal TypeDeConnexion As E_TypeConnexion)
        'Si une connexion existe déjà
        If P_ObjConnexion IsNot Nothing Then
            'Si cette connexion est ouverte
            If P_ObjConnexion.State = ConnectionState.Open Then
                'Soit tu la ferme (histoire de rester propre)
                P_ObjConnexion.Close()

                'Soit tu envoie une erreur
                'Throw New Exception("Une connexion existe déjà et est ouverte" & vbCrLf & "Fermer cette connexion pour continuer"
            End If
        End If
        Select Case TypeDeConnexion
            Case E_TypeConnexion.ODBC
                'Connexion ODBC
                P_ObjConnexion = New System.Data.Odbc.OdbcConnection(ChaineDeConnexion)
            Case E_TypeConnexion.OleDb
                'Connexion OleDb
                P_ObjConnexion = New System.Data.OleDb.OleDbConnection(ChaineDeConnexion)
            Case Else
                'Erreur
                Throw New Exception("Type de connexion non reconu")
        End Select
        P_MyTypeConnexion = TypeDeConnexion
        P_ObjConnexion.Open()
    End Sub
    Public Sub FermeConnexion()
        If P_ObjConnexion IsNot Nothing Then
            If P_ObjConnexion.State = ConnectionState.Open Then
                P_ObjConnexion.Close()
            Else
                'Envoie une erreur ou ne fait rien 
            End If
        Else
            'Envoie une erreur ou ne fait rien 
        End If
    End Sub
    ''' <summary>
    ''' Résumer de la fonction (pour l'intelisens)
    ''' </summary>
    ''' Définition du paramétre (tj pour l'intelisens)


    ''' <returns>Définition de la valeur de retour (bon je me répete pas cette fois xD)</returns>
    ''' <remarks>Ce block est obtenu automatiquement quand tu saisie 3 ' à la suite ;)</remarks>
    Public Function ExecuteQuery(ByVal Requete As String) As DataTable
        Dim Retour As New DataTable
        Dim Command As System.Data.Common.DbCommand
        Dim Adapteur As System.Data.Common.DbDataAdapter

        Select Case P_MyTypeConnexion
            Case E_TypeConnexion.ODBC
                Command = New System.Data.Odbc.OdbcCommand(Requete, P_ObjConnexion)
                Adapteur = New System.Data.Odbc.OdbcDataAdapter(Command)

            Case E_TypeConnexion.OleDb
                Command = New System.Data.OleDb.OleDbCommand(Requete, P_ObjConnexion)
                Adapteur = New System.Data.OleDb.OleDbDataAdapter(Command)
            Case Else
                'Erreur
                Throw New Exception("Type de connexion non reconu")
        End Select
        Adapteur.Fill(Retour)
        Command = Nothing
        Adapteur = Nothing
        Return Retour
    End Function
    Public Sub ExecuteNoQuery(ByVal Requete As String)
        Select Case P_MyTypeConnexion
            Case E_TypeConnexion.ODBC
                Dim Command As System.Data.Odbc.OdbcCommand
                Command = New System.Data.Odbc.OdbcCommand(Requete, P_ObjConnexion)
                Command.ExecuteNonQuery()
            Case E_TypeConnexion.OleDb
                Dim Command As System.Data.OleDb.OleDbCommand
                Command = New System.Data.OleDb.OleDbCommand(Requete, P_ObjConnexion)
                Command.ExecuteNonQuery()
            Case Else
                'Erreur
                Throw New Exception("Type de connexion non reconu")
        End Select
    End Sub
#End Region
End Class

Bon ce n'est pas complet mais tu devrais comprendre le principe avec sa (tu peut ajouter une sauvegarde & chargement d'une config contenu dans un fichier, ext.)

Ensuite à l'utilisation :
Dans un Form (disons Form1 )
Tu met un datagridview (nommer DataGridView1, pour voir la table de retour)
Public Class Form1
    Private Connexion As New Cl_Connexion

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Ici une connexion pour PostygrSQL en OleDb
        Connexion.OuvreConnexion("Provider=PostgreSQL OLE DB Provider;Data Source=myServerAddress;location=myDataBase;User ID=myUsername;password=myPassword;timeout=1000;", Cl_Connexion.E_TypeConnexion.OleDb)
        'Lecture d'une table en base (nommer MaTable)
        DataGridView1.DataSource = Connexion.ExecuteQuery("SELECT * FROM MaTable")
    End Sub
End Class


Tu trouveras toute (ou presque) les chaines de connexions pour tout (ou presque) les SGBD (système de gestion de base de données) à cette adresse : http://connectionstrings.com/

Voili voilou avec sa tu devrais pouvoir t'en sortie

(Si tu à encore des questions demande )

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
3
olidef Messages postés 18 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 13 février 2011
21 janv. 2011 à 13:01
Bonjour,

Merci pour ta réponse. Je teste ta réponse et n'hésiterai pas à te poser des questions si je galère toujours.

Bonne journée.
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
24 janv. 2011 à 14:33
Bonjour,

Si la réponse te conviens pense à cliquer sur "réponse acceptée" (cela facilite les recherches pour d'autres utilisateur du site qui chercherais la mm chose )

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
0
Rejoignez-nous