- Beiträge: 132
In Gruppierung nach Anzahl markieren
- Ralf Birk
- Autor
- Offline
- Benutzer
Weniger
Mehr
8 Jahre 11 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
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.
- FlowHeater-Team
- Offline
- Administrator
8 Jahre 11 Monate her - 8 Jahre 11 Monate her #2547
von FlowHeater-Team
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.
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.
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: 8 Jahre 11 Monate her von FlowHeater-Team.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Ralf Birk
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 132
8 Jahre 11 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.
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.
- FlowHeater-Team
- Offline
- Administrator
8 Jahre 11 Monate her - 8 Jahre 11 Monate her #2549
von FlowHeater-Team
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.
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.
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
Geändertes .NET Script
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: 8 Jahre 11 Monate her von FlowHeater-Team.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Ralf Birk
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 132
8 Jahre 11 Monate her - 8 Jahre 11 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.
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: 8 Jahre 11 Monate her von Ralf Birk. Begründung: Neues Problem Erkannt
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.288 Sekunden