OVH Cloud OVH Cloud

Exporter les données d'une table avec des critères

5 réponses
Avatar
XAVIER
Bonjour à tous et à toutes,

Je recherche à exporter les enregistrements d'une table 'tARTCICLES'.
Cette table contient les champs suivants (pour l'exemple) :

ID (Numauto) Clé primaire
SUJET :
CATEGORIE
S/S CATEGORIE
P1
P2

Je voudrait qu'acces exporte dans un fichier nommer [ID].txt les champs P1
et P2 l'enregistrement en cours. Il y aurait autant de fichier que
d'enregistrement. J'ai bien vu sur plusieurs site comment exporter une table
dans un seul fichier mais pas d'exemple pour exporter chacun des
enregistrements dans plusieurs fichiers.

Merci d'avance pour votre aide

5 réponses

Avatar
Gilbert
Bonjour,

Tu crées une requête basée sur ta table.
Avec une boucle sur tous les enregistrements de ta requête, dans laquelle
tu ouvres (en le créant si besoin) ton fichier
tu insères tes données
tu fermes ton fichier

Regarde l'aide sur les fonctions Open, Close, Read, Write ou bien chez
Raymond tu trouveras une librairie de gestion de fichiers :
http://officesystem.access.free.fr/scr_scripting_runtime.htm

Gilbert

"XAVIER" a écrit dans le message de
news:
Bonjour à tous et à toutes,

Je recherche à exporter les enregistrements d'une table 'tARTCICLES'.
Cette table contient les champs suivants (pour l'exemple) :

ID (Numauto) Clé primaire
SUJET :
CATEGORIE
S/S CATEGORIE
P1
P2

Je voudrait qu'acces exporte dans un fichier nommer [ID].txt les champs P1
et P2 l'enregistrement en cours. Il y aurait autant de fichier que
d'enregistrement. J'ai bien vu sur plusieurs site comment exporter une
table

dans un seul fichier mais pas d'exemple pour exporter chacun des
enregistrements dans plusieurs fichiers.

Merci d'avance pour votre aide


Avatar
XAVIER
Bonsoir Gilbert,

A vrai dire je pensai utiliser les collections ADO pour le traitement des
enregistrements et FreeFile pour écrire. J'ai réussi a boucler sur la
création des fichiers mais en ce qui concerne l'ajout d'un seul
enregistrement par fichier je n'y arrive pas, ma fonction écrit tous les
enregistrements dans tous les fichiers

Je retourne a l'étude des collections ADO mais je n'y comprend rien (je
débute) :)
Avatar
XAVIER
Voici où j'en suis.

Comment faire pour ne pas prendre en compte les champs 'SUJET', 'CATEGORIE',
et 'S/S CATEGORIE' ?

Si vous voyez des abérations dans le code ou mes commentaires n'hésitez pas
a le dire.

Public Function xportHTML(strItem As String)

Dim dbs As DAO.Database
Dim rst As DAO.Recordset ' L'objet Recordset représente les enregistrements
d'une table
Dim fld As DAO.Field ' L'objet Field représente un champ d'une table
Dim txtLine As String
Dim strFile As String
Dim Fichier As Integer

Const OP = "<p>" ' Ouverture de la balise paragraphe
Const FP = "</p>" ' Fermeture de la balise paragraphe

'Définition de l'emplacement du fichier html
strFile = Left(CurrentDb.Name, InStr(1, CurrentDb.Name, Dir(CurrentDb.Name))
- 1) & strItem & ".HTML"

' Création du Recordset
Set dbs = CurrentDb 'Ouverture de la base de donnée
Set rst = dbs.OpenRecordset(strItem, dbOpenTable, dbReadOnly) 'Ouverture de
la table en lecture seule
Fichier = FreeFile()

' Informations relatives à la table
Debug.Print "il y a "; rst.RecordCount; "enregistrements dans la table ";
rst.Name; " et"; rst.Fields.Count; "champs"


' Traitement
While Not rst.EOF


For Each fld In rst.Fields ' Pour chaque enregistrement :
If fld.Name = "ID" Then strFile = Left(CurrentDb.Name, InStr(1,
CurrentDb.Name, Dir(CurrentDb.Name)) - 1) & fld.Value & ".HTML"
If fld.Name = "SUJET" Then MsgBox "je suis dans le champ SUJET"
txtLine = txtLine & OP & fld.Value & FP
Next fld

Open strFile For Output Access Write As #Fichier ' Ouverture du fichier
en mode remplacement avec le droit d'ecrire
Print #Fichier, txtLine 'On écrit les données préformatées
Close #Fichier 'On ferme le fichier
MsgBox "Le fichier " & strFile & " est créé.", vbOKOnly, "" 'On informe
que le fichier est créé
txtLine = "" 'On vide la constante
rst.MoveNext 'On passe a l'enregistrement suivant
Wend

' On ferme le Recordset
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing

End Function
Avatar
Gilbert
Bonjour,

Les modifs que je te propose sont entre les ------------------------------

Gilbert


Public Function xportHTML(strItem As String)

Dim dbs As DAO.Database
Dim rst As DAO.Recordset ' L'objet Recordset représente les
enregistrements

d'une table
Dim fld As DAO.Field ' L'objet Field représente un champ d'une table
Dim txtLine As String
Dim strFile As String
Dim Fichier As Integer

Const OP = "<p>" ' Ouverture de la balise paragraphe
Const FP = "</p>" ' Fermeture de la balise paragraphe

'Définition de l'emplacement du fichier html
strFile = Left(CurrentDb.Name, InStr(1, CurrentDb.Name,
Dir(CurrentDb.Name))

- 1) & strItem & ".HTML"

' Création du Recordset
Set dbs = CurrentDb 'Ouverture de la base de donnée
Set rst = dbs.OpenRecordset(strItem, dbOpenTable, dbReadOnly) 'Ouverture
de

la table en lecture seule
Fichier = FreeFile()

' Informations relatives à la table
Debug.Print "il y a "; rst.RecordCount; "enregistrements dans la table ";
rst.Name; " et"; rst.Fields.Count; "champs"


' Traitement
While Not rst.EOF
------------------------------------------------------>

strFile = Left(CurrentDb.Name, InStr(1, CurrentDb.Name,
Dir(CurrentDb.Name)) - 1) & rst!ID & ".HTML"

txtLine = rst!P1 & " " & rst!P2
------------------------------------------------------>

Open strFile For Output Access Write As #Fichier ' Ouverture du
fichier

en mode remplacement avec le droit d'ecrire
Print #Fichier, txtLine 'On écrit les données préformatées
Close #Fichier 'On ferme le fichier
MsgBox "Le fichier " & strFile & " est créé.", vbOKOnly, "" 'On
informe

que le fichier est créé
txtLine = "" 'On vide la constante
rst.MoveNext 'On passe a l'enregistrement suivant
Wend

' On ferme le Recordset
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing

End Function


Avatar
XAVIER
Gilbert.

Je suis finalement arrivé a creer ma fonction d'export au format HTML, (elle
permet déjà le traitement par lot avec des critères d'exception + quelques
options supplémentaires).

