» Poradna » Programy

VBA - MS Access - export názvů objektů, včetně názvu zdroje, ze kterého čerpají

Odpovědět  |  Zobrazit bez stromu  |  Upozornit redakci  |  nových odpovědí: 2/2
 |   |  Microsoft Windows 7 IE 9.0

Zdravím, mám databázi v MS Access 2007. Vzhledem k velkému počtu dotazů, formulářů a sestav by se mi hodilo znát VBA kód, který umí "exportovat" do textového souboru názvy těchto objektů, včetně názvů tabulek a dotazů, ze kterých tyto objekty čerpají. Můžete mi poradit, prosím? DíkyKód, který umí exportovat názevy objektů databáze, za který moc děkuji uživateli Pavlovi, je: Sub ObjectNames() Dim db As Database Dim td As TableDef Dim doc As Document Dim i As Integer Dim fnum Set db = CurrentDb() fnum = FreeFile Open CurrentProject.Path & "\ObjectNames.txt" For Output As #fnum For Each td In db.TableDefs If Left(td.Name, 4) <> "MSys" Then Print #fnum, "Tables" & vbTab & td.Name End If Next td For i = 0 To db.QueryDefs.Count - 1 Print #fnum, "Queries" & vbTab & db.QueryDefs(i).Name Next i For Each doc In db.Containers("Forms").Documents Print #fnum, "Forms" & vbTab & doc.Name Next doc For Each doc In db.Containers("Reports").Documents Print #fnum, "Reports" & vbTab & doc.Name Next doc For Each doc In db.Containers("Scripts").Documents Print #fnum, "Macros" & vbTab & doc.Name Next doc For Each doc In db.Containers("Modules").Documents Print #fnum, "Modules" & vbTab & doc.Name Next doc Set db = Nothing Close #fnum End Sub

Odpovědi na otázku

 |   |  Microsoft Windows Vista Opera 9.80  |  [46.166.163.---]

Kód pro výpis závislostí jsem našel na téhle stránce:http://flylib.com/books/en/1.129.1.105/1/Procedura ShowDependencies je vypisuje do okna "Immediate" (pokud není ve VBA editoru vidět, zobrazí se z menu View nebo Ctrl+G). Z okna je možné si výstup zkopírovat jinam.Protože se při kopírování kódu z výše uvedené stránky nezachovává odřádkování, dal jsem to ještě na pastebin (vč. hlavní procedury ObjectDependencies, která volá výpis závislostí postupně pro jednotlivé objekty)http://pastebin.com/9pFBeeiWVýpis závislostí má ale pár háčků. První je, že ne všechny objekty jsou podporované. V helpu je uvedeno:Informace o závislostech objektů jsou v databázi Access generovány jen pro tabulky, dotazy, formuláře a sestavy. Nejsou k dispozici pro následující objekty: - datové stránky, makra a moduly v databázi; - objekty nepodporované funkcí automatických oprav názvů, například akční dotazy a dotazy SQL, včetně sjednocovacích dotazů a definičních dotazů, předávacích dotazů a poddotazů; - projekty aplikace Access. Poznámka: Vnořené dotazy jsou podporovány jen částečně. Informace o závislostech jsou vygenerovány jen pro dotaz na nejvyšší úrovni. V seznamu objektů, na kterých dotaz závisí, navíc nejsou uvedeny zdrojové tabulky a dotazy vnořeného datového listu vyhledávacích polí dotazu. Informace o závislostech nejsou k dispozici ani tehdy, nemáte-li oprávnění k otevření objektu v návrhovém zobrazení. Nevím jak u Accessu 2007, ale v 2003 je možnost zobrazit Závislost objektů i graficky (v menu Zobrazit). V příslušném okně jsou pak vidět i některé Ignorované objekty. To by mohlo sloužit pro kontrolu toho, co se ve skriptu nevypíše.A ještě je důležité, aby bylo povoleno Sledování informací o automatických opravách názvů. To se kdyžtak nastavuje v Možnostech Accessu.Pozor na případné zapnutí volby: Provádět automatické opravy názvů. Jestli jste ji doposud nepoužívali, tak po její aktivaci se při přejmenování např. nějaké tabulky, automaticky provede úprava názvu v dalších, závislých objektech.To je užitečná funkce, ale je dobré znát tyto důsledky. Někdy to třeba nemusí být žádoucí. Pro běh skriptu ale stačí zvolit pouze Sledování (to vytváří a následně aktualizuje mapu názvů).Možná bude dobré udělat před spuštěním skriptu zálohu databáze, anebo to spustit na kopii.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 19.0

Diky moc :)

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: .doc, Vba ms, Next, Print



Určitě si přečtěte