Import von Excel-Datei auf mehrere Tabellen verteilen

Antwort erstellen

Smilies
:D :) :( :o :shock: :? 8-) :lol: :x :P :razz: :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :badgrin: :doubt:
BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet
Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Import von Excel-Datei auf mehrere Tabellen verteilen

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von BadaPing » 02. Sep 2021, 08:58

Hallo zusammen,

Kurzes Update: Ich habe den Fehler in meinem Code gefunden. Die Daten werden jetzt in der richtigen Tabelle importiert. Zusätzlich habe ich jetzt eine Funktion ergänzt, die das Datum aus dem Titel der Datei abgreift und in der entsprechenden Spalte ergänzt.

Über Rückmeldung bzgl der zu berechnenden Spalte wäre ich weiterhin dankbar. Bin überlegen, ob ich dafür ein neues Thema eröffnen soll, da die Frage sich nun ja von dem eigentlichen Thema entfernt hat?

Viele Grüße
Frederick

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von BadaPing » 01. Sep 2021, 14:49

Hallo zusammen,

danke für die beiden Rückmeldungen.

Zum Thema Datenstruktur:
Mit als Spalte meinte ich, dass ja jetzt quasi alle Werte in einer Spalte stehen und dann über die MessgrößenID in der Spalte nebendran bestimmt wird, um welche konkrete Messgröße es sich hier handelt. Das Problem habe ich dank Steffens Hinweis mittlerweile gelöst. Bin dort aber auf ein neues Problem gestoßen. Ich möchte in der Tabelle eine Spalte ergänzen, in der ich die Veränderung zur Vorwoche berechne. Der Wert sollte dauerhaft in der Tabelle gespeichert sein, da ich später einen Bericht generiere, in dem u.a. dieser Wert für die letzten Stichtage graphisch dargestellt wird. D.h. eine Abfrage ist hier aus meiner Sicht keine Lösung. Auch eine einfache berechnete Spalte funktioniert nicht, da meine Tabelle jetzt bspw. wie folgt aussieht:
Stichtag KenngrößenID Wert
1.1.21 1 10
1.1.21 2 3
1.1.21 3 8
2.1.21 1 11
2.1.21 2 4
2.1.21 3 7
3.1.21 1 9
usw.

Hat hier jemand eine Idee, wie ich dort eine berechnete Spalte einfüge, die sich immer auf den vorherigen Stichtag für die KenngrößenID (und dann auch nochmal AbteilungsID, die ich im Beispiel nicht enthalten habe) bezieht?

Zum Thema Import:
Wie gesagt ist eine verknüpfte Tabelle aufgrund unserer Datenablagestruktur und verwendeten Systeme nicht möglich, es verreißt jedes Mal die Verknüpfung. Ich habe jetzt mit Hilfe dieses Tutorials: https://www.youtube.com/watch?v=WO7Js1Mh13c eine Import-Funktion gebaut, bei der ich die Datei auswählen kann und sie dann importiert bekomme.
Dabei habe ich noch folgende Probleme.
1. Die importierte Datei wird mir immer als neue Tabelle angelegt. Wie importiere ich diese in eine bestehende Tabelle?
2. Wie ergänze ich ein Inputfeld, so dass in einer bestimmten Spalte immer der Stichtag ergänzt wird?

Mein Code sieht aktuell wie folgt aus:
Import-Modul
Code: Alles auswählen
Public Sub ImportExcelSpreadsheet(FileName As String, tableName As String)
On Error GoTo BadFormat
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, tableName, FileName, True, "A1:F4"
    Exit Sub
   
BadFormat:
    MsgBox "The file you tried to import was not an Excel spreadsheet."

End Sub


Formular-Code
Code: Alles auswählen
Private Sub btnBrowse_Click()
    Dim diag As Office.FileDialog
    Dim item As Variant
   
    Set diag = Application.FileDialog(msoFileDialogFilePicker)
    diag.AllowMultiSelect = False
    diag.Title = "Please select an Excel Spreadsheet"
    diag.Filters.Clear
    diag.Filters.Add "Excel Spreadsheets", "*.xls, *.xlsx"
   
    If diag.Show Then
        For Each item In diag.SelectedItems
            Me.txtFileName = item
        Next
    End If
   

End Sub

Private Sub btnImportSpreadsheet_Click()
    Dim FSO As New FileSystemObject
   
    If Nz(Me.txtFileName, "") = "" Then
        MsgBox "Please select a file!"
        Exit Sub
    End If
   
    If FSO.FileExists(Me.txtFileName) Then
        ExcelImport.ImportExcelSpreadsheet Me.txtFileName, FSO.GetFileName(Me.txtFileName)
    Else
        MsgBox "File not found!"
    End If
End Sub


Über Vorschläge wäre ich dankbar.

Viele Grüße
Frederick

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von Beaker s.a. » 01. Sep 2021, 10:52

Hallo Frederick,
der als Spalte übernommen wird.

Was heisst denn "als Spalte"?
Das ist der Feldwert für das Datumsfeld in der n:m, der für alle Anfügeabfragen
konstant ist (pro Stichtag).

Am Anfang hattest du das Datum als PK, wovon richtigerweise abgeraten wurde.
Wenn du sicherstellen willst, dass es nur einen Import an einem Tag geben darf,
kannst du das Datumsfeld mit einem eindeutigen Index belegen.
ACHTUNG, das funktioniert hier allerdings nur mit einem Mehrfelder-Index in
Zusammenhang mit der Abteilungs_IDF und/oder der Messgroessen_IDF.

gruss ekkehard

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von SGast » 01. Sep 2021, 09:49

