Office: (Office 2000) regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen

Helfe beim Thema regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Der Import ist abgeschlossen und darum ging es ursprünglich in diesem Thread. Die Formulargestaltung überlasse ich dir, ich habe schon Hinweise... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von User, 26. September 2004.

  1. regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen


    Der Import ist abgeschlossen und darum ging es ursprünglich in diesem Thread.

    Die Formulargestaltung überlasse ich dir, ich habe schon Hinweise gegeben, wie man die Fremdschlüssel in AID auflöst (Stichwort "Kombinationsfelder"). Und im Hauptformular sollte eben nur das dargestellt werden, was auch in der Haupttabelle steht (also aus "Kunden" das Feld "KDNAME")

    Zur Datenbank allgemein ist zu sagen, dass die Normalisierung in diesem Stil vielleicht etwas übertrieben ist - den Preis (die Versandkosten nicht unbedingt) würde ich z.B. in AID ablegen, auch wenn sich ein Preis wiederholen könnte.

    Beim Kundennamen ist es eine Überlegung wert, ob man nicht Vor- und Nachname trennt (das gleiche gilt für Ort und Postleitzahl). Aber das überlasse ich dir oder anderen. Ich habe mich in meinen Augen genug darum gekümmert und habe keine Lust, die komplette Anwendung zu schreiben. Du hast jetzt ein Fundament, auf dem du aufbauen kannst und es bringt nichts, wenn man dir etwas zusammenschustert, was du nachher nicht anpassen kannst.


    Achso: Die Tabellen könnten evtl. etwas schöner benannt werden - bei "AID" denke ich nicht an eine Tabelle ...
     
    Arne Dieckmann, 30. September 2004
    #76
  2. Hallo Arne,

    du hast recht! Zu guter letzt bleibt mir nur, dir nochmals vielen Dank zu sagen. Ohne dich hätte ich es nicht geschafft. Zudem ein dickes lob für die Importfunktion. Das ist das Kernstück der ganzen Anwendung und ich finde, du solltest darauf stolz sein.

    Danke und auf bald.
    Sami
     
  3. Hallo Arne, hallo Jan.

    Ich bräuchte bitte doch nochmal einen kleinen Hinweis. Die Importfunktion basiert darauf, daß jedem "Kundenwert" (Name, Adresse, Ort usw.) nur eine einzige Tabelle mit ID gegenübersteht.

    Was aber passiert, wenn die Tabelle Kunden statt des einen Wertes KDNAME nun auch den Wert NICK enthalten soll und dafür die Tabelle NICK entfällt. Dann fällt auch diese eindeutige Zuordnung über die ID weg.

    Wie kann ich die Prozedur entsprechend anpassen, falls ich die von euch angesprochene "Übernormalisierung" meiner Datenbank auf weniger Tabellen mir mehreren Feldnamen entschärfen wollte.

    Ich denke, in diesem Fall reicht mir ein Hinweis um den Parser selbst anzupassen.

    @Jan: Möchte gerne noch nachholen, mir für deine vorangegangene Hilfe nochmals ausdrücklich zu bedanken. Das ist im Eifer des Gefechtes ein wenig untergegangen. Schließlich warst du es doch, der meinen "Hilferuf" als erster aufgegriffen und in die richtigen Bahnen geleitet hat. Danke!
     
    skyball, 1. Oktober 2004
    #78
  4. regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen

    Also angenommen du hast eine Kundentabelle in der es folgende Felder gibt:

    KundenID, Vorname, Nachname, Nick, Straße, Postleitzahl, Ort, eMail.

    Soll dann nach allen Teilen gesucht werden oder reicht ein einziger Vergleich?
     
    J_Eilers, 1. Oktober 2004
    #79
  5. Hallo Jan,

    Wenn ich deine Frage richtig verstehe besteht ein möglicher Lösungsweg einmal darin, daß er nur einen bestimmten Wert in der Tabelle mit den Quelldaten vergleicht und bei Übereinstimmung von einem bereits existierenden Datensatz ausgeht.

    Im anderen Falle vergleicht er die Übereinstimmung aller Werte aus Quelle und Tabellenfeldern und legt bereits dann einen neuen Datensatz in der Tabelle an, wenn auch nur ein Wert nicht übereinstimmt.

    Ist das korrekt?

    Sami
     
    skyball, 1. Oktober 2004
    #80
  6. Also Grundlagen:

    Du kannst entweder schauen, ob:
    a) Ein Tabellenwert mit einem Arraywert (aus der EMail) übereinstimmt
    b) Ein Wertepaar übereinstimmt und ein weiteres und ein weiteres (AND verknüpft)
    c) Ein Wertepaar übereinstimmt und danach schauen, ob in diesen Datensätzen ein anderer Wert übereinstimmt.

    Möglich ist eine Menge, aber der Aufwand ist halt unterschiedlich.
     
    J_Eilers, 1. Oktober 2004
    #81
  7. Es sollen alle Werte die in die jeweilige Tabelle sollen mit allen ausgelesenen Werten verglichen werden und bei Diskrepanz auch nur eines Wertes ein neuer Datensatz entstehen.

    Also Name and Adresse and Ort and ...
     
    skyball, 1. Oktober 2004
    #82
  8. regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen

    Hallo Jan,

    wenn wir bei meinem Eingangsbeispiel bleiben (NICK kommt zu Tabelle Kunden hinzu, Tabelle hat dann 3 Werte, KDNAME, NICK und ID, Tabelle Nick entfällt), wie sollte der veränderte String dann beispielhaft im Parser aussehen, wenn er beide Werte mit den Daten aus der csv-Datei vergleicht?

    Die ID taugt ja als Kriterium nicht mehr.

    Irgendsowas wie: "merkArray(0 and 1) = eintrag(varArray(0 and 1), "Name" and "Nick", "ID", "Kundendaten")"

    ???
     
    skyball, 1. Oktober 2004
    #83
  9. Ne, da müsste man sich ein wenig mehr für überlegen. Man könnte zwar alle Kriterien übergeben ("Nick = '" & Nick & "' AND Name = '" & Name & "'" etc). Aber bei nicht vorhanden sein müsste man dann die Werte ja auch genau darein schreiben. Und das wird doch noch ein Stück arbeit. Hättest du das gleich von Anfang an gemacht, dann würden wir auf Seite 3 nun nicht von vorne anfangen müssen. *rolleyes.gif* Also wie sehen die Tabellen jetzt aus?
     
    J_Eilers, 1. Oktober 2004
    #84
  10. Guten Morgen Jan,

    vielen Dank, daß du dich noch gemeldet hast. Aber ich bin jetzt bis einschließlich Montag nicht im Haus, sodaß ich nichts machen kann.

    Ich habe die ganze Sache jetzt auf 2 Tabellen reduziert. Kundendaten auf der einen und Artikeldaten auf der anderen Seite.

    Kundentabelle ist: Firma, Name, Anschrift, Ort, Land, Nick, Email, Telefon, Memo, Lieferadresse, ID

    Artikeltabelle ist: AID, Menge, Artikel, Preis, Versand, MwSt, Gesamt, Artikellink, Bewertungslink, Shop, MeinEbay, verkauft, verschickt, Kundendaten_ID, ID

    Die Felder verkauft und verschickt sind Datumswerte, den Rest kennst du ja. Danke, daß du dich der Sache nochmal annimmst. Aber muß denn der Parser von Arne nicht "nur" angepasst werden?
     
    skyball, 1. Oktober 2004
    #85
  11. Wenn es nur ein anpassen wäre, dann wäre es nicht so schlimm. Nun wird es aber vielleicht ein anderer Ablauf...bist du sicher, dass du deine Tabellen nun so lassen willst? Vorher hattest du eine 'Übernormalisierung' und nun könnte man es vielleicht noch anders aufbauen. Das Design ist und bleibt nunmal das Wichtigste.
     
    J_Eilers, 1. Oktober 2004
    #86
  12. Hallo Jan,

    das Problem ist, daß ich nicht genug davon verstehe, um die Tragweite dieser oder jener Entscheidung im Hinblick auf die DB tatsächlich abschätzen zu können.

    Das Design ist sicher das Wichtigste an der gesamten Datenbank.

    Wenn ich mir vorstelle, daß ich mit diesem Programm aber auch arbeiten möchte, vielleicht mal die ein oder andere Veränderung vorgenommen werden muß und das Programm im laufe der Zeit von mir weiter auf- und ausgebaut werden soll (es gibt ja ohnehin noch genug zu tun bis die Funktionen, die es haben soll mal alle stehen), ist dies die wahrscheinlich beste Lösung.

    Mit den verbleibenden 1 oder 2 Prozent Handarbeit, weil die Kundendaten nicht stimmen oder geändert werden müssen, kann ich glaube ich leben.

    Ja, ich habe mich entschieden, daß es so bleibt.

    Abschließend habe ich aber noch eine Große Bitte:
    Ich möchte trotzdem gerne wissen, wie dieser fantastische Parser von Arne angepasst werden kann, so daß er Name und Nick in eine Tabelle schreibt und den Rest wie gehabt.

    Und erkläre mir bitte auch, wie das dann nach Fertigstellung mit deinem Parser funktioniert, wenn ich zu den zunächt zwei Tabellen (Artikeldaten und Kundendaten) eine dritte hinzunehmen möchte, entweder aus neuen Werten oder ausgegliederten Werten eben dieser beiden großen Tabellen (z.B. auch Name und Nick).

    Ich lese im Moment sehr viel über access, kenne auch die Taste F1 sehr gut in access und auch VBA und habe mir den Parser von Arne schon sehr genau angesehen. von LBound bis UBound, von Case bis Select usw. Leider wird die Hilfe nur allzu oft ihrem Namen nicht gerecht.

    Ich möchte eben nicht nur wissen, daß etwas funktioniert sondern auch was es tut und wie. Und, wie ich es anpassen kann. Ich möchte euch ja nicht permanent mit meinen Sachen belagern.

    Ach ja, eh ichs vergesse. Vielleicht sollten wir die von Arne angesprochene Teilung der Spalten Postleitzahl und Ort sowie Vorname und Nachname vornehmen. Ist, glaube ich, sehr vernünftig. Die Werte sind in der CSV-Datei leider jeweils in einer Spalte (also Plz "Leerzeichen" Ort, sowie Vorname "Leerzeichen" Nachname)

    Nunja, ist fast ein ganzer Brief geworden.

    So long
     
    skyball, 2. Oktober 2004
    #87
  13. regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen

    Ok, dann mal ne längere Antwort ohne Problemlösung (ist mir grade zu spät).

    Also Logik des Parsers. Lies die Textdatei ein und splitte sie in ein eindimensionales Array. Das kann man sich so vorstellen, als wenn die Datei geöffnet wird und jedes einzelne Feld in Access untereinander geschrieben wird. Nun arbeitet Arne mit einem Select Case, dass ist ein erweitertes If. Dort wird je nach Fall (Case) eine Aktion ausgeführt. Und zwar wird die Funktion aufgerufen und es werden Kriterien übergeben. Diese Funktion öffnet nun eine Datensatzgruppe (Recordset). Wenn es keinen aktuellen Datensatz gibt, erhält man die Fehlermeldung 3021. Diesen fängt Arne mit einem On Error Goto ab. Wenn der Fehler auftritt, dann ist dieser Datensatz noch nicht in der Tabelle, da er sonst im Recordset wäre und man als Rückgabe der Funktion die ID erhalten würde. Ansonsten ist die Rückgabe Null.

    Wird nun eine ID zurückgegeben, dann wird diese in die Tabelle geschrieben. Wenn eine Null das Ergebnis ist, dann wird der Wert in die Untertabelle geschrieben und die neu entstandene ID wird zurückgegeben. Danach kommt dann diese ID in die Haupttabelle. Das ist eigentlich schon alles. Und die VBA Hilfe finde ich eigentlich sehr gut. *wink.gif*

    Ich würde vorschlagen, du überlegst dir erstmal, wie deine Tabellen aussehen sollen, danach könnte man sich wieder ans Code setzen. Denn vorher macht das nicht wirklich Sinn. Das Trennen macht aus meiner Sicht Sinn. Wenn das Design dann soweit steht, würde ich dich bitten, die DB und eine Datei mit ein paar Beispieldaten hochzuladen. Dann könnte man sich wieder dran setzen. Vorher habe ich ehrlich keine Lust, da man dann irgendwann wieder etwas ändern müsste.
     
    J_Eilers, 3. Oktober 2004
    #88
  14. Welches Trennen meinst du. Das, was ich bisher hatte oder die neue Version mit nur zwei Tabellen (einem Block mit Kundendaten und einem mit Artikeldaten)?

    Kannst du mir bitte dennoch erst einmal schreiben, wie der Parser in der aktuellen Version geändert werden müsste wenn man die beiden Felder KDNAME und NICK in eine Tabelle importieren wollte?

    Ich arbeite in der Zwischenzeit mal die "neue" Version mit CSV-Tabelle und Datenbank aus.

    Vielen Dank!
     
    skyball, 5. Oktober 2004
    #89
  15. Das Trennen von Vor- und Nachname, Ort und PLZ.
     
    J_Eilers, 5. Oktober 2004
    #90
