Der Daten Import / Export Spezialist
Schauen Sie sich auch die verfügbaren allgemeinen Beispiele an evtl. kann Ihre Frage hiermit schon beantwortet werden: Hello World 1 / 2 / 3 , Zahlen in Zeichenketten formatieren , Einfache Wenn-Dann-Sonst Bedingung , Komplexe If-Then-ElseIf ... Bedingung , Daten filtern und gruppieren , Daten gruppieren und Werte über die Gruppierung summieren

In Gruppierung nach Anzahl markieren

  • Ralf Birk
  • Autor
  • Offline
  • Premium Mitglied
  • Premium Mitglied
Mehr
7 Jahre 2 Monate her #2546 von Ralf Birk
In Gruppierung nach Anzahl markieren wurde erstellt von Ralf Birk
Hallo miteinander,

ich hätte mal wieder ein Problem, bei dem ich mir nicht sicher bin ob ich dies in FH gelöst bekomme.
In einer Adressdatei werden mittels Replace Postleitzahlen bestimmten Gebieten zugewiesen.
Die Exportdatei sollte nach den Gebieten sortiert sein und der letzte Datensatz eines Gebiets mit einem "x" in einer Spalte markiert sein. Soweit dürfte noch alles funktionieren.
Die nächste Herausforderung:
Die Adressen je Gebiet müssten nach einer anzugebenden Zahl (zB. 25 - diese Zahl kann je Job aber unterschiedlich sein) ebenfalls mit einem "x" markiert werden.
Beispiel:
Gruppe 1= 105 Datensätze (ein "x" bei 25,50,75,100,105), Gruppe 2 = 87 Datensätze ("x" bei 25,50,75,87) usw.
Ist so etwas möglich?
Ideal wäre natürlich zusätzliche Counter je Einheit (zwischen den "x"'en), der Gebiete und Gesamt.

Über einen Lösungsansatz wäre ich sehr dankbar.

Gruß Ralf

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
7 Jahre 2 Monate her - 7 Jahre 2 Monate her #2547 von FlowHeater-Team
FlowHeater-Team antwortete auf In Gruppierung nach Anzahl markieren
Hallo Herr Birk

dafür benötigen Sie mehrere Definitionen (min. zwei) sowie die Hilfe des .NET Script Heater . Im Anhang habe ich mal ein Beispiel erstellt wie das gemacht werden kann, benötigt allerdings etwas Programmierkenntnisse.

Um den letzten eines Gebietes zu markieren finden Sie hier ein Beispiel: Markierung bei Spalteninhaltwechsel
Diese Definition muss vorweg ausgeführt werden.

Um dann den Zähler mit der dynamischen Anzahl hinzubekommen benötigen Sie einmal einen Parameter $ANZHAL$ diesen Parameter können Sie einem manuell setzen oder aber über die /SetParameter Option im Batch Modul (FHBatch.exe)
.
Der .NET Script Heater benötigt den Paramater $ANZAHL$ und als Eingangsparameter lediglich das CSV Feld mit der Gruppeninformation und liefert daraus 3 Werte (Zähler x, Zähler Gruppe und dem X) mit dem Trennzeichen „|“ getrennt. Dieser Werte werden anschließend mit dem String Split Heater in die eigentlichen Ausgabe CSV Felder aufgeteilt.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Letzte Änderung: 7 Jahre 2 Monate her von FlowHeater-Team.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Ralf Birk
  • Autor
  • Offline
  • Premium Mitglied
  • Premium Mitglied
Mehr
7 Jahre 2 Monate her #2548 von Ralf Birk
Ralf Birk antwortete auf In Gruppierung nach Anzahl markieren
Hallo Herr Stark,

vielen Dank für Ihre schnelle Hilfe. Ich habe das Script, mit dem sie mir vor Monaten weitergeholfen haben mit eingebaut und soweit ist "fast" alles klar.
2 Punkte hätte ich noch:
1: In Ihrem Beispiel haben sie scheinbar den Wert 5 als Größe angegeben. Leider Finde ich im Script diesen nicht und weis auch nicht wie ich den den Parameter $ANZAHL$ übergebe.
2: Beim letzten Datensatz einer Gruppe sollte ja ebenfalls ein "x" sein. Dies ist nicht vorhanden. Ebenso wird in der Outputspalte "Zähler X" der Counter über den Gruppenwechsel weitergezählt.
Ist das auch noch umsetzbar?

Ansonsten wieder eine geniale Lösung...

Vielen Dank

Gruß Ralf B.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
7 Jahre 2 Monate her - 7 Jahre 2 Monate her #2549 von FlowHeater-Team
FlowHeater-Team antwortete auf In Gruppierung nach Anzahl markieren
Hallo Herr Birk

Zu 1) Den Default Wert können Sie über „Menü->Bearbeiten->Parameter“ einstellen. Diesen Parameter können Sie dann über die /SetParameter Option des Batch Moduls dynamisch ändern.

