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; \@Arne und Jan Hi, die AID ist die Auktionsnummer (Auction-ID), die von eBay vergeben wird. Damit ist sie einzigartig und braucht eigentlich keine ID.... 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


    \@Arne und Jan

    Hi, die AID ist die Auktionsnummer (Auction-ID), die von eBay vergeben wird. Damit ist sie einzigartig und braucht eigentlich keine ID. Sie kann natürlich eine bekommen, wenn ihr es für nötig und sinnvoll erachtet oder es die Sache vereinfacht.

    Welche Werte brauchen denn keine eigene Tabelle?! Habe auch lange darüber nachgedacht, komme aber immer wieder zu der Struktur, die jetzt vorliegt. Es gibt an sich nur 4 einzigartige Werte, im ganzen System. Die AID (siehe oben), die Zeile "ZUM_ARTIKEL" - hierbei handelt es sich um den Hyperlink zur Artikelseite, die Zeile "FEEDBACK" ist der Link zur Bewertungsseite zu speziell diesem Artikel und der "NICK", also der eBay-Mitgliedsname, der auch nur einmal vorkommen kann.

    Namen, Strassen, Zahlen, Mengen, Preise, Versandkosten, Orte und Postleitzahlen sind alles Werte, die immer wieder vorkommen können.

    So long,
    Sami
     
  2. Das stimmt schon, aber ein Kunde (Nick) kann wohl nur an einem Ort wohnen und eine EMail haben. Somit kann man das alles in eine Tabelle schreiben und braucht nur nach einem Wert zu suchen.
     
  3. \@Jan: Ich hoffe, daß dir ncoh genug von der Nacht übrig bleibt! *wink.gif*
     
  4. regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen

    \@Jan

    Das mit dem Nick stimmt leider nur dann, wenn der Kunde nur diesen einen Mitgliedsnamen benutzt und nicht mehrere und wenn er ihn auch nie ändert oder wechselt. Löscht er ihn, wird der Name frei. Nimmt ihn dann jemand anders und kauft einen Artikel, hast du pplötzlich eine Artikelhistorie bei einem falschen Kunden.

    Die Tabellenstruktur ist zwar ziemlich kleinklein, berücksichtigt aber auch wie eBay arbeitet und strukturiert ist.

    Der Kunde muß also auch denn identifizierbar sein und bleiben, wenn er mal umzieht oder seinen Nick ändert oder z.B. durch Hochzeit seinen Namen ändert.

    Gruß,
    Sami
     
  5. So, anbei die Datenbank im A97-Format. Voraussetzung ist, dass die Text-Datei keine Kopfzeile enthält. Der Code kann sicherlich noch optimiert werden, aber das überlasse ich dir (kommentiert ist er auch nicht, etwas Stöbern in der VBA-Hilfe sollte aber Unklarheiten beseitigen - ansonsten fragen). Einige Sachen müssen sicherlich noch zusätzlich in "AID" eingetragen werden (z.B. "Zum Artikel") aber deine letzten Erläuterungen habe ich beim Basteln nicht mitbekommen.

    Ist übrigens nicht auf Herz&Nieren getestet!


    BTW: Den ganzen Formularentwurf habe ich so gelassen, den Importschalter findest du in "Formular1".
     
    Arne Dieckmann, 29. September 2004
    #50
  6. \@Arne So etwas ähnliches habe ich auch. Deswegen mache ich mal nicht weiter. *wink.gif*
     
  7. Nachtrag: Für den Artikel- und Feedbacklink musst du noch folgende Zeilen einfügen (nur ein Ausschnitt aus dem gesamten Code):
    Code:
     
    Arne Dieckmann, 29. September 2004
    #52
  8. regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen

    Hallo Arne, Hallo Jan.

    Bevor ich euch jetzt mit den Kinderkrankheiten der Funktion belästige, erst einmal ein dickes DANKE für eure Mühe und Geduld.

    Und jetzt zu den Krankheiten:

    Die csv hat wie gewünscht keine Kopfzeile, Der Code ist als Ereignisprozedur "beim klicken" hinterlegt.

    "Laufzeitfehler 13: Typen unverträglich" an unterstrichener Stelle:
    ...Select Case Typ
    Case "Text"
    uebergabe = TLookup(LookupField, Target, CritField & "='" & wValue & "'")
    Case "Zahl"
    uebergabe = TLookup(LookupField, Target, CritField & "=" & wValue)
    Case "Double"
    uebergabe = TLookup(LookupField, Target, CritField & "=" & Str(wValue))
    End Select...

    "Laufzeitfehler 3315: Feld `AID.AID´ darf keine Zeichenfolge der Länge Null sein" an unterstrichener Stelle:

    ...rs!Preis_ID = merkArray(10)
    rs!Versand_ID = merkArray(11)

    rs.Update
    rs.Close
    Set rs = Nothing

    'Datei schließen.
    Close #c...

    Habe oben "Case "Double" in "Variant" geändert. Damit unerbleibt der Fehler aber ist das auch korrekt?

    Mit der unteren Meldung kann ich leider garnichts anfangen, weil ich nicht weiß, was die Funktion an dieser Stelle macht.

    @arne: Sind die zusätzlichen Eintragungen unter in AID mit deinem Nachtrag hinfällig oder müssen die Zeilen noch bei
    "...Case 9
    merkArray(i) = eintrag(varArray(i), "Artikel", "ID", "Artikel")
    Case 10
    merkArray(i) = eintrag(varArray(i), "Preis", "ID", "Preis", "Double")
    Debug.Print merkArray(i)
    Case 11
    merkArray(i) = eintrag(varArray(i), "Versand", "ID", "Versand", "Double")
    End Select..."

    eingetragen werden.

    Und nochwas. Wenn ich die Tabellen öffne, sind die Daten eingelesen. In der Tabelle Menge stehen zwar die Shop-Angaben aber das lässt sich klären.
    Aber wie kann ich die Daten für die Dauer der Testphase immer wieder einlesen ohne danach die Tabelleninhalte und vor allem die ID`s immer wieder manuell löschen zu müssen.

    Gruß,
    Sami
     
  9. Hm. Ich habe die Datei vielleicht beim Testen zu sehr ausgedünnt (muss ich noch einmal mit dem Original testen). Zumindest bei mir gab es diese Fehlermeldung nicht. Für mich hört es sich jedenfalls so an, als ob noch eine Leerzeile eingelesen wird.

    Mein Nachtrag bezieht sich auf den letzten Teil, in dem die Haupttabelle befüllt wird. Innerhalb der Select Case-Anweisung musst du nichts ändern (evtl. den Shop-Eintrag - das muss ich auch noch testen). Such einfach nach "Loop" - dann müsstest du die Stelle finden.

    Während der Testphase sollte man die Tabellen mit einer Extraprozedur löschen können. Ungefähr so (Code hinter einen Lösch-Button legen):

    Code:
    Das solltest du nicht ändern, wenn du nicht weiss, was das bewirkt. Die Unterscheidung von Double, Text und Zahl (letztes wird momentan nicht benutzt) wird beim Aufbau des Kriteriums benötigt. Ansonsten gibt es Probleme beim Durchsuchen der Währungsfelder (wg. des Kommas).


    [Edit] Die angesprochenen Fehler konnte ich auf einem anderen Rechner nicht nachvollziehen - der Shop landet im Shop, keine Fehlermeldung ... - irgendetwas läuft bei dir anders. Alles bezogen auf die Kundendatei (ohne Kopfzeile), die hier vorliegt und auf mein Beispiel bezogen [/Edit]

    [Noch ein Edit] Teste doch einmal mit dieser Kunden.Txt [/Noch ein Edit]
     
    Arne Dieckmann, 29. September 2004
    #54
  10. \@Arne

    Guten Abend, oder doch Guten Morgen?

    Wie auch immer. Bei mir geht irgendwie garnichts. Auch nicht mit der ´txt-Datei, die ja von mir selbst stammt. Der Import klappt zwar, aber die außer dem Namen wir kein Feld angezeigt. Überall nur "#NAME?" oder "Typen unverträglich, Laufzeitfehler 13" bei Anweisung "rs!AID = varArray(7)".

    Keine Ahnung was da los ist.

    Sehr merkwürdig ist, daß ich bei allen Feldern der Form bei "Eigenschaften/Steuerelementeinhalt" nur noch KDNAME auswählen kann. Egal ob bei Name, Land oder Memo.

    Ich habe die csv-Datei mit 42 Zeilen gefüllt (zum testen). Die Datensätze werden auch alle eingetragen, nur die Tabelle AID nicht, die ja eigentlich 42 Datensätze je Spalte enthalten müsste, hat nur einen Datensatz.

    Vielleicht sollte ich Form und Ufo neu aufsetzen, oder fällt dir etwas besseres ein?

    Gruß,
    Sami
     
  11. Zu "Nur 1 Datensatz in 'AID'":
    Der Fehler steckt im Detail *eek.gif* (war mein Fehler) - die Haupttabelle wird ja erst nach dem Durchlauf der gesamten Textdatei nur mit praktisch dem letzten "Datensatz" aus der Textdatei befüllt. Das wäre mir wohl aufgefallen, wenn es nicht nur einen Beispieldatensatz gegeben hätte.
    Versuche es einmal mit folgendem veränderten Code (Prozedur und Funktion aus dem Importformular, das bei mir Formular1 hiess):
    Code:
    und
    Code:
    Zu den anderen Problemen: Das Hauptformular, welches ursprünglich von dir stammt und von mir nicht angefasst wurde (dazu habe ich nicht allzu viel Lust), basiert nur auf der Tabellle "Kunden" (Eigenschaft "Datenherkunft"). Damit steht dann eben nicht mehr als KDNAME und ID in der Feldliste zur Verfügung ...
    Das Unterformular darf nur auf der Tabelle "AID" basieren - die entsprechende Verknüpfung im Hauptformularentwurf liegt schon vor. Die Fremdschlüssel löst du dann über Kombinationsfelder auf.

    Rest dann morgen, vielleicht kann Jan meinen Ansatz mit Hilfe der bisher vorliegenden Testdatei "Kunden.Txt" noch einmal checken.
     
    Arne Dieckmann, 29. September 2004
    #56
  12. \@Arne: OK. Und Danke soweit.

    Das mit dem Hauptformular leuchtet mir ein. Als die Datenbank noch auf einer Tabelle basierte (beim anlegen), waren ja auch alle Daten in der Kundentabelle vorhanden und konnten somit angezeigt werden, klar.

    Durch die Normalisierung ist die Datenherkunft für das Hauptformular auf diesen einen Wert geschrumpft.

    Ich werde mal noch ein bisschen herumprobieren, ob ich die anderen Felder der Form auch "gefüllt" bekomme.

    So long,
    Sami
     
  13. regelmäßiger import aus csv-Datei in mehrere verknüpfte Tabellen

    \@Arne: Bekomme an unterstrichener Stelle im PFC einen Fehler:

    "...If IsNull(uebergabe) Then
    Dim rs As DAO.Recordset
    'Änderung #4 (statt CurrentDb):
    Set rs = DBEngine(0)(0).OpenRecordset(Target, dbOpenDynaset)
    rs.AddNew
    rs(CritField) = wValue
    rs.Update
    'Änderung #5
    'das war anscheinend überflüssig:
    'varbookmark = rs.LastModified
    'rs.Bookmark = varbookmark
    'uebergabe = rs(LookupField)
    rs.Close
    Set rs = Nothing
    End If..."

    Fehlermeldung: "Laufzeitfehler 3201: Der Datensatz kann nicht hinzugefügt oder geändert werden, da ein Datensatz in der Tabelle "Adresse" mit diesem Datensatz in Beziehung stehen muß"

    Die Meldung kommt nach dem 36. von insgesamt 42 einzulesenden Datensätzen.

    Vielleicht Hast du oder Jan eine Idee?!

    So long,
    Sami
     
  14. Sorry, aber was heisst PFC? Bei welchem Wert kommt diese Fehlermeldung - sprich wie lautet der Wert wValue in diesem Fall und in welcher Tabelle soll etwas eingetragen werden (normalerweise hat Adresse nur eine Beziehung zu AID)?

    Irgendwie werde ich das Gefühl nicht los, dass entweder die Struktur der Textdatei zwischenzeitlich geändert wurde oder du an meinem Beispiel irgendetwas geändert hast. Kannst du zumindest die umfangreichere Textdatei noch einmal hochladen, und falls du schon viel an der MDB geändert hast, auch die Datenbank?
     
    Arne Dieckmann, 29. September 2004
    #59
  15. \@Arne
    PFC stand für Public Funktion Code. Die umfangreichere Tabelle ist mit der Mustertabelle identisch. An der Tabellenstruktur habe ich keine Änderungen vorgenommen. Habe lediglich immer den aktuellsten Code in die Prozeduren eingefügt. Die umfangreichere Tabelle kann ich aus Datenschutzgründen nicht hochladen, weil sie echte Werte enthält. Der Fehler kommt beim Wert in Spalte eins der CSV-Datei, also beim Kundennamen.

    Ich könnte dir bestenfalls die Tabelle per Mail schicken., die Datenbank kann ich natürlich hochladen.

    Sollen wir es so machen?

    Sami
     
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