Thema:

regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen

Die Seite wird geladen...
  1. regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen - Similar Threads - regelmäßiger import csv

  2. Wahrscheinlich nicht neu - Makros exportieren

    in Microsoft Word Hilfe
    Wahrscheinlich nicht neu - Makros exportieren: Hallo zusammen, dies ist mein erster Thread... Also, ich habe zwei Rechner in meinem Wlan Netzwerk verbunden, damit ich an derselben Software arbeiten kann (ein Rechner Hauptrechner, einer...
  3. Mittelwerte pro Sekunde bilden (o. regelmäßigem Intervall)

    in Microsoft Excel Hilfe
    Mittelwerte pro Sekunde bilden (o. regelmäßigem Intervall): Liebe Community, ich schlage mich mit folgendem Problem rum (s. Bsp.Datei): ich habe Messdaten (SCL,PULS), die in unregelmäßigen Abständen ausgeworfen wurden (es schwankt zwischen 47-51...
  4. Outlook-Anhang regelmäßig in Ordner speichern

    in Microsoft Excel Hilfe
    Outlook-Anhang regelmäßig in Ordner speichern: Hallo liebe Leute, ich möchte den Excel-Anhang einer täglich empfangenen Email in Outlook 2013 mit einem Skript automatisch in einem Ordner speichern. Der Betreff der Email lautet immer "Scans...
  5. Makro in regelmässigem Intervall ausführen

    in Microsoft Excel Hilfe
    Makro in regelmässigem Intervall ausführen: Hallo zusammen Ich habe einen Code der ein Makro nach einem Zeitintervall immer wieder ausführen soll. Hier ein Beispiel: Code: Public Sub StartTimeCounter() Application.OnTime Now +...
  6. Excel 2008 MAC stürzt regelmäßig ab

    in Microsoft Excel Hilfe
    Excel 2008 MAC stürzt regelmäßig ab: Hallo liebe Office-Profis, ich nutze Office 2008 für den Mac und bin im großen und ganzen sehr zufrieden. Was mich jedoch sehr stört ist, dass Excel häufig abstürzt, wenn man an Diagrammen...
  7. Word 2002 SP3 hängt regelmässig alle paar sekunden

    in Microsoft Word Hilfe
    Word 2002 SP3 hängt regelmässig alle paar sekunden: Hallo ich haben ein HP Notebook mit Dual Core 2 GB Ram und 2Ghz Taktfrequenz mit Windows XP Pro. Wenn ich word öffne hängt es in regelmässigen abständen und oben links am rand wird kurzzeitig...
  8. Excel stürzt regelmäßig ab

    in Microsoft Excel Hilfe
    Excel stürzt regelmäßig ab: Hi, folgendes Problem: Beim kopieren mehrerer Zeilen stürtzt bei mir das Excel regelmäßig ab. Die Tabelle ist mit einer Autoformat Funktion sortiert. Ich benutze das Excel 2002. Kennt...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden