Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: ---> Neu: Office 2010 Forum <-
Nachschlagfelder aus allen Tabellen entfernen
zurück: Arcrobat Reader mit DDE-Klasse steuern weiter: Feldinhalt aufteilen, z.B. Straße+Hausnummer Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Nouba
nicht ganz unwissend :)


Verfasst am:
07. Okt 2006, 08:32
Rufname:
Wohnort: Berlin

Nachschlagfelder aus allen Tabellen entfernen - Nachschlagfelder aus allen Tabellen entfernen

Nach oben
       Version: Office 97

Hallo,

um Nachschlagfelder, die eine Datenbank unnötig aufblähen und die Ausführungszeit von Abfragen, Formularen, Berichten, etc. negativ beeinflussen zu eliminieren, könnt ihr folgende Funktion in einem allgemeinen Modul einsetzen.
{Links The Evils of Lookup Fields in Tables und DBWiki: Access Anfänger: Die Nachteile von Nachschlagefeldern aus abgetrennten Beitraegen von jens05. Edit by Willi Wipp}

Die Funktion sollte ab Access 97 lauffähig sein und kann in ein globales Modul kopiert werden. Nach der erfolgreichen Anwendung, kann die Funktion wieder gelöscht werden, weil sie in der Datenbank selbst keine sinnvolle Aufgabe mehr erfüllen kann. Es sei denn, man will sie auf externe Datenbanken anwenden.
Code:
Option Explicit

'------------------------------------------------------------------------------
' Procedure   : RemoveLookupFields
' DateTime    : 07.10.2006 08:26
' Autor       : Norbert Bous
' Hintergrund : "The Access Web - The Evils of Lookup Fields in Tables"
'               http://www.mvps.org/access/lookupfields.htm
'
' Zweck       : Ändert in allen Nicht-Systemtabellen Nachschlagfelder in Text-
'               felder, um die Zugriffszeit zu beschleunigen.
' Argumente   : dbInstance:= initialisiertes DAO Datenbank Objekt (optional)
'               bei fehlendem Argument wird die aktuelle Datenbank CurrentDb()
'               verwendet
'
' Ein VBA-Verweis auf die Microsoft DAO 3.x Object Library ist notwendig
'
' Weil die Funktion nur 1x ihre Arbeit verrichten muß, sollte ein Aufruf im
' VBA-Direktbereich (Strg+G) in der Regel genügen.
'
' WICHTIG     : Unbedingt ein Backup der Datenbank bereit halten!!!
'
'------------------------------------------------------------------------------
'
Function RemoveLookupFields(Optional AccessDb As DAO.Database = Nothing) As Boolean
On Error GoTo Behandle_Fehler
  Dim tdf               As DAO.TableDef
  Dim fld               As DAO.Field
  Dim prpDelete         As Variant
  Dim prps()            As String
  'Auflistung der erweiterten DAO-Feldeigenschaften, die nach dem Ändern der
  'Nachschlagfelder gelöscht wird
  Const csFldPrps       As String = _
        "RowSourceType," _
      & "RowSource," _
      & "BoundColumn," _
      & "ColumnCount," _
      & "ColumnHeads," _
      & "ColumnWidths," _
      & "ListRows," _
      & "ListWidth," _
      & "LimitToList"
  'Eigenschaftsname, der die Auswahl des darzustellenden Steuerelements
  'festlegt
  Const csPropName      As String = "DisplayControl"

  'Datenfeld der zu löschenden erweiterten Feldeigenschaften initialisieren
  prps = Split(csFldPrps, ",")
  'Falls das Datenbank-Objekt uninitialisiert ist,
  'wird die aktuelle Datenbank verwendet
  If AccessDb Is Nothing Then
    Set AccessDb = CurrentDb()
  End If
  'Schleife über alle Tabellen der Datenbank
  For Each tdf In AccessDb.TableDefs
    'Systemtabellen und versteckte Tabellen ausschließen
    If tdf.Attributes = 0 Then
      'Schleife über alle Felder
      For Each fld In tdf.Fields
        'prüft, ob Feld ein Kombi- oder Listenfeld zur Darstellung verwendet
        If fld.Properties(csPropName) = acComboBox _
           Or fld.Properties(csPropName) = acListBox Then
          'Textfeld zur Darstellung einstellen
          fld.Properties(csPropName) = acTextBox
          'alle abhängigen Eigenschaften entfernen
          With fld.Properties
            'ignoriere fehlende Feldeigenschaften
            On Error Resume Next
            For Each prpDelete In prps
              .Delete prpDelete
            Next prpDelete
            'Fehlerbehandlung zurück setzen
            On Error GoTo Behandle_Fehler
          End With
        End If

Naechstes_Feld:
      Next fld
    End If
  Next tdf  'nächste Tabelle
  'Rückgabewert setzen
  RemoveLookupFields = True