Pour te remercier là voici :

' TABLE2HTML
"tarticles","<p>","</p>","ID","Append","SUJET","CATEGORIE","SOUS CATEGORIE"

Public Function TABLE2HTML(Table As String, BaliseHTML_ouverture As String,
baliseHTML_fermeture As String, Champ_cle_primaire_sans_doublons, Optional
Mode_ecriture_fichier As String, Optional Exception_champ1 As String,
Optional Exception_champ2 As String, Optional Exception_champ3 As String) As
Boolean

Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim fld As DAO.Field
Dim txtLine As String
Dim strFile As String
Dim Fichier As Integer
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(Table, dbOpenTable, dbReadOnly)
Fichier = FreeFile()
Debug.Print "Il y a " & rst.Fields.Count & " champs dans la table '" &
rst.Name & "' et " & rst.RecordCount & " enregistrements"
While Not rst.EOF
For Each fld In rst.Fields
If fld.Name = Champ_cle_primaire_sans_doublons Then strFile =
Left(CurrentDb.Name, InStr(1, CurrentDb.Name, Dir(CurrentDb.Name)) - 1) &
fld.Value & ".HTML" 'Définition de l'emplacement du fichier html
If Not fld.Name = Champ_cle_primaire_sans_doublons Then
If Not fld.Name = Exception_champ1 Then
If Not fld.Name = Exception_champ2 Then
If Not fld.Name = Exception_champ3 Then
If Not fld.Value = "" Then
txtLine = txtLine & BaliseHTML_ouverture & fld.Value
& baliseHTML_fermeture
End If
End If
End If
End If
End If
Next fld

