Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: ---> 4. September: Office-Treffen Rhein-Ruhr <-
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: Tutorial Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Nouba
nicht ganz unwissend :)


Verfasst am:
07. Okt 2006, 09: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, 14:31, insgesamt einmal bearbeitet
stpimi
Moderator Access


Verfasst am:
07. Okt 2006, 09: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, 12: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:  2979 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 Wichtig: Access Programmierung / VBA: Warum Feedback fürs Forum wichtig ist und uns allen hilft. 19 Willi Wipp 4768 29. Aug 2010, 12:52
muththomas Warum Feedback fürs Forum wichtig ist und uns allen hilft.
Keine neuen Beiträge Access Formulare: Alle Bezeichnungsfelder in allen Fuß- und Kopfbereichen 4 Confused :? 101 15. Dez 2009, 09:50
Confused :? Alle Bezeichnungsfelder in allen Fuß- und Kopfbereichen
Keine neuen Beiträge Access Tabellen & Abfragen: Alle Tabellen(Backend) von zwei Datenbanken vergleichen 9 rambodieschen 1729 05. Okt 2009, 01:58
MissPh! Alle Tabellen(Backend) von zwei Datenbanken vergleichen
Keine neuen Beiträge Access Formulare: neue Tabellen sukzessive in aktuelle DB integrieren 1 Access-Jens 102 28. Sep 2009, 22:51
ebs17 neue Tabellen sukzessive in aktuelle DB integrieren
Keine neuen Beiträge Access Tabellen & Abfragen: 2 Tabellen vergleichen und aktualisieren 2 Gast 99 16. Sep 2009, 08:33
Gast 2 Tabellen vergleichen und aktualisieren
Keine neuen Beiträge Access Tabellen & Abfragen: Doppelte Datensätze entfernen 6 Conrad 406 11. Mai 2009, 12:57
Conrad Doppelte Datensätze entfernen
Keine neuen Beiträge Access Tabellen & Abfragen: eine Abfrage aus mehreren tabellen 9 Nogger 203 23. Jul 2008, 15:43
Willi Wipp eine Abfrage aus mehreren tabellen
Keine neuen Beiträge Access Programmierung / VBA: Tabellen ohne PK über ODBC einbinden - Meldung unterdrücken 4 Lars 1417 19. März 2008, 17:18
Lars Tabellen ohne PK über ODBC einbinden - Meldung unterdrücken
Keine neuen Beiträge Access Tabellen & Abfragen: SQL, Probleme bei Abgleich 2er Tabellen und JOINs 4 ShreksEsel 708 28. Feb 2007, 23:11
Willi Wipp SQL, Probleme bei Abgleich 2er Tabellen und JOINs
Keine neuen Beiträge Access Tabellen & Abfragen: Kreuzabfrage über 4 Tabellen 22 jabath 2642 18. Dez 2006, 10:42
jabath Kreuzabfrage über 4 Tabellen
Keine neuen Beiträge Access Hilfe: access 2 tabellen vergleichen und ersetzten 1 Gast 609 31. Aug 2006, 14:14
Gast access 2 tabellen vergleichen und ersetzten
Keine neuen Beiträge Access Formulare: Unterschiedliche Tabellen in einem Registersteuerelement 3 joopi 404 05. März 2006, 14:46
joopi Unterschiedliche Tabellen in einem Registersteuerelement
 

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