formateur informatique

Archiver du contenu Internet en base de données Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Archiver du contenu Internet en base de données Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Archiver les contenus du Web

Grâce aux deux précédents épisodes, nous avons appris à récupérer du contenu du Web sur des requêtes réalisées par mots clés. Mais nous avons aussi appris à purger ces contenus réceptionnés des résidus Html indésirables. Dans ce nouveau volet, nous proposons d'enregistrer sur demande, les articles récupérés, dans une table de la base de données. L'idée est de créer une véritable encyclopédie en local, au fur et à mesure des demandes, pour restituer des réponses instantanées, même hors ligne.

Base de données Access à télécharger
Pour finaliser cette solution, nous devons poursuivre les travaux réalisés précédemment.
  • Télécharger le fichier compressé stocker-contenu-web.rar en cliquant sur ce lien,
  • Le décompresser dans le dossier de votre choix,
  • Double cliquer sur le fichier résultant pour l'ouvrir dans Access,
  • Dans le volet de navigation sur la gauche, double cliquer sur le formulaire FWeb,
  • Dans la zone de saisie en haut du formulaire, taper les mots clés suivants : Lewis Hamilton,
  • Dès lors, cliquer sur le bouton intitulé Trouver,
Importer des articles Internet, sans balises Html, sur un formulaire Access

Aussitôt, toutes les informations détaillées sur le multiple champion du monde de Formule 1, sont rapatriées du Web, plus précisément à partir du site Wikipédia. Un traitement intermédiaire a permis de purger le contenu Internet pour livrer un rendu tout à fait lisible.

La procédure de stockage
Sur la droite du premier bouton, vous notez la présence d'un second. Il est intitulé Enregistrer. C'est lui que nous devons développer, pour permettre à l'utilisateur d'archiver ces informations importées, dans la table TWeb de la base de données. Cette table est naturellement vide pour l'instant.
  • A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans les propositions, choisir le mode Création,
  • Sur le formulaire en conception, cliquer sur le bouton Enregistrer pour le sélectionner,
  • Activer l'onglet Evénement de sa feuille de propriétés,
  • Puis, cliquer sur le petit bouton associé à son événement Au clic,
  • Dans la boîte de dialogue qui suit, choisir le générateur de code et valider par Ok,
De fait, nous basculons dans l'éditeur VBA Access entre les bornes de la procédure événementielle enregistrer_Click.

La déclaration des variables
Ensuite, ce sont certaines variables qui sont nécessaires, notamment pour piloter la base de données mais aussi pour construire la requête SQL d'insertion.
  • Dans les bornes de la procédure événementielle, ajouter les déclarations suivantes :
...
Dim base As Database: Dim enr As Recordset
Dim requete As String: Dim texte As String
...


Nous exploiterons les deux premiers objets pour respectivement piloter la base de données en cours et ses enregistrements. Nous avons typé les deux dernières comme des textes. La première doit stocker la syntaxe SQL de la requête insertion. La seconde doit mémoriser le texte à insérer après un traitement intermédiaire.

Piloter la base de données
Puisque les objets et variables sont déclarés, nous devons maintenant les utiliser pour manipuler la base de données en cours et construire la syntaxe Sql de la requête devant vérifier si l'article à insérer n'a pas déjà été archivé dans la table de la base de données. En effet, il n'est pas question d'alourdir les informations en générant des doublons.
  • Après les variables, ajouter les instructions VBA suivantes :
...
requete = "SELECT * FROM TWeb WHERE web_mots='" & motsCles.Value & "'"
Set base = CurrentDb()
Set enr = base.OpenRecordset(requete)
...


Nous construisons tout d'abord une requête sélection classique pour savoir si les mots clés tapés (motsCles.Value) sur le formulaire, n'ont pas déjà été enregistrés dans le champ web_mots de la table TWeb. Puis, grâce à la fonction CurrentDb, nous initialisons (Set) l'objet base sur la base de données en cours. C'est ainsi que sa méthode héritée OpenRecordset permet d'initialiser (Set) l'objet enr, sur le jeu d'enregistrements défini par la requête sélection.