If Mode_ecriture_fichier = "" Then
Open strFile For Output Access Write As #Fichier
Else
If Mode_ecriture_fichier = "Append" Then
Open strFile For Append Access Write As #Fichier
Else
If Mode_ecriture_fichier = "Output" Then
Open strFile For Output Access Write As #Fichier
Else
MsgBox "Vous avez mal renseigné le mode d'écriture des
fichiers lors de l'appel de la fonction.(Pour mémo : Append ou Output)",
vbOKOnly, "Appel de la fonction TABLE2HTML"
GoTo LastLine
End If
End If
End If
Print #Fichier, txtLine
Close #Fichier
txtLine = ""
rst.MoveNext
Wend
TABLE2HTML = True
LastLine:
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
strFile = ""
Debug.Print TABLE2HTML
End Function
-------------------------------------------------------
Mais j'ai encore besoin d'aide, je voudrais créer un plan de site Web avec
les champs :

SUJET,
CATEGORIE,
SOUS CATEGORIES
TITRE

j'ai déjà créé cette ébauche :


' AJOUT2HTML "tArticles","ID","<HTML>","output"

Public Function AJOUT2HTML(Table As String, Champ_cle_primaire_sans_doublons
As String, Texte As String, Optional Mode_ecriture_fichier As String)

Dim dbs As DAO.Database
Dim rst As DAO.Recordset ' L'objet Recordset représente les enregistrements
d'une table
Dim fld As DAO.Field ' L'objet Field représente un champ d'une table
Dim strFile As String
Dim Fichier As Integer

' Création du Recordset
Set dbs = CurrentDb 'Ouverture de la base de donnée en cours
Set rst = dbs.OpenRecordset(Table, dbOpenTable, dbReadOnly) 'Ouverture de la
table en lecture seule
Fichier = FreeFile()

' Traitement
While Not rst.EOF

For Each fld In rst.Fields ' Pour chaque champ de l'enregistrement
courant...
If fld.Name = Champ_cle_primaire_sans_doublons Then
strFile = Left(CurrentDb.Name, InStr(1, CurrentDb.Name,
Dir(CurrentDb.Name)) - 1) & fld.Value & ".HTML" 'Définition de l'emplacement
du fichier html
End If
Next fld

If Mode_ecriture_fichier = "" Then
Open strFile For Append Access Write As #Fichier ' Ouverture du
fichier en mode ajout avec le droit d'ecrire
Else
If Mode_ecriture_fichier = "Append" Then
Open strFile For Append Access Write As #Fichier ' Ouverture du
fichier en mode Ajout avec le droit d'ecrire
Else
If Mode_ecriture_fichier = "Output" Then
Open strFile For Output Access Write As #Fichier ' Ouverture du
fichier en mode Remplacement avec le droit d'ecrire
Else
MsgBox "Vous avez mal renseigné le mode d'écriture des
fichiers lors de l'appel de la fonction.(Pour mémo : Append ou Output)",
vbOKOnly, "Appel de la fonction AJOUT2HTML"
GoTo LastLine
End If
End If
End If


Print #Fichier, Texte 'On écrit
Close #Fichier 'On ferme le fichier
rst.MoveNext 'On passe a l'enregistrement suivant
Wend

LastLine:
' On ferme le Recordset
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
strFile = ""
End Function

Mais bon je bloque vraiment pour le coup... A L'AIDE !!!!