VBA Tipp: Präfix aus allen Tabellennamen entfernen oder ersetzen

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Beim Verknüpfen von Tabellen aus ODBC-Verbindungen wird, sofern es die Datenbank unterstützt, immer der Name des Schemas aus der Datenbank z. B. in Form von dbo_ oder public_ dem eigentlichen Tabellennamen vorangestellt. Es soll die Möglichkeit eröffnet werden, diesen Präfix aus allen Tabellennamen schnell zu entfernen oder durch einen anderen Präfix zu ersetzen.

Lösung

Die folgende Prozedur erfüllt diese Aufgabe, wobei die Funktionalität nicht nur für verknüpfte Tabellen gilt:

Public Sub StripTablePrefix(Optional Prefix As String = "dbo_", _
                            Optional NewPrefix As String)
 
   'Prefix (Optional):    Präfix, der aus allen Tabellennamen entfernt
   '                      werden soll.
   'NewPrefix (Optional): Neuer Präfix, der stattdessen verwendet werden soll
 
   'Quelle: http://www.dbwiki.net/
 
   Dim tdf    As DAO.TableDef
   Dim length As Long
 
   length = Len(Prefix)
   For Each tdf In CurrentDb.TableDefs
      If Left$(tdf.Name, length) = Prefix Then
         tdf.Name = NewPrefix & Mid$(tdf.Name, length + 1)
      End If
   Next
End Sub
Wiki hinweis.png

Hinweis:

Im Idealfall führt man diese Methode aus, bevor andere Objekte als Tabellen in der Datenbank erstellt worden sind. Ist der Idealfall nicht gegeben, sollte man temporär die Objektnamen-Autokorrektur einrichten, um die anschließend notwendige Korrekturen von Tabellennamen in Abfragen, Formularen und Berichten zu minimieren. Dabei ist zu beachten, dass die Objektnamen-Autokorrektur nicht in allen Konstellationen ihr Versprechen einhält, sowie, dass Tabellennamen in VBA-Code selbst an die neuen Namen angepasst werden muss.