Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Profitor am August 20, 2012, 10:51:33

Titel: Zusammenfassung vieler Tabelle
Beitrag von: Profitor am August 20, 2012, 10:51:33
Hallo Zusammen,
ich habe 27 Tabellen, die ich in eine Tabelle zusammenfassen möchte. Die Spaltennamen aller Tabellen sind gleich.
Ich habe es mit 27 Anfügeabfragen versucht, die ich in einem Macro zusammengefasst habe. Das ist nicht sehr komfortabel!!
Gibt es da etwas besseres?
Im Anschluss erstelle ich daraus eine Kreuzabfrage.
Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: MzKlMu am August 20, 2012, 10:56:58
Hallo,
ZitatGibt es da etwas besseres?
Ja, ein korrektes Datenmodell. Wozu brauchst Du 27 gleiche Tabellen?

Eine Unionabfrage erzeugt auch eine gemeinsame Abfrage. Eine Unionabfrage musst Du aber selbst schreiben, das geht nicht mit dem Abfrageentwurfsfenster von Access. Aber schneller dürfte das auch nicht sein.
Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: database am August 20, 2012, 10:58:28
Hallo,

per VBA könntest du die Namen der 27 Tabellen in einer Schleife ermitteln und so die Anfügeabfrage mit den ermittelten Tabellennamen dynamisch geändert ablaufen lassen.

Wobei sich aber auch die Frage stellt wie es sein kann dass 27 idente Tabellen überhaupt existieren  ???

@Klaus
Ist es theoretisch möglich 27 Tabellen in eine UNION zu packen oder geht das wirklich?
Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: Profitor am August 20, 2012, 11:02:42
Vielen Dank für die schnellen Antworten.
Nur die Spaltennamen sind gleich, die Inhalte sind natürlich unterschiedlich.
Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: database am August 20, 2012, 11:04:28
Schon klar, aber eben genau die gleichen Spalten habe ich unter 'idente Tabellen' gemeint.
Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: Profitor am August 20, 2012, 11:11:31
Die Tabellen kommen aus SAP. An eine bessere Lösung wird gearbeitet, ich kann aber nicht so lange warten.
Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: MzKlMu am August 20, 2012, 11:13:40
Hallo,
dann bleibt wohl nur die 27 Anfügeabfragen. Ob eine Union geht weis ich jetzt nicht, Peter hat mich da zum Zweifeln gebracht.
Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: database am August 20, 2012, 11:25:13
Hallo,

@Klaus
ZitatPeter hat mich da zum Zweifeln gebracht
...war nicht meine Absicht - ich habe da leider auch keine Kenntnis darüber  ::)

Du kannst aber auch folgendes in einem Standardmodul unterbringen und versuchshalber ablaufen lassen:


Public Sub InsertAusfuehren()

    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim strSQL As String

    Set db = CurrentDb

    For Each tdf In db.TableDefs

        If tdf.Name <> "DeineNeueTabelle" Then
            strSQL = "INSERT INTO DeineNeueTabelle (Feld1, Feld2, Feld....) " & _
                     "SELECT Feld1, Feld2, Feld... FROM  " & tdf.Name

            Db.Execute strSQL, dbFailOnError
        End If
    Next tdf

End Sub

Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: Profitor am August 20, 2012, 13:28:09
Vielen Dank für deine Mühe.
Wenn ich es einsetze kommen nur Fehlermeldungen. Ich glaube für eine solche Lösung bin ich nicht gut genug.
Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: database am August 20, 2012, 14:05:13
Hallo,

Zitat...kommen nur Fehlermeldungen...

Welche?

Habe eben gesehen, dass ich bei der Auflistung der Tabellen den Ausschluß der Systemtabellen nicht berücksichtigt habe.
Daher:

Public Sub InsertAusfuehren()

   Dim db As DAO.Database
   Dim tdf As DAO.TableDef
   Dim strSQL As String

   Set db = CurrentDb

   For Each tdf In db.TableDefs

       If tdf.Name <> "DeineNeueTabelle" And Left(tdf.Name,4) <> "MSys" Then
           strSQL = "INSERT INTO DeineNeueTabelle (Feld1, Feld2, Feld....) " & _
                    "SELECT Feld1, Feld2, Feld... FROM  " & tdf.Name

           Db.Execute strSQL, dbFailOnError
       End If
   Next tdf

End Sub



Zur Demo im Anhang ein kleines Beispiel.
Öffne das Modul, stell den Cursor in die Routine und drücke F8 um den Code schrittweise zu durchlaufen.
Bei jeder gefundenen Systemtabelle wird nun das Insert übersprungen und nur die beiden Tabellen mit den Daten behandelt.
Die Namen der Tabellen werden ins Direkfenster zur Kontrolle geschrieben (debug.print)

HTH

[Anhang gelöscht durch Administrator]
Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: ebs17 am August 20, 2012, 14:19:55
Vermutlich hat der Kollege außer dem SAP-Sammelsurium noch weitere Tabellen in der Datenbank, mindestens die Systemtabellen. Diese haben natürlich dann eine andere Struktur und werfen bei einer Anfügeabfrage Fehler.

@Profitor: Sinnreich wäre es, die Tabellen nicht mit "Augen zu" zu importieren als eigene Tabellen, sondern deren Inhalte gleich per Anfügeabfrage an eine geplante Datenbanktabelle anzufügen. Dann wäre es ein Vorgang und ist somit komfortabel.

MfGA
ebs
Titel: Re: Zusammenfassung vieler Tabelle
Beitrag von: database am August 20, 2012, 14:27:04
Hallo,

@ebs
Es sind die Systemtabellen, die den Fehler werfen - ich hab bei meinem Schnippsel übersehen diese auszuschließen.