OVH Cloud OVH Cloud

Documentation en VBA

3 réponses
Avatar
brucat
Bonjour,

J'essaye d'automatiser la documentation de mes bases access.
En allant me promener sur le forum et les différentes sites, j'ai vu que
l'on pouvait via un code VBA récupérer les controles et leur propriété de
tous les objects.

J'ai trouvé un bout de code qui est pas mal mais je récupere uniquement les
données dans le debug.print.

J'aimerai ajouter toutes ces données dans une table TDocumentation pour
éditer ensuite un état.
Voici mon code(je fais d'abord les essais sur les formulaires et je récupere
uniquement le nom du formulaire. Si cela fonctionne je fais le reste)

Evidemment cela ne fonctionne pas .........

Merci pour votre aide.

Brucat

Private Sub listing()

Dim db As Database
Dim strSQL As String, i As Integer
Dim rstFrm As Recordset, rstList As Recordset
Dim frm As Form, ctrl As Control
Dim F As String

Set db = CurrentDb

strSQL = "select Name as strName from MSysObjects where " & "
MSysObjects.Type = -32768;"

Set rstFrm = db.OpenRecordset(strSQL, dbOpenSnapshot)

With rstFrm
.MoveLast
.MoveFirst
For i = 1 To .RecordCount
DoCmd.OpenForm !strName, acDesign
Set frm = Screen.ActiveForm
For Each ctrl In frm
Debug.Print frm.Name, frm.RecordSource, ctrl.Name
F = frm.Name
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom) VALUES(F)"
Next
DoCmd.Close acForm, frm.Name, acSaveNo
Set frm = Nothing
.MoveNext
Next i
End With
Set db = Nothing

End Sub

3 réponses

Avatar
Eric
Bonjour,

Ton erreur se situe au niveau de l'instruction SQL. Il te faut sortir la
variable F de la chaine SQL et 'entourer de ' car c'est une variable de
type Texte.

Mets :
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom) VALUES('" & F & "')"

que je remplacerai par :
db.Execute "INSERT INTO TDocumentation (Nom) VALUES('" & F & "')"

Remarque : Pourquoi ne pas utiliser la Documentation déjà faite par
Access et éditable puisque cela se présente sous forme d'états ?
Outils|Analyse|Documentation et choisir les objets dont tu veux la doc ?



Bonjour,

J'essaye d'automatiser la documentation de mes bases access.
En allant me promener sur le forum et les différentes sites, j'ai vu que
l'on pouvait via un code VBA récupérer les controles et leur propriété de
tous les objects.

J'ai trouvé un bout de code qui est pas mal mais je récupere uniquement les
données dans le debug.print.

J'aimerai ajouter toutes ces données dans une table TDocumentation pour
éditer ensuite un état.
Voici mon code(je fais d'abord les essais sur les formulaires et je récupere
uniquement le nom du formulaire. Si cela fonctionne je fais le reste)

Evidemment cela ne fonctionne pas .........

Merci pour votre aide.

Brucat

Private Sub listing()

Dim db As Database
Dim strSQL As String, i As Integer
Dim rstFrm As Recordset, rstList As Recordset
Dim frm As Form, ctrl As Control
Dim F As String

Set db = CurrentDb

strSQL = "select Name as strName from MSysObjects where " & "
MSysObjects.Type = -32768;"

Set rstFrm = db.OpenRecordset(strSQL, dbOpenSnapshot)

With rstFrm
.MoveLast
.MoveFirst
For i = 1 To .RecordCount
DoCmd.OpenForm !strName, acDesign
Set frm = Screen.ActiveForm
For Each ctrl In frm
Debug.Print frm.Name, frm.RecordSource, ctrl.Name
F = frm.Name
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom) VALUES(F)"
Next
DoCmd.Close acForm, frm.Name, acSaveNo
Set frm = Nothing
.MoveNext
Next i
End With
Set db = Nothing

End Sub







--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
brucat
Merci pour la réponse.

je n'utilise pas la doc de Access car elle est vraiment imbuvale.

je vais poursuivre mon petit chemin ..............

"Eric" a écrit dans le message de news:

Bonjour,

Ton erreur se situe au niveau de l'instruction SQL. Il te faut sortir la
variable F de la chaine SQL et 'entourer de ' car c'est une variable de
type Texte.

Mets :
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom) VALUES('" & F & "')"

que je remplacerai par :
db.Execute "INSERT INTO TDocumentation (Nom) VALUES('" & F & "')"

Remarque : Pourquoi ne pas utiliser la Documentation déjà faite par Access
et éditable puisque cela se présente sous forme d'états ?
Outils|Analyse|Documentation et choisir les objets dont tu veux la doc ?



Bonjour,

J'essaye d'automatiser la documentation de mes bases access.
En allant me promener sur le forum et les différentes sites, j'ai vu que
l'on pouvait via un code VBA récupérer les controles et leur propriété de
tous les objects.

J'ai trouvé un bout de code qui est pas mal mais je récupere uniquement
les
données dans le debug.print.

J'aimerai ajouter toutes ces données dans une table TDocumentation pour
éditer ensuite un état.
Voici mon code(je fais d'abord les essais sur les formulaires et je
récupere
uniquement le nom du formulaire. Si cela fonctionne je fais le reste)

Evidemment cela ne fonctionne pas .........

Merci pour votre aide.

Brucat

Private Sub listing()

Dim db As Database
Dim strSQL As String, i As Integer
Dim rstFrm As Recordset, rstList As Recordset
Dim frm As Form, ctrl As Control
Dim F As String

Set db = CurrentDb

strSQL = "select Name as strName from MSysObjects where " & "
MSysObjects.Type = -32768;"

