1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Bit-Service

Beiträge von Bit-Service

  • Berechnung von Verkaufsgebühren

    • Bit-Service
    • 8. Januar 2015 um 14:00

    .

  • Berechnung von Verkaufsgebühren

    • Bit-Service
    • 6. Januar 2015 um 21:57

    So, erstmal vielen Dank für die zahlreichen Beiträge.

    Derzeit arbeitet "Ahnungslos" an meiner Anfrage, habe von Ihm auch schon ein Script zugeschickt bekommen, aber es noch nicht testen können. Werde es schnellstmöglich nachholen und mich dann noch einmal melden.

    @gmmg die Daten kommen zum einen aus den Lagerbestandsberichten die Amazon bereitstellt und zum anderen handelt es sich um unsere Preisliste.

  • Berechnung von Verkaufsgebühren

    • Bit-Service
    • 3. Januar 2015 um 17:45

    Hallo,

    ich hätte gerne ein Script, dass sich diverse Infos aus verschiedenes Dateien holt und diese Anhand einer Artikelnummer in einer Datei zusammen fügt. Es geht um eine Gebührenberechnung für Amazon.
    Vergütung: 20 Euro VB

    - Vorschau zu Verkaufsgebühren - Beta -

    Zunächst sollte aus einem Order (Bespw. C:\_import\test\download\) die aktuellste Datei eingelesen werden. Diese Datei ist immer eine tabstopgetrennte Textdatei wie 51069591344.txt, nur der Dateiname ändert sich jedes mal. Es befinden sich bis zu 50 tausend Datensätze in dieser Datei.
    Die relevanten Informationen aus dieser Datei stehen zum einen in

    Spalte A - Artikelnummer
    Spalte D - Verkaufspreis Euro (Punkt als Dezimaltrennzeichen)
    Spalte E - Gebühren in Euro (Punkt als Dezimaltrennzeichen)

    Benötigt wird die Artikelnummer zu Zuordnung und die prozentualen Gebühren (=100/Spalte D*Spalte E) gerundet auf eine ganze Zahl. Also statt 7,0254 soll es 7 sein.

    - FBA-Lagerbestand -

    Nun sollte aus einem Order (Bespw. C:\_import\test\FBA-Bestand\) die aktuellste Datei eingelesen werden. Diese Datei ist ebenfalls immer eine tabstopgetrennte Textdatei wie 51069591344.txt, nur auch hier ändert sich der Dateiname jedes mal. In dieser Datei befinden sich weniger, vermutlich nie mehr als 1000 Datensätze.
    Die relevante Informationen aus dieser Datei steht nur in Spalte A - die Artikelnummer.

    Die Artikelnummern dieser beiden Dateien sollten nun verglichen werden, und bei allen Artikelnummern, die in beiden Dateien vorkommen, sollte der ganze Datensatz aus der ersten Datei gelöscht werden.

    - Preisliste -

    Nun sollte aus dem Ordner C:\_import\test\Preisliste\ die Datei preisliste-amazon.csv eingelesen werden. Diese Datei enthält folgende Informationen:

    Spalte A - Artikelnummer
    Spalte B - Verkaufspreis
    Spalte C - Gewicht
    Spalte D - Diese Spalte ist für den Amazonverkaufspreis, der nun errechnet werden soll anhand der Formel:

    = (Verkaufspreis+Versandkosten)/((1/(1+MwSt))-Gebühren in %)-Versandkosten
    = Spalte B+4,99/((1/(1+0,19))-Gebühren in % aus der ersten Datei)-4,99

    - Datei erstellen -

    Die Ausgabe der Daten sollte dann in folgendem Format erfolgen:

    Spalte A - Artikelnummer
    Spalte B - leer
    Spalte C - errechneter Amazonpreis (Dezimaltrennzeichen muss hier wieder . sein)


    Sehr nützlich wären Kommentare in dem Script, da es mit Sicherheit noch einige Male angepasst werden muss, und ein Protokoll, in welchem die einzelnen Vorgänge dokumentiert werden.


    Ich hoffe, ich konnte mein Anliegen verständlich vermitteln :) und hoffe, dass sich jemand findet, der mir helfen kann ;)

  • Inhalt von 2 Dateien zusammen führen, nach Duplikaten suchen und löschen

    • Bit-Service
    • 5. Juni 2014 um 17:29

    ah ok, aber das bringt mir dann nichts, da die Datensätze vorher gelöscht werden müssten.

    Wäre es möglich diese Funktion

    Code
    $sNew = StringRegExpReplace($sStr, "(?m)^[^;]+;0+;.*\R|^(.*\R)", "$1")

    oder eine ähnliche noch vor dem eigentlichen Script durchzuführen (oder zur Not als eigenes Programm, welches ich dann mittels Batch starten kann).

    Die Funktion müsste auf jeden Fall bei der Quelldatei angewandt werden, damit entsprechende Datensätze vor dem Abgleich gelöscht werden.

    Vielen Dank.

  • Inhalt von 2 Dateien zusammen führen, nach Duplikaten suchen und löschen

    • Bit-Service
    • 4. Juni 2014 um 23:50
    Zitat von AspirinJunkie

    Welche AutoIt-Version verwendest du?

    und an welche stelle muss ich das einfüge, damit er das mit Datei2.csv macht?

    Spoiler anzeigen
    [autoit]

    Global Const $s_CSV1 = "Datei1.csv"
    Global Const $s_CSV2 = "Datei2.csv"
    Global Const $s_CSVOut = "Out.csv"

    [/autoit] [autoit][/autoit] [autoit]

    Global $dic_CSV1 = ObjCreate("Scripting.Dictionary") ; Ein Dictionary als Zwischenspeicher da es sich schneller durchsuchen lässt als ein Array
    Global $s_Key, $s_Out = "" ; $s_Out = zu schreibendes Endergebnis

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $s_Line In FileReadToArray($s_CSV1) ; erste Datei zeilenweise durchgehen
    $s_Key = StringLeft($s_Line, StringInStr($s_Line, ";")) ; erste Spalte auslesen
    $dic_CSV1($s_Key) = $s_Line ; erste Spalte als Key und ganze Zeile als Value in das Dictionary eintragen
    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $s_Line In FileReadToArray($s_CSV2) ; zweite Datei zeilenweise durchgehen
    $s_Key = StringLeft($s_Line, StringInStr($s_Line, ";")) ; erste Spalte auslesen
    If $s_Key == "" Then ContinueLoop ; Bei Fehler diesen Schleifendurchlauf überspringen
    If $dic_CSV1.Exists($s_Key) Then ; Check ob Wert schon in der ersten CSV vorhanden war
    $dic_CSV1.Remove($s_Key) ; Falls ja diesen Wert aus Dictionary löschen
    ContinueLoop ; Die Schleife hier abbrechen und beim nächsten Fortsetzen (=kein Schreiben auf $s_Out)
    EndIf
    $s_Out &= $s_Line & @CRLF ; Zeile zu $s_Out hinzufügen
    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $s_Key in $dic_CSV1.Keys() ; Alle Keys des Dictionarys durchgehen
    $s_Out &= $dic_CSV1($s_Key) & @CRLF ; Die mit den Keys verknüpften Daten (=die Zeilen) $s_Out ebenfalls noch hinzufügen
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; $s_Out in Datei schreiben:
    FileDelete($s_CSVOut)
    FileWrite($s_CSVOut, StringTrimRight($s_Out, 2)) ; StringTrimRight um letztes unnötiges @CRLF zu entfernen

    [/autoit]
    Alles anzeigen
  • Inhalt von 2 Dateien zusammen führen, nach Duplikaten suchen und löschen

    • Bit-Service
    • 3. Juni 2014 um 23:32

    Eine Frage habe ich da doch noch,

    wie mache ich das, wenn ich eine ganze Zeile gelöscht haben will, sobald in der zweiten Spalte "0" steht?

    Bespiel:

    1;27;
    2;13;
    3;0;
    4;2;

    soll werden zu:

    1;27;
    2;13;
    4;2;

  • Inhalt von 2 Dateien zusammen führen, nach Duplikaten suchen und löschen

    • Bit-Service
    • 3. Juni 2014 um 15:53

    mhja, überlesen, sorry,

    funktioniert perfekt!

    Vielen Dank!

  • Inhalt von 2 Dateien zusammen führen, nach Duplikaten suchen und löschen

    • Bit-Service
    • 3. Juni 2014 um 14:27

    Hallo

    AspirinJunkie
    ,

    vielen Dank für deine Hilfe,

    bei deinem Script erhalte ich folgende Fehlermeldung:

    Line 9
    Unknowdn funktion name

    Die Version ist 3.3.8.1

  • Inhalt von 2 Dateien zusammen führen, nach Duplikaten suchen und löschen

    • Bit-Service
    • 3. Juni 2014 um 13:17

    Hallo Kanashius,

    Wenn ich das Script starte, kommt ein Öffnen-Dialog und wenn ich dort eine Datei auswähle, erhalte ich eine Fehlermeldung:

    Line 6 _FileReadToArray($file,$data,0)
    ^ Error

    Error: Incorrect number of parameters in function call.

    Den FileOpenDialog könnten wir eigentlich auch weglassen, würde reichen, wenn er "Datei1.csv" und "Datei2.csv" lädt und dann das Ergebnis hinterher in "Datei3.csv" speichert.
    Das Script und die Dateien liegen alle in dem Ordner "Test" auf dem Desktop.

  • Inhalt von 2 Dateien zusammen führen, nach Duplikaten suchen und löschen

    • Bit-Service
    • 1. Juni 2014 um 22:45

    Ok, vielen Dank euch beiden schonmal.

    Bekomme bei dem Script schon in der zweiten Zeile nen Fehler ausgegeben.

    Habe es dann doch lieber in der Jobbörse gepostet.

    [ neu ] Inhalt von 2 Dateien zusammen führen, nach Duplikaten suchen und löschen

  • Inhalt von 2 Dateien zusammen führen, nach Duplikaten suchen und löschen

    • Bit-Service
    • 1. Juni 2014 um 22:30

    Hallo,

    ich habe 2 csv-Dateien, diese würde ich gerne zusammenführen und danach doppelte einträge löschen. Hier kann es aber sein, dass nur die erste Spalte einer Zeile den selben Wert enthält, trotzdem soll dann die ganze Zeile gelöscht werden.

    Beispiel:

    Die erste Datei enthält:

    AAA;123;456;
    BBB;789;012;

    Die zweite Datei enthält:

    CCC;345;678;
    AAA;901;234;

    Zusammgeführt sollte es dann so aussehen:

    AAA;123;456;
    BBB;789;012;
    CCC;345;678;
    AAA;901;234;

    und dann sollte nach doppelten Werten in der ersten Spalte gesucht werden und dann die entsprechende Zeile gelöscht werden:

    BBB;789;012;
    CCC;345;678;

    Ich hatte hier so an _FileReadToArray gedacht. Es handelt sich aber um ca. 35000 Datensätze.

    Hat jemand sowas vielleicht schonmal gemacht und könnte ein Beispiel-Script posten?

    Vielen Dank.

  • Inhalt von 2 Dateien zusammen führen, nach Duplikaten suchen und löschen

    • Bit-Service
    • 1. Juni 2014 um 11:57

    Hallo,

    ich habe 2 csv-Dateien, diese würde ich gerne zusammenführen und danach doppelte einträge löschen. Hier kann es aber sein, dass nur die erste Spalte einer Zeile den selben Wert enthält, trotzdem soll dann die ganze Zeile gelöscht werden.

    Beispiel:

    Die erste Datei enthält:

    AAA;123;456;
    BBB;789;012;

    Die zweite Datei enthält:

    CCC;345;678;
    AAA;901;234;

    Zusammgeführt sollte es dann so aussehen:

    AAA;123;456;
    BBB;789;012;
    CCC;345;678;
    AAA;901;234;

    und dann sollte nach doppelten Werten in der ersten Spalte gesucht werden und dann die entsprechende Zeile gelöscht werden:

    BBB;789;012;
    CCC;345;678;

    Ich hatte hier so an _FileReadToArray gedacht. Es handelt sich aber um ca. 35000 Datensätze.

    Hat jemand sowas vielleicht schonmal gemacht und könnte ein Beispiel-Script posten?

    Vielen Dank.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™