z.B. FHBatch.exe /SetParameter ANZAHL=25 Ihre-Import-Export-Definition.fhd


Zu 2) Ich habe das Skript angepasst, so dass der Zähler auch bei einem Gruppenwechsel zurückgesetzt wird. Um den letzten CSV Satz einer Gruppe zu markieren müssen Sie vorher die Lösung aus dem Forumsbeitrag „ Markierung bei Spalteninhaltwechsel “ laufen lassen und anschließend über die so modifizierte CSV Datei lassen Sie dann diese Definition laufen.

z.B. mittels eines CMD Skriptes und dem Batch Modul
Code:
@echo off REM Hier ggf. den Installationspfad zur FHBatch.exe anpassen! set FHBATCH="C:\Program Files\FlowHeater V4\BIN\FHBatch.exe" %FHBATCH% 01_add_group_count.fhd %FHBATCH% 02_sort_desc-add-x.fhd %FHBATCH% 03_sort_asc.fhd %FHBATCH% /SetParameter ANZAHL=25 04_diese-lösung-hier.fhd

Geändertes .NET Script
Code:
int countX = 0; int countGroup = 0; string lastGroup = String.Empty; public object DoWork() { string sRet = String.Empty; if (InValues.Length != 1) throw new Exception("ein Eingangsparameter erwartet!"); // Parameter Wert holen wann ein X geschrieben werden soll int anzahl = (int)Parameter["Anzahl"].GetInt(); // Eingangsparameter holen string group = (string)InValues[0].GetString(); // liegt ein Gruppenwechsel vor? if (group != lastGroup) { countX = 0; countGroup = 0; } // Zähler hochzählen countX++; countGroup++; // Rückgabe formatieren sRet = countX.ToString("0"); // | = Trennzeichen für Split Heater sRet += "|"; sRet += countGroup.ToString("0"); // | = Trennzeichen für Split Heater sRet += "|"; if (countGroup % anzahl == 0) { sRet += "x"; countX = 0; } // aktuelle Gruppe für nächsten Datensatz merken lastGroup = group; // Rückgabe return sRet; }

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: 7 Jahre 2 Monate her von FlowHeater-Team.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Ralf Birk
  • Autor
  • Offline
  • Premium Mitglied
  • Premium Mitglied
Mehr
7 Jahre 2 Monate her - 7 Jahre 2 Monate her #2551 von Ralf Birk
Ralf Birk antwortete auf In Gruppierung nach Anzahl markieren
Hallo Herr Stark,

das mit dem Parameter im Programm war mir klar.
Ich wusste nur nicht den benötigten Syntax in der Batchdatei für den dynamischen Parameter.
Das geänderte .Net Script habe ich getestet. "Zähler X" geginnt er jetzt wie es sich gehört mit 1 bei einer neuen Gruppe. Nur das X beim letzten einer Gruppe, das ich dringend benötige funktioniert leider noch nicht.
Ist das ein größeres Problem? Sonst müsste ich mir Gedanken machen wie ich es anderweitig umsetzen kann.

Vielen Dank vorab...
Gruß Ralf B.
Letzte Änderung: 7 Jahre 2 Monate her von Ralf Birk. Begründung: Neues Problem Erkannt

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.452 Sekunden

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

Copyright © 2009-2023 by FlowHeater GmbH.
Alle Rechte vorbehalten.

Follow us on

twitter  facebook

YouTube

 de en