Set rstFrm = db.OpenRecordset(strSQL, dbOpenSnapshot)

With rstFrm
.MoveLast
.MoveFirst
For i = 1 To .RecordCount
DoCmd.OpenForm !strName, acDesign
Set frm = Screen.ActiveForm
For Each ctrl In frm
Debug.Print frm.Name, frm.RecordSource, ctrl.Name
F = frm.Name
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom) VALUES(F)"
Next
DoCmd.Close acForm, frm.Name, acSaveNo
Set frm = Nothing
.MoveNext
Next i
End With
Set db = Nothing

End Sub







--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
brucat
Bonjour,

En regardant un peu partout, j'ai changé mon code.

j'ai encore des soucis :
Je n'arrive pas à récupérer certaines données :
Formulaires : La source du formulaire et si existe un sous formulaire
Requete : le formulaire ou l'état qui est construit

Pour la table, je n'arrive à récuperer que le nom.
Table : table en relation, la lsite des champs, le type , la clé, taille,
format
les requetes, formulaire, états qui sont construits.

Merci pour votre aide

Voici mon code :
Public Function Tables() As String
On Error Resume Next
Dim Obj As AccessObject
Dim Tbe As TableDef

For Each Obj In CurrentData.AllTables
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom) VALUES('" & Obj.Name &
"')"

Next Obj

End Function

Public Function Documentation () As String
On Error Resume Next
Dim Obj As AccessObject
Dim Mod1 As Module
Dim frm As Form
Dim Ctl As Control
Dim Rq As QueryDef
Dim Rp As Report
Dim i As Integer

For Each Obj In CurrentProject.AllForms

DoCmd.OpenForm Obj.Name, acDesign, , , , acHidden
For Each Ctl In Forms(Obj.Name).Controls
If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Or
Ctl.ControlType = acCheckBox Then
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom, Source, Nomcontrole)
VALUES('" & Obj.Name & "','" & Obj.Type & "','" & Ctl.Name & "')"
End If
Next Ctl
Set frm = Forms(Obj.Name)
DoCmd.Close acForm, Obj.Name, acSaveNo

Next Obj

For Each Obj In CurrentProject.AllReports

DoCmd.OpenReport Obj.Name, acDesign, , , , acHidden

For Each Ctl In Reports(Obj.Name).Controls
If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Or
Ctl.ControlType = acCheckBox Then
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom, Source, Nomcontrole)
VALUES('" & Obj.Name & "','" & Obj.Type & "','" & Ctl.Name & "')"
End If
Next Ctl
Set Rp = Reports(Obj.Name)
DoCmd.Close acReport, Obj.Name, acSaveNo

Next Obj

For Each Obj In CurrentData.AllQueries
Set Rq = CurrentDb.QueryDefs(Obj.Name)
For i = 0 To Rq.Fields.Count - 1
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom, Nomcontrole, Source)
VALUES('" & Rq.Name & "','" & Rq.Fields(i).Name & "','" &
Rq.Fields(i).SourceTable & "')"
Next i
Set Rq = Nothing

Next Obj

For Each Obj In CurrentProject.AllModules
DoCmd.OpenModule Obj.Name

DoCmd.RunSQL "INSERT INTO TDocumentation (Nom, autres) VALUES('" &
Obj.Name & "')"

DoCmd.Close acModule, Obj.Name, acSaveNo

Next Obj


End Function

"Eric" a écrit dans le message de news:

Bonjour,

Ton erreur se situe au niveau de l'instruction SQL. Il te faut sortir la
variable F de la chaine SQL et 'entourer de ' car c'est une variable de
type Texte.

Mets :
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom) VALUES('" & F & "')"

que je remplacerai par :
db.Execute "INSERT INTO TDocumentation (Nom) VALUES('" & F & "')"

Remarque : Pourquoi ne pas utiliser la Documentation déjà faite par Access
et éditable puisque cela se présente sous forme d'états ?
Outils|Analyse|Documentation et choisir les objets dont tu veux la doc ?



Bonjour,

J'essaye d'automatiser la documentation de mes bases access.
En allant me promener sur le forum et les différentes sites, j'ai vu que
l'on pouvait via un code VBA récupérer les controles et leur propriété de
tous les objects.

J'ai trouvé un bout de code qui est pas mal mais je récupere uniquement
les
données dans le debug.print.

J'aimerai ajouter toutes ces données dans une table TDocumentation pour
éditer ensuite un état.
Voici mon code(je fais d'abord les essais sur les formulaires et je
récupere
uniquement le nom du formulaire. Si cela fonctionne je fais le reste)

Evidemment cela ne fonctionne pas .........

Merci pour votre aide.

Brucat

Private Sub listing()

Dim db As Database
Dim strSQL As String, i As Integer
Dim rstFrm As Recordset, rstList As Recordset
Dim frm As Form, ctrl As Control
Dim F As String

Set db = CurrentDb

strSQL = "select Name as strName from MSysObjects where " & "
MSysObjects.Type = -32768;"

Set rstFrm = db.OpenRecordset(strSQL, dbOpenSnapshot)

With rstFrm
.MoveLast
.MoveFirst
For i = 1 To .RecordCount
DoCmd.OpenForm !strName, acDesign
Set frm = Screen.ActiveForm
For Each ctrl In frm
Debug.Print frm.Name, frm.RecordSource, ctrl.Name
F = frm.Name
DoCmd.RunSQL "INSERT INTO TDocumentation (Nom) VALUES(F)"
Next
DoCmd.Close acForm, frm.Name, acSaveNo
Set frm = Nothing
.MoveNext
Next i
End With
Set db = Nothing

End Sub







--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr