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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
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" <f_framZZ@hotmail.com> a écrit dans le message de news:
uDzj2m4tFHA.3256@TK2MSFTNGP09.phx.gbl...
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
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
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
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
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
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
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
"Eric" <f_framZZ@hotmail.com> a écrit dans le message de news:
uDzj2m4tFHA.3256@TK2MSFTNGP09.phx.gbl...
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
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
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
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