Accueil > > > 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
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
Commentaires et avis
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éer une applis Access via le code et y copier des tabl
Base de données access [ par TINAM ]
Slt voila j'ai créer une bd sous access et j'voudrai pourvoir cré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ées et de temps en temps il est nécessaire de la r
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
|
Derniers Blogs
[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|