L'article est-il déjà archivé ?
L'objet enr ainsi initialisé a hérité des propriétés et méthodes pour piloter les enregistrements de la base de données et plus spécifiquement des enregistrements de la table TWeb. L'une de ses propriétés se nomme RecordCount. Elle permet de savoir si des enregistrements existent dans la sélection, en d'autres termes, si l'article que nous essayons d'ajouter dans la table n'a pas déjà été archivé.
  • A la suite du code VBA, ajouter l'instruction conditionnelle suivante :
...
If enr.RecordCount = 0 Then

Else
MsgBox "Le contenu de la recherche est déjà sauvegardé."
End If
...


Si la sélection est vide (enr.RecordCount = 0), nous prévoyons un traitement. Il doit consister à ajouter le nouvel article importé depuis Internet, dans la table. Nous y arrivons bientôt. Dans le cas contraire, nous avortons le traitement en en informant l'utilisateur avec une boîte de dialogue (MsgBox).

Corriger le texte à insérer
Le texte importé contient des apostrophes. Ces caractères sont interdits dans une syntaxe SQL car ils sont déjà utilisés. Nous pourrions les échapper mais ici, nous choisissons de les remplacer. Nous pourrions aussi choisir un caractère remarquable qui permettrait la restitution des apostrophes sur demande.
  • Dans la première branche de l'instruction conditionnelle, ajouter la ligne VBA suivante :
...
texte = Replace(Left(contenu.Value, 5000), "'", " ")
...


Nous dégainons de nouveau la fonction Replace pour opérer toutes les modifications sur l'apostrophe. Arbitrairement et grâce à la fonction Left, nous choisissons d'agir sur les 5000 premiers caractères. C'est un paramètre à ajuster à souhait.

Archiver l'article importé
Il ne nous reste plus qu'à construire la requête SQL d'ajout et à l'exécuter pour stocker les informations du Web dans la table dédiée.
  • Toujours dans l'instruction conditionnelle et à la suite, ajouter les deux lignes VBA suivantes :
...
requete = "INSERT INTO TWeb (web_mots, web_contenu) VALUES ('" & motsCles.Value & "', '" & texte & "')"
base.Execute requete
...


Très simplement, nous engageons une requête d'insertion (INSERT INTO) sur les champs web_mots et web_contenu de la table TWeb pour y ajouter les informations sur les mots clés tapés (motsCles.Value) et l'article Web correspondant et importé (texte).

Fermer la connexion
Pour finir et comme il est de coutume, nous devons fermer les objets de base de données et les détruire pour libérer la mémoire de l'ordinateur, à la fin du traitement.
  • Après l'instruction conditionnelle, ajouter les lignes VBA suivantes :
...
End If

enr.Close
base.Close
Set enr = Nothing
Set base = Nothing


End Sub
...
  • Enregistrer les modifications (CTRL + S) et basculer sur le formulaire (ALT + Tab),
  • L'exécuter en enfonçant par exemple la touche F5 du clavier,
  • Dans la zone de recherche, taper de nouveau les mots clés : Lewis Hamilton,
  • Puis, cliquer sur le bouton Trouver,
  • Une fois le contenu importé, cliquer sur le bouton Enregistrer,
En apparence, rien ne se produit. D'ailleurs, nous aurions pu prévoir un message de confirmation en fin de traitement. Mais si vous ouvrez la table, vous constatez que les informations importées ont parfaitement été archivées.

Archiver les informations Internet dans une table Access mais pas en doublons

Si vous tapez d'autres mots clés et que vous cliquez respectivement sur les boutons Trouver et Enregistrer, l'archivage est de nouveau un succès. Si vous importez un article qui a déjà été stocké dans la table et que vous cliquez sur le bouton Enregistrer, cette fois c'est un message de refus qui s'interpose. C'est ainsi que nous ne polluerons pas la base de données avec des doublons.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn