MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 09.05.2018, 06:32   #1
Unklar01
MOF User
MOF User
Standard Acc2010 - VBA Datenimport, wenn eine Spalte fehlt wird nicht importiert

Hallo zusammen,
ich habe einen Excel-Import nach ACC bei denen ua. Monatswerte eingelesen werden?

Januar - Dezember.

Im Dezember ist auch alles io. da stehen mir beim Import alle Monate zur Verfügung.
Aber in den anderen Monaten fehlen mir nicht nur die Werte, sondern auch die Spalten. d.h. im März der Rest des Jahres.
Ich habe dann nur die Spaltenköpfe Jan, Feb, Maerz, und dann Summe. Summe ist die letzte Spalte.
Wenn ich die fehlenden Spalten (auch ohne Werte) von Hand in die Quelltabelle bringe ist das kein Problem, dann wird alles eingelesen.

Wie bekomme ich das hin das mir die Tabelle trotz fehlender Monate eingelesen wird ?

Das ist der SLQ dazu:
Code:

        Case 4
                     sSQL = " INSERT INTO " & sTable & " ( DATUM_MONITOR, Datum, Regionalbereich, Bahnstelle, " & _
                            " Servicebereich, Auftragsart, CSAuftraggeber, CSAuftraggeberName, Arbeitsplatz, " & _
                            " Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, [Summe:] )" & _
                            " SELECT '" & vDate & "' AS DM, Datum, Regionalbereich, Bahnstelle, Servicebereich, Auftragsart, " & _
                            " CSAuftraggeber, CSAuftraggeberName, Arbeitsplatz, Januar, Februar, März, April, Mai, Juni, " & _
                            " Juli, August, September, Oktober, [Summe:] " & _
                              sFrom

Geändert von Unklar01 (09.05.2018 um 06:35 Uhr).
Unklar01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.05.2018, 06:47   #2
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Wie bekomme ich das hin das mir die Tabelle trotz fehlender Monate eingelesen wird ?

Felder haben Namen, vor allem deshalb, dass man sie eindeutig identifizieren kann. Wenn in der Quelltabelle Felder fehlen, so dürfen dann in der Anfügeabfrage die entsprechenden Felder der Zieltabelle nicht gelistet werden, sonst klappt dann die nötige 1:1-Zuordnung nicht.

In der Praxis würde man aber per Abfragetechnik die Datenherkunft bezüglich mit allen Feldern ausstatten und somit die fehlenden vervollständigen.
Wenn man sich die Feldbezeichnungen anschaut, entsteht unmittelbar noch keine vernünftig verwendbare Datenbanktabelle. Da ist eh etwas begleitender Aufwand nötig.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.05.2018, 22:59   #3
Unklar01
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo ebs17,
danke das Du dich gemeldet hast.
Ich kann Deinen letzten Satz nicht recht verstehen.
Meinst Du damit das die Tabelle noch keinen Sinn macht... ich verstehe es wirklich nicht.
In der ersten Spalte wird ein Datumswert eingetragen der wo anders her kommt. Ansonsten ist es doch eine ganz normale Tabelle, oder?
Muss mal dumm fragen... ist es nicht möglich die Zieltabelle mit allen Monaten zu versehen (also was max. möglich ist) und dann nur die Spalten befüllen die in der Quell da sind?
Ich habe die Zieltabelle so eingerichtet, fehlt ein Monat wars das, es wird nichts importiert.
Die Spalten (Feldnamen) sind immer gleich, nur das eben übers Jahr halt welche fehlen.

Kann ja gut möglich sein das ich falsch wiedergebe was ich meine.
Unklar01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.05.2018, 08:02   #4
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
Du hast eine Exceltabelle und machst in Access auch wieder eine Tabelle mit Excelaufbau. Was aber für Access meist ungeeignet ist.
Das sollte (mindestens) in 2 Tabellen aufgeteilt werden, eine Tabelle mit den Daten zum Auftrag und eine Tabelle mit den Monatswerten. In diese Tabelle kommen dann die Monatswerte als Datensätze, also je Monat ein Datensatz. Fehlende Monate spielen dann keine Rolle mehr, die können dann per Kalendertabelle bei Bedarf noch erzeugt werden.
Die gewohnte Darstellung könnte man dann bei Bedarf mit einer Kreutztabellenabfrage erreichen.

Die Tabelle mit den Auftragsdaten benötigt aber einen geeigneten Primärschlüssel.

Eberhard hat da einen Beitrag über das importieren von Daten in Access Tabellen mit 1:n und n:m Beziehungen. Das wird er Dir sicher noch posten.

Du solltest über den Aufbau der Datenbank nachdenken.
Kannst Du mal ein Bild des Beziehungsfensters zeigen.

__________________

Gruß
Klaus
Office2016, Win10
gpswanderer ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.05.2018, 20:28   #5
Unklar01
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ich danke Euch zwei erst einmal das Ihr euch Gedanken gemacht habt.
Die ACC Bank dient nur dazu Daten die mir via Exceldatei zur Verfügung gestellt werden zu importieren und dann als "gesammeltes Werk" einem anderen System zur Verfügung zu stellen. Die Bank liegt so zu sagen nur dazwischen.

Über Sinn oder Unsinn der Vorgehensweise habe ich mir zu Beginn auch immer Gedanken gemacht, das habe ich längst aufgegeben. - "Machen Sie einfach und fragen sie nicht" ist die Antwort. OK sollen die glücklich werden, nur ich muss den ... halt umsetzen.
Ich sammele mir das ganze was mir aus verschiedensten Quellen vor die Füße geschmissen wird und bringe es in die Bank, dokumentiere die Dateinamen die bereits eingelesen wurden.... fertsch. Glaubt mir, ich finde es auch.... toll.

In all dem Datenwust ist eben auch diese Tabelle dabei die diese Monatswerte beinhaltet.
Ich bekomme die Typen die mir die Quelltabelle erstellen aber auch nicht dazu das die mir eine saubere Tabelle mit allen Monaten erstellen.

Wäre schön wenn ich das mir Eurer Hilfe gebacken bekomme.
Unklar01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.05.2018, 20:56   #6
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

dann als "gesammeltes Werk"

Falls dass bei Euch auch so ist, dass sich Monate alle Jahre wiederholen, dürfte das Sammelwerk recht schnell ins Stottern kommen.

Zitat:

Wie bekomme ich das hin das mir die Tabelle trotz fehlender Monate eingelesen wird ?

SQL braucht eine 1:1-Feldzuordnung. Also müsstest Du die Feldliste für die Zieltabelle reduzieren (per VBA), oder die Feldliste in der Exceltabelle ergänzen.

Wenn Du jetzt fragen solltest, was praktikabler wäre: Kommt darauf an.
Wenn aus dem Dateinamen der Excelmappe hervorgeht, welcher Monat der höchste ist, würde ich die erste Variante verwenden wollen (spart das Excelöffnen).
Wenn man jedoch in der Exceltabelle nachsehen muss, kann man auch gleich die fehlenden Spaltentitel ergänzen.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende

Geändert von ebs17 (10.05.2018 um 21:02 Uhr).
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.05.2018, 10:39   #7
Unklar01
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo ebs17,
ja dem ist so, ich habe im Dateinamen das Datum stehen, also auch den Monat.
Aber leider sind meine VBA-Kenntnisse eher die das ich ein paar Dinge geringfügig an meine Bedürfnisse anpassen kann, aber in kleinem Rahmen.
Das was Du vorgeschlagen hast: "Wenn aus dem Dateinamen der Excelmappe hervorgeht, welcher Monat der höchste ist, würde ich die erste Variante verwenden wollen (spart das Excelöffnen)."
Bedeutet das "Wenn in der Quelltabelle Felder fehlen, so dürfen dann in der Anfügeabfrage die entsprechenden Felder der Zieltabelle nicht gelistet werden, "?
Das übersteigt mein Können bei weitem, ist aber irre verlockend.
Unklar01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.05.2018, 11:45   #8
ebs17
MOF Guru
MOF Guru
Standard

Die SQL-Anweisung wird bereits jetzt per VBA zusammengesetzt. Dies könnte man erweitern:
Code:

    HoechsterMonat = "Oktober"
    sSQL = "INSERT INTO " & sTable & " ( DATUM_MONITOR, Datum, Regionalbereich, Bahnstelle, " & _
           " Servicebereich, Auftragsart, CSAuftraggeber, CSAuftraggeberName, Arbeitsplatz, " & _
           Restliste(HoechsterMonat) & " [Summe:] )" & _
           " SELECT '" & vDate & "' AS DM, Datum, Regionalbereich, Bahnstelle, Servicebereich, Auftragsart, " & _
           " CSAuftraggeber, CSAuftraggeberName, Arbeitsplatz, " & _
           Restliste(HoechsterMonat) & " [Summe:] " & _
           sFrom
Hilfsfunktion und Beispielaufruf dazu:
Code:

' in Standardmodul
Public Function Restliste(ByVal HoechsterMonat As String) As String
    Dim sListe As String
    sListe = "Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember"
    Restliste = Left$(sListe, InStr(InStr(1, sListe, HoechsterMonat), sListe, ","))
End Function

Sub aufruf_Restliste()
    Debug.Print Restliste("Oktober")
End Sub

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.05.2018, 07:26   #9
Unklar01
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo ebs17,
ich bin irre beeindruckt Du hast wie es aussieht für alles ne Lösung.

Setze ich diese SQL-Anweisung anstelle der bisherigen
und füge den darunter liegenden Code nur hinzu?

Wo bekommt der Code den Monat her, aus den Dateinamen, oder aus der Spalte der Quelldatei?

Im Moment bringt er mir eine Fehlermeldung, und zwar markiert er mir die "HoechsterMonat" und meint die Variable sei nicht definiert.

Geändert von Unklar01 (14.05.2018 um 07:51 Uhr).
Unklar01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.05.2018, 08:21   #10
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

ich habe im Dateinamen das Datum stehen, also auch den Monat
...
Wo bekommt der Code den Monat her

Einige kleine Schlussfolgerungen könntest Du selber ziehen, zumal ich Dir nicht erklären kann, was Ihr genau macht.

Zitat:

... und meint die Variable sei nicht definiert

So ist es ja auch. Einen Ansatz kann man nicht zwingend mit geschlossenen Augen kopieren und verwenden. Die Variable muss natürlich deklariert und mit einem Inhalt versehen werden. Da sollte man aber bei dem vorgenannten Punkt Klarheit geschaffen haben.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2018, 07:38   #11
Unklar01
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo, ich kann das Thema schließen weil ich die Quelle nun so bekomme das dieses Thema glücklicher weise nicht mehr steht.
Die Monate werden mir nun auch ohne Daten als Spalte mit gebracht.
Mir fehlt leider die Zeit das Problem tatsächlich zu lösen / umzusetzen.
Vielen Dank das Ihr mir helfen wolltet.
Unklar01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:03 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.