Aufraeumen:
  On Error Resume Next
  Erase prps
  Exit Function

Behandle_Fehler:
  'die Feldeigenschaft existiert nicht
  If Err.Number = 3270 Then Resume Naechstes_Feld
  'ein unerwarteter Fehler trat auf
  MsgBox "Fehler " & Err.Number & ": " & Err.Description, _
         vbCritical, "RemoveLookupFields"
  Resume Aufraeumen
End Function


[edit]Nach einem Hinweis von Willi Wipp: Funktionsargument und falsche Verwendung von IsMissing korrigiert. (10.10.2006 14:31)[/edit]

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.


Zuletzt bearbeitet von Nouba am 10. Okt 2006, 13:31, insgesamt einmal bearbeitet
stpimi
Moderator Access


Verfasst am:
07. Okt 2006, 08:51
Rufname:
Wohnort: Graz

AW: Nachschlagfelder aus allen Tabellen entfernen - AW: Nachschlagfelder aus allen Tabellen entfernen

Nach oben
       Version: Office 97

Servus Norbert!

Danke für den Code - er wird sicher des öfteren hilfreich sein. Viel zu oft werden immer noch Nachschlagefelder als hilfreich präsentiert ohne deren Nachteile zu beachten.

Ergänzend: Natürlich müssen in den Formularen dann die aufgrund der Nachschlagefelder vom Assistenten erstellten Kominationsfelder entsprechend nachbearbeitet werden.

_________________
Lg, Michael

Dein Feedback hilft auch anderen - vergiß es nicht!
Willi Wipp
Moderator


Verfasst am:
12. Okt 2006, 11:12
Rufname:
Wohnort: Raum Wiesbaden


Re: Nachschlagfelder aus allen Tabellen entfernen - Re: Nachschlagfelder aus allen Tabellen entfernen

Nach oben
       Version: Office 97

Nachfragen zum Thema bitte hier Nachschlagfelder aus allen Tabellen entfernen {Nachgefragt} stellen.
_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)



NachschlagFelder.png
 Beschreibung:
 Dateigröße:  7.29 KB
 Angeschaut:  2193 mal

NachschlagFelder.png


Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen




Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: berechnendes textfeld in ein tabellen feld speichern 1 siggii 170 13. Nov 2009, 18:48
KlausMz berechnendes textfeld in ein tabellen feld speichern
Keine neuen Beiträge Access Tabellen & Abfragen: Zeitraumabfragen aus mehreren Tabellen mit Historie 5 Mawi76 112 25. Sep 2009, 20:40
ebs17 Zeitraumabfragen aus mehreren Tabellen mit Historie
Keine neuen Beiträge Access Formulare: Tabellen vergleichen und Anfügen 23 AccessAnfänger 695 18. Jul 2009, 22:39
Gast Tabellen vergleichen und Anfügen
Keine neuen Beiträge Access Programmierung / VBA: Suche durch alle tabellen 17 Gast 553 16. Mai 2009, 02:33
Willi Wipp Suche durch alle tabellen
Keine neuen Beiträge Access Programmierung / VBA: Access Runtime 2007 Probleme beim Tabellen umbenennen 11 Gast 738 28. Nov 2008, 09:00
Gast Access Runtime 2007 Probleme beim Tabellen umbenennen
Keine neuen Beiträge Access Formulare: über ein Formularfeld Einträge in mehreren Tabellen erzeugen 6 Tomtim 220 07. Aug 2008, 09:02
Tomtim über ein Formularfeld Einträge in mehreren Tabellen erzeugen
Keine neuen Beiträge Access Tabellen & Abfragen: Mehrere(?) Beziehungen zwischen zwei Tabellen! 2 pm3000 877 10. Jun 2008, 16:56
Gast Mehrere(?) Beziehungen zwischen zwei Tabellen!
Keine neuen Beiträge Access Programmierung / VBA: Alle Datenbanken und darin enthaltenen Tabellen ausgeben 5 Gerhard08 321 06. Jun 2008, 11:02
Elvis_the_King Alle Datenbanken und darin enthaltenen Tabellen ausgeben
Keine neuen Beiträge Access Programmierung / VBA: Führende Nullen entfernen 10 SirTom64 5498 25. Jan 2008, 09:37
tania63 Führende Nullen entfernen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellen einlesen und erweitern 4 lothar-adolf 1468 26. Dez 2007, 15:51
lothar-adolf Tabellen einlesen und erweitern
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellen verknüpfen 1 Mike 123 237 18. Okt 2007, 16:00
Willi Wipp Tabellen verknüpfen
Keine neuen Beiträge Access Tabellen & Abfragen: Reduzieren von Tabellen 1 Gilles 221 18. Jul 2007, 10:13
Zamp Reduzieren von Tabellen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Macromedia Dreamweaver