Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: In Gruppierung nach Anzahl markieren

In Gruppierung nach Anzahl markieren 1 Jahr 1 Woche her #2546

  • Ralf Birk
  • Ralf Birks Avatar
  • Offline
  • Senior Member
  • Beiträge: 45
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

In Gruppierung nach Anzahl markieren 1 Jahr 1 Woche her #2547

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
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.
Anhang:
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: 1 Jahr 1 Woche her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

In Gruppierung nach Anzahl markieren 1 Jahr 1 Woche her #2548

  • Ralf Birk
  • Ralf Birks Avatar
  • Offline
  • Senior Member
  • Beiträge: 45
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

In Gruppierung nach Anzahl markieren 1 Jahr 1 Woche her #2549

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
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
@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
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: 1 Jahr 1 Woche her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

In Gruppierung nach Anzahl markieren 1 Jahr 1 Woche her #2551

  • Ralf Birk
  • Ralf Birks Avatar
  • Offline
  • Senior Member
  • Beiträge: 45
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: 1 Jahr 1 Woche her von Ralf Birk. Begründung: Neues Problem Erkannt
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.088 Sekunden