Hallo,
Aufgrund des Ablagesystemen bei uns in der Firma bekomme ich allerdings verknüpfte Tabellen nicht richtig zum Laufen.
Kopiere die Excelmappe lokal, dann kannst du die Verknüpfung auch gleich fest belassen und musst diese nicht an einen bestimmten Dateinamen anpassen.
Stichtag eingeben: Im einfachsten Fall über eine InputBox, besser aber über ein Formularfeld. Dort kannst du dann auch gleich noch den Befehlsknopf zum Kopieren der mMappe und zum Aufruf der Abfragen unterbringen.

Gruß Steffen

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von BadaPing » 01. Sep 2021, 09:30

Hi Steffen,

Vielen Dank für den Tipp! Ich habe eine Tabelle „Import“ erstellt und dazu entsprechende Anfügeabfragen für jede Spalte, die mir meine Stichtags-Tabelle füllen. Das klappt wunderbar. Ich habe allerdings aus Testzwecken jetzt schon mit einer korrekt befüllten Import-Tabelle gearbeitet. Aufgrund des Ablagesystemen bei uns in der Firma bekomme ich allerdings verknüpfte Tabellen nicht richtig zum Laufen. Ich wäre daher noch für Tipps dankbar, wie ich mit Hilfe von Code die zu importierende Tabelle einfügen und manuell einen Stichtag eingeben kann, der als Spalte übernommen wird.

Viele Grüße
Frederick

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von SGast » 01. Sep 2021, 07:30

Hallo,
es gibt verschiedene Möglichkeiten für den Excelimport.
Die optimale Variante ist aber, die Exceltabelle zu verknüpfen und dann über eine oder mehrere Abfragen zu importieren.

Du brauchst vermutlich für jede Spalte eine separate Aktualisierungsabfrage.

Das Verknüpfen und der Aufruf der einzelnen Abfragen erfolgt dann per VBA, aber zunächst kann man alles erst mal manuell erstellen/testen. Beim automatisierten Aufruf kannst du dann auch den Stichtag abfragen.

Gruß Steffen

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von BadaPing » 01. Sep 2021, 07:19

Hallo zusammen,

Ich habe die Tabellen nun wie bereits vorgeschlagen erstellt. Das Problem aktuell ist noch der Datenimport. Aktuell bringe ich in Excel über eine Hilfstabelle die Daten in die richtige Form, so dass ich sie problemlos in die Tabelle Stichtage anfügen kann. Allerdings ist das nicht die eleganteste Lösung.

Hat jemand eine Idee, wie ich die Daten in Access vernünftig aufbereite? Mein Problem ist, dass ich in meiner Ursprungsdatei die einzelnen Kennzahlen in den jeweiligen Spalten habe und für Access nun alle Werte in einer Spalte benötige inkl. der Zuordnung der richtigen MessgrößenID.

Mein Ziel wäre es, dass ich den Import in Access starte, die zu importierende Datei auswähle und dabei den Stichtag ergänze, der dann für den kompletten zu importierenden Datensatz ergänzt wird.

Viele Grüße
Frederick

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von BadaPing » 31. Aug 2021, 18:57

Also ohne neue Registrierung kann man das wohl nicht öffnen.

Danke für die anderen Links! Ich bin jetzt am schauen, wie ich die Excel-Datei importiere und dann in Access richtig zuordne und anfüge.

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von KlausMz » 31. Aug 2021, 18:27

Hallo,
Den Link bzw. die Datei, die zuletzt gepostet wurde, kann ich leider nicht öffnen.
Warum nicht, kommt eine Meldung ?

Hier noch was zum Lernen:
Theorie:
https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/
Mehr Praxis:
https://www.access-tutorial.de/

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von BadaPing » 31. Aug 2021, 17:18

Hallo zusammen,

Vielen Dank für die schnellen Rückmeldungen! Mir ist jetzt ehrlich gesagt noch nicht ganz klar, warum man es auf drei Tabellen aufteilt. Aber da lese ich mich nochmal grundsätzlich ein bzw. schaue, wie ich meinen ursprünglichen Bericht aufbereiten muss, damit der Import funktioniert. Weil ich sonst einfach alles in einer Tabelle gemacht hätte und dort dann entsprechend angefügt.

Den Link bzw. die Datei, die zuletzt gepostet wurde, kann ich leider nicht öffnen.

Viele Grüße und vielen Dank an alle
Frederick

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von Gast » 31. Aug 2021, 16:32

Hier liegt eine n:m Beziehung vor zu der in Access 3 Tabellen erforderlich sind.

Dann klappt eine Aufteilung auch über je eine Anfügeabfrage pro Tabelle (für sinnvolle Strukturen sind Lösungen oft einfacher):
Grundlagen - SQL ist leicht (4) - Aktualisierung einer Tabelle

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von Beaker s.a. » 31. Aug 2021, 16:29

Vielleicht hilft's ja.

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von KlausMz » 31. Aug 2021, 16:25

Hi,
Na gut, Klaus war schneller.
Dafür ist Deins mit Bild deutlicher

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von Beaker s.a. » 31. Aug 2021, 16:12

Und, ...
Stichwort "Normalisierung", hier die Minimalstanforderung.
Na gut, Klaus war schneller.

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitrag von KlausMz » 31. Aug 2021, 16:06

Hallo,
das Ab habe ich überlesen.
Aber damit wird der Aufbau der Access Tabellen noch falscher.
Hier liegt eine n:m Beziehung vor zu der in Access 3 Tabellen erforderlich sind.

- Abteilungen
- Messgrößen
- Messwerte (Mit Datum und Messwerden)

Die 3. Tabelle einhält dann einen Fremdschlüssel zur Messgröße und zur Abteilung sowie den eignetlichen Messwert und das Datum.
In je einem DAtensatz.

Nach oben