Exportation automatique champs -> fichiers html ?
Bonjour
Une fois de plus, je ne sais pas où poster
j'ai Access 2007 et je travaille sur une table repertoriant 3 000 + standards de jazz. L'un des champs est (sera) issu de la somme de plusieurs autres et de requête(s) sql et posséde ainsi la totalité du code html d'une future page Web.
Pour créer les 3000 et + fichiers .html, existe t'il un moyen d'automatiser l'exportation de chaque champs vers "son" fichier html, ou dois je me taper 3000 fois un copier coller du code html ?
J'imagine , dans mon parfait debutantisme, qu'on doit pouvoir multiplier une action - ici, exporter en fichier html, mais ça pourrait être du pdf ou même une commande d'impression - par le nombre d'entrée, mais est il possible de générer un fichier html , de le remplir avec un champs, et, bien sûr , de le nommer en fonction d'un autre champs ??
Je rêve ?
Créer des pages web à partir de codes contenus dans une table Access
Bonjour Youssou,
J'ai une BDD dans laquelle je fais effectivement cela (créer des pages web à partir de données que j'ai stockées dans cette bdd). Voici comment je m'y suis pris.
1) Création d'une table T_HTML contenant 2 champs :
- IDHTML : NuméroAuto
- CODEHTML : Texte Long => Mon code HTML généralement structuré par brique (par exemple mon header, mon footer, un tableau type, etc...). Ces briques sont susceptibles de contenir des champs variables que j'intègre directement dans mon code pour faire des éventuelles perso. J'utilise dans ce cas le formalisme suivant : zzz_1_zzz pour la variable un, zzz_2_zzz pour la variable deux, etc...
Voici un exemple de brique HTML contenu dans ma table :
Code:
1 2
|
<table border="0" cellpadding="0" cellspacing="0"><tr height="zzz_1_zzz"><td>Bonjour zzz_2_zzz !</td></tr></table> ' le IDHTML de ce bloc est le n° 10 |
Je peux appeler ce bout de code HTML et personnaliser la hauteur de la ligne en remplaçant le "zzz_1_zzz" par le chiffre voulu... J'y reviendrais ci-dessous.
2) Création d'une fonction récupérant le code HTML grâce à son ID à placer dans un module :
Code:
1 2 3 4 5 6
|
Public Function GetHTML(i As Long) As String
GetHTML = Nz(DLookup("CODEHTML", "T_HTML", "[IDHTML] = " & i), "")
End Function |
3) Création d'une fonction permettant de créer des fichiers à placer dans un module :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Function CreerFichier(ByVal sPath As String)
Dim fso As FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile sPath
Set fso = Nothing
End Function |
NB: Il faut ajouter la référence à la bibliothèque FSO
4) Création d'une fonction permettant d'ajouter à la volée du texte à un fichier existant - A mettre dans un module :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
Function EcrireTexte(ByVal sPath As String, ByVal sTexte As String)
Dim fso As FileSystemObject, fFile As File, ts As TextStream
Set fso = CreateObject("Scripting.FileSystemObject")
Set fFile = fso.GetFile(sPath)
Set ts = fFile.OpenAsTextStream(ForAppending)
ts.WriteLine sTexte
ts.Close
Set ts = Nothing
Set fFile = Nothing
Set fso = Nothing
End Function |
5) En conclusion, je combine ces différentes instructions comme suit dans une procédure lancée par exemple à partir d'un formulaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
dim sHTML as string, sNom as string, sPath as string, i as long
sNom = "Youssou06"
sPath = "C:\Temp\Test.html"
i = 10
sHTML = replace(replace(getHTML(i), "zzz_1_zzz", 50), "zzz_2_zzz", sNom) ' J'extraie le bloc HTML n° 10, je personnalise la hauteur du tableau à 50 pixels, je personnalise le contenu de la case centrale du tableau avec la variable sNom...
CreerFichier sPath ' Je crée physiquement la page web à l'endroit souhaité
EcrireTexte sPath, sHTML ' J'ajoute le code HTML à la page web
FollowHyperLink sPath ' J'ouvre la page dans mon navigateur par défaut avec la fonction adhoc d'Access... |
Voilà, c'est une solution alternative. Personnellement, je l'utilise beaucoup notamment pour envoyer des emails personnalisés formaté en HTML...
Bon courage
el