begin process at 2010 03 22 07:17:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > CONNEXION À UNE BASE ACCESS ET/OU CRÉATION DE BASE DE DONNÉES ACCESS EN VB.NET / VB 2005

CONNEXION À UNE BASE ACCESS ET/OU CRÉATION DE BASE DE DONNÉES ACCESS EN VB.NET / VB 2005


 Information sur la source

Note :
Aucune note
Catégorie :Base de Donnees Source .NET ( DotNet ) Classé sous :access, bdd, créer, numéroauto, autoincrement Niveau :Initié Date de création :13/07/2007 Date de mise à jour :17/07/2007 08:33:59 Vu :16 766

Auteur : flymann

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Petit code pour établir une connexion à la base de donnée (appellée à chaque requête pour éviter de laisser la connexion ouverte)
Si jamais le fichier prévu à l'origine (ici TVA.mdb) est absent, on le recrée pour éviter un plantage.

Etant donné que j'ai eu du mal à trouver ce dont j'avais besoin sur le net, je me suis dis que ce bout de code pourrait être utile à d'autres.

On y voit aussi comment récupérer et supprimer les processus zombies.

Il est pas mal commenté, mais si jamais vous désirez d'avantage de précision n'hésitez pas à poser des questions

MàJ : Pour la ligne 37 "Dim appAccess As Access.Application" il faut au préalable charger la librairie "Microsoft Office Access Object X.0" (X = version)
Sinon l'objet Access n'est pas reconnu.

Source

  • ' Initialisation de la base de données et connexion
  • Private Function Connexion_MDB() As OleDb.OleDbConnection
  • ' tableau contenant l'ensemble des processus excel
  • Dim monproc() As Process
  • ' une instance parmis le tableau précédent
  • Dim instance As Process
  • ' création de l'objet Connection
  • Dim connex As New OleDb.OleDbConnection
  • ' initialisation de la chaîne de connexion au provider
  • connex.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  • "Data Source= " & CurDir() & _
  • "\" & "TVA.mdb;"
  • ' on tente un établissement de la connection
  • Try
  • connex.Open()
  • Catch ex As Exception
  • ' si jamais ça ne passe pas, c'est que la base est corrompue ou absente, on la recrée
  • ' Si le fichier existe, c'est qu'il est corrompu, donc on l'efface
  • If File.Exists(CurDir() & "\TVA.mdb") Then
  • ' On essaie de supprimer le fichier TVA.mdb
  • Try
  • ' mettre ses attributs à normal pour pouvoir l'effacer
  • File.SetAttributes(CurDir() & "\TVA.mdb", FileAttributes.Normal)
  • File.Delete(CurDir() & "\TVA.mdb")
  • Catch err As Exception
  • ' si jamais on arrive pas à supprimer le fichier, on prévient l'utilisateur
  • MsgBox("Supression du fichier TVA.mdb échouée: " & Chr(13) & err.ToString(), MsgBoxStyle.Exclamation, "Erreur")
  • End Try
  • End If
  • Dim appAccess As Access.Application
  • ' on crée un objet de type BDD Access
  • appAccess = CreateObject("Access.Application.11")
  • ' on crée une nouvelle base de nom TVA.mdb
  • appAccess.NewCurrentDatabase(CurDir() & "\TVA.mdb")
  • ' comme le programme ne se ferme pas bien (j'ai du raté une instruction pour fermer l'application)
  • ' on met fin aux processus MSACCESS en background
  • monproc = Process.GetProcessesByName("MSACCESS")
  • ' Si la liste n'est pas vide, on ferme toutes les applis concernées
  • If monproc.Length <> 0 Then
  • For Each instance In monproc
  • ' si l'instance ne porte pas de nom, elle est en background et zombie, donc on met fin au processus
  • If instance.MainWindowTitle = "" Then
  • instance.Kill()
  • End If
  • Next
  • End If
  • ' on essaie de connecter à la base que l'on viens de créer
  • Try
  • connex.Open()
  • Catch ex2 As Exception
  • ' si ça échoue encore, on quitte directement le programme
  • ' on quitte par un kill pour éviter de passer par la confirmation de sortie du programme (le handle closing() )
  • MsgBox("Erreur : " & ex2.ToString)
  • MsgBox("Impossible de recréer la base de donnée." & Chr(13) & "L'application va se terminer !", MsgBoxStyle.Critical, "Erreur critique !")
  • monproc = Process.GetProcessesByName("FactureSoft")
  • ' Si la liste n'est pas vide, on ferme toutes les applis concernées
  • If monproc.Length <> 0 Then
  • For Each instance In monproc
  • MsgBox(instance.Id.ToString)
  • instance.Kill()
  • Next
  • End If
  • End Try
  • MsgBox("Création de la table, la base de données originale n'a pas été trouvée", MsgBoxStyle.Information, "BDD manquante")
  • ' Création d'un objet commande
  • Dim cmd As New OleDb.OleDbCommand
  • ' on récupère la connexion dans l'objet
  • cmd.Connection() = connex
  • ' nouvelle requête de création de table, là c'est du SQL Access
  • cmd.CommandText = "CREATE TABLE Facture(ID_Facture AUTOINCREMENT CONSTRAINT PKEY Primary Key, Fact_Montant_HT FLOAT, Fact_TVA FLOAT, Fact_Montant_TTC FLOAT, Fact_Four INTEGER, Fact_Mois INTEGER)"
  • ' on lance la requête
  • cmd.ExecuteNonQuery()
  • ' on prend les même et on recommence pour les autres tables...
  • cmd.CommandText = "CREATE TABLE Fournisseur(ID_Fournisseur AUTOINCREMENT CONSTRAINT PKEY Primary Key, Four_Nom VARCHAR(100), Four_Adresse VARCHAR(200))"
  • cmd.ExecuteNonQuery()
  • cmd.CommandText = "CREATE TABLE Mois(ID_Mois AUTOINCREMENT CONSTRAINT PKEY Primary Key, Mois_HT VARCHAR(30))"
  • cmd.ExecuteNonQuery()
  • ' Pour fermer la connexion à la base on fait juste un connex.Close(), mais ici on doit garder la connexion ouverte
  • End Try
  • Return connex
  • End Function
    ' Initialisation de la base de données et connexion
    Private Function Connexion_MDB() As OleDb.OleDbConnection

        ' tableau contenant l'ensemble des processus excel
        Dim monproc() As Process

        ' une instance parmis le tableau précédent
        Dim instance As Process

        ' création de l'objet Connection
        Dim connex As New OleDb.OleDbConnection
        ' initialisation de la chaîne de connexion au provider
        connex.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                            "Data Source= " & CurDir() & _
                            "\" & "TVA.mdb;"


        ' on tente un établissement de la connection
        Try
            connex.Open()
        Catch ex As Exception
            ' si jamais ça ne passe pas, c'est que la base est corrompue ou absente, on la recrée

            ' Si le fichier existe, c'est qu'il est corrompu, donc on l'efface
            If File.Exists(CurDir() & "\TVA.mdb") Then
                ' On essaie de supprimer le fichier TVA.mdb
                Try
                    ' mettre ses attributs à normal pour pouvoir l'effacer
                    File.SetAttributes(CurDir() & "\TVA.mdb", FileAttributes.Normal)
                    File.Delete(CurDir() & "\TVA.mdb")
                Catch err As Exception
                    ' si jamais on arrive pas à supprimer le fichier, on prévient l'utilisateur
                    MsgBox("Supression du fichier TVA.mdb échouée: " & Chr(13) & err.ToString(), MsgBoxStyle.Exclamation, "Erreur")
                End Try
            End If

            Dim appAccess As Access.Application

            ' on crée un objet de type BDD Access
            appAccess = CreateObject("Access.Application.11")

            ' on crée une nouvelle base de nom TVA.mdb
            appAccess.NewCurrentDatabase(CurDir() & "\TVA.mdb")

            ' comme le programme ne se ferme pas bien (j'ai du raté une instruction pour fermer l'application)
            ' on met fin aux processus MSACCESS en background
            monproc = Process.GetProcessesByName("MSACCESS")

            ' Si la liste n'est pas vide, on ferme toutes les applis concernées
            If monproc.Length <> 0 Then
                For Each instance In monproc
                    ' si l'instance ne porte pas de nom, elle est en background et zombie, donc on met fin au processus
                    If instance.MainWindowTitle = "" Then
                        instance.Kill()
                    End If
                Next
            End If

            ' on essaie de connecter à la base que l'on viens de créer
            Try
                connex.Open()
            Catch ex2 As Exception

                ' si ça échoue encore, on quitte directement le programme
                ' on quitte par un kill pour éviter de passer par la confirmation de sortie du programme (le handle closing() )
                MsgBox("Erreur : " & ex2.ToString)

                MsgBox("Impossible de recréer la base de donnée." & Chr(13) & "L'application va se terminer !", MsgBoxStyle.Critical, "Erreur critique !")

                monproc = Process.GetProcessesByName("FactureSoft")

                ' Si la liste n'est pas vide, on ferme toutes les applis concernées
                If monproc.Length <> 0 Then
                    For Each instance In monproc
                        MsgBox(instance.Id.ToString)
                        instance.Kill()
                    Next
                End If
            End Try

            MsgBox("Création de la table, la base de données originale n'a pas été trouvée", MsgBoxStyle.Information, "BDD manquante")

            ' Création d'un objet commande
            Dim cmd As New OleDb.OleDbCommand

            ' on récupère la connexion dans l'objet
            cmd.Connection() = connex

            ' nouvelle requête de création de table, là c'est du SQL Access
            cmd.CommandText = "CREATE TABLE Facture(ID_Facture AUTOINCREMENT CONSTRAINT PKEY Primary Key, Fact_Montant_HT FLOAT, Fact_TVA FLOAT, Fact_Montant_TTC FLOAT, Fact_Four INTEGER, Fact_Mois INTEGER)"

            ' on lance la requête
            cmd.ExecuteNonQuery()

            ' on prend les même et on recommence pour les autres tables...
            cmd.CommandText = "CREATE TABLE Fournisseur(ID_Fournisseur AUTOINCREMENT CONSTRAINT PKEY Primary Key, Four_Nom VARCHAR(100), Four_Adresse VARCHAR(200))"

            cmd.ExecuteNonQuery()

            cmd.CommandText = "CREATE TABLE Mois(ID_Mois AUTOINCREMENT CONSTRAINT PKEY Primary Key, Mois_HT VARCHAR(30))"

            cmd.ExecuteNonQuery()

            ' Pour fermer la connexion à la base on fait juste un connex.Close(), mais ici on doit garder la connexion ouverte

        End Try

        Return connex

    End Function

 Conclusion

Ce bout de code fait partie d'une application de gestion de facture en VB.Net.
L'application n'est pas particulièrement compliquée, mais il y a pas mal de fonctionnalitées différentes et aussi aps mal de contrôle / gestion d'erreur.
On utilise une base de données Access (comme vous pouvez le voir) et une impression par export Excel en invisible.

Si ça vous intéresse, faites moi signe.


Merci à la communauté de dev qui publient leurs sources, c'est toujours super utile.
Ça permet en général d'éviter de réinventer la roue tout les matins ;-)


A vérifier : si la base exite, qu'on peut s'y connecter, mais que ce n'est aps la bonne base (pas les bon champs etc.)
A update si j'ai le temps ;-)



 Historique

13 juillet 2007 09:14:21 :
Correction des types de certaines colonnes dans les tables (FLOAT au lieu de VARCHAR)
13 juillet 2007 09:33:06 :
Suppression de la fermeture de la base en cas de création, sinon la fonction qui appelle la connexion se plante lors de l' "ExecuteNonQuery"
17 juillet 2007 08:34:00 :
MàJ du premier commentaire pour expliquer les librairies à importer pour le présent bout de code.

 Sources de la même categorie

Source avec Zip CHARGER DES DONNÉES DEPUIS UN FICHIER TXT DANS UNE BASE DE D... par ig3
Source avec Zip Source avec une capture GESTIONPMPT par mark100
Source avec Zip Source .NET (Dotnet) DATA ACCESS COMPONENT par zaimfaycal
Source avec Zip GESTION ENSEIGNANTS par Elmarzougui
Source avec Zip GESTION D'UNE BIBLIOTHÈQUE par Elmarzougui

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture UN ACCESS MOIN COMPLET (IL MANQUE L'ÉDITEUR DE BASE DE DONNÉ... par MALIKcpp
Source avec Zip Source .NET (Dotnet) AJOUT, MODIFICATION ET LECTURE D'UNE BDD ACCESS EN VB.NET (D... par pico57
Source avec Zip Source .NET (Dotnet) CREER BASE DE DONNER ACCESS ET TABLE par byjouxbyjoux
Source .NET (Dotnet) CRÉATION BASE ACCESS EN VB.NET par HAkki
Source avec Zip Source avec une capture TRIEUR DE DOUBLONS par mortalino

Commentaires et avis

Commentaire de filou le 16/07/2007 18:34:29

Salut,
Je bute sur la ligne :
Dim appAccess As System.Application

Type System.Application non défini ???

Merci FiloU

Commentaire de flymann le 17/07/2007 08:29:04

Il n'y a pas de "Dim appAccess As System.Application"

C'est un "Dim appAccess As Access.Application", et il faut être bien sur la lib Access soit chargée avec le projet.
Il faut pour cela rajouter la librairie "Microsoft Office Access Object X.0" (X.0 étant la version d'Access en général) et en fonction de ça éditer la ligne 40 :

appAccess = CreateObject("Access.Application.11")

par

appAccess = CreateObject("Access.Application.X")

Voilà ;-)

Commentaire de nikita_007 le 18/07/2007 17:32:25

salut chui etudiante en programmation , je veux savoir comment protéger un programme vb.net par un mot de passe , ce programme est connecté à un bd access , urgent
merci d'avance

Commentaire de nikita_007 le 18/07/2007 17:34:44

mon e-mail est charityihssane@gmail.com , si vous avez quelque chose pour moi vueuillez l'envoyer vers cette dernière
merci

Commentaire de filou le 18/07/2007 17:43:24

Salut,
Essaye ça pour la protection de la BD Access si c'est bien ce que tu veut :
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";Jet OLEDB:Database Password=tonMP"
Je ne me souvien pas bien mais le MP doit exister dans access.

Commentaire de nikita_007 le 19/07/2007 17:57:49

salut ,
merci filou , mais moi je veux bien savoir comment protéger le programme en générale, je veux que lorsque je clique sur l'application pour l'executer , cette  derniere me demmande un mot de passe pour ouvrir le programme et appliquer ensuite le programme.moi je travaille avec visual studio 2005,
merci

Commentaire de DJMCG le 27/07/2007 12:05:57

Dommage qu'il n'y à pas de fichier zip.
Merci pour votre aide éventuelle.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

[VB.NET] Créer une BDD [ par Botanique ] Bonjour, j'ai créé une BDD sous Access et j'utilise via une interface en VB.NET J'aimerai que l'utilisateur puisse transformer cette BDD Access en un Création d'une base de données access [ par BobRouleur ] Bonjour a tous, À partir d'une application vb, je voudrais créer une nouvelle base de données access sur mon disque dur pour par la suite, lui créer d ACCESS 2000 : Créer un MDE via le code VBA [ par PtitGrumo ] Hello,Et bien j'ai une applis fait en access 2000. Dans cette applis je dois a un moment cr&#233;er une applis Access via le code et y copier des tabl Base de données access [ par TINAM ] Slt voila j'ai cr&#233;er une bd sous access et j'voudrai pourvoir cr&#233;er un bouton de cmd pour lance une rechercheMerci pour le coup de main< acceder à du code .NET via access [ par quineman ] Bonjour,Je suis en train de créer une application access et j'ai besoin de créer des pdf. Puis je utiliser des fonctions .NET dans une base access ?Pa ListeBox et bdd ACCESS [ par thkiller ] Bonjour à tous,Donc je dispose d'une bdd ACCESS et je désire faire un affichage des mes 5 dernières lignes de ma bdd dans une listbox multicolonne !!J FlexGrid et bdd ACCESS [ par thkiller ] Bonjour à tous,J'aurais voulu afficher les élément de ma bdd dans un FlexGrid mais je ne sais pas comment m'y prendre.Quelq'un sait peut me dire comme Réparer une bdd access [ par Soulant ] Bonjour,Je dois modifier un projet existant car il y a des soucis avec la base de donn&#233;es et de temps en temps il est n&#233;cessaire de la r&#23 remplir une listbox avec bdd access [ par da_chocapic ] Bonjour,je cherche un moyen de remplir une listbox par le contenu dune de mes tables access. J'ai deja fait avec une textbox,il suffit de selectionner créer un podium dans Access 97 [ par 5150 ] Bonjour à tous,Je souhaiterais créer dans un état access un podium c'est à dire rassembler les 3 valeurs Max d'une requête en affichant ces dernières


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales