- Beiträge: 6
Parameter für Anzahl von Insert/Update
- Harald Schwab
- Autor
- Offline
- Benutzer
Weniger
Mehr
7 Jahre 3 Monate her #3278
von Harald Schwab
Parameter für Anzahl von Insert/Update wurde erstellt von Harald Schwab
Hallo, gibt es die Möglichkeit die Anzahl der "Insert" bzw. "Update" Vorgänge (am Ende) auszulesen und zB dem SQL-Heater (Ausführen bei Ende) zu Übergeben? zB in Form von (Programmseitigen) Parametern?
FlowHeater Version 4.0.8.2
Danke
MfG
Harald Schwab
FlowHeater Version 4.0.8.2
Danke
MfG
Harald Schwab
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
7 Jahre 3 Monate her #3279
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 Parameter für Anzahl von Insert/Update
Hallo Herr Schwab,
um die Anzahl der eingefügten bzw. aktualisierten Datensätze abzufragen benötigen sie den .NET Script Heater zusammen mit u.s. Skript.
Die Rückgabe leiten Sie dann in einen Set Parameter Heater und können Sie am Ende der Definition einen SQL Heater mit diesen Parametern bestücken.
Im Anhang finden Sie ein kleines Beispiel dazu.
Skript für angefügte Datensätze
Skript für aktualisierte Datensätze
um die Anzahl der eingefügten bzw. aktualisierten Datensätze abzufragen benötigen sie den .NET Script Heater zusammen mit u.s. Skript.
Die Rückgabe leiten Sie dann in einen Set Parameter Heater und können Sie am Ende der Definition einen SQL Heater mit diesen Parametern bestücken.
Im Anhang finden Sie ein kleines Beispiel dazu.
Skript für angefügte Datensätze
Code:
public object DoWork()
{
DatabaseAdapter adapter = (DatabaseAdapter)AdapterWrite;
return adapter.RowsInserted;
}
Skript für aktualisierte Datensätze
Code:
public object DoWork()
{
DatabaseAdapter adapter = (DatabaseAdapter)AdapterWrite;
return adapter.RowsUpdated;
}
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:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Harald Schwab
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 6
7 Jahre 3 Monate her #3280
von Harald Schwab
Harald Schwab antwortete auf Parameter für Anzahl von Insert/Update
Hallo, vielen Dank.
Ich habe es jetzt Ausprobiert, bekomme jedoch leider nicht die korrekte Anzahl zurückgegeben.
Folgendes Beispiel:
- Tatsächliche Updates = 5, Tatsächliche Inserts = 0 => RowsUpdated = 4, RowsInserted = 0
- Tatsächliche Updates = 0, Tatsächliche Inserts = 5 => RowsUpdated = 0, RowsInserted = 4
- Tatsächliche Updates = 5, Tatsächliche Inserts = 5 => RowsUpdated = 5, RowsInserted = 4
Ist einer der beiden Vorgänge = 0 ergibt der andere also immer N - 1
Sind beide > 0 ergibt Updates = N, Inserts aber M - 1
Ich habe es mittels separaten .NET Heatern probiert (wie gezeigt, jeweils in einem eigenen .NET Heater), als auch mit einem wo ich die Ergebnisse in einem String zusammengefügt habe und dann mittels Split-Heater an die Set-Heater verteilt habe.
Ich habe sowohl bei "Ausführen bei 'Pro Zeile/Satz'" als auch "Ausführen bei 'Standard'" probiert.
Habe ich etwas übersehen?
Danke
MfG
Harald Schwab
Ich habe es jetzt Ausprobiert, bekomme jedoch leider nicht die korrekte Anzahl zurückgegeben.
Folgendes Beispiel:
- Tatsächliche Updates = 5, Tatsächliche Inserts = 0 => RowsUpdated = 4, RowsInserted = 0
- Tatsächliche Updates = 0, Tatsächliche Inserts = 5 => RowsUpdated = 0, RowsInserted = 4
- Tatsächliche Updates = 5, Tatsächliche Inserts = 5 => RowsUpdated = 5, RowsInserted = 4
Ist einer der beiden Vorgänge = 0 ergibt der andere also immer N - 1
Sind beide > 0 ergibt Updates = N, Inserts aber M - 1
Ich habe es mittels separaten .NET Heatern probiert (wie gezeigt, jeweils in einem eigenen .NET Heater), als auch mit einem wo ich die Ergebnisse in einem String zusammengefügt habe und dann mittels Split-Heater an die Set-Heater verteilt habe.
Code:
public object DoWork()
{
DatabaseAdapter adapter = (DatabaseAdapter)AdapterWrite;
int update = adapter.RowsUpdated;
int insert = adapter.RowsInserted;
String ret = String.Format("{0}#{1}", update, insert);
return ret;
}
Ich habe sowohl bei "Ausführen bei 'Pro Zeile/Satz'" als auch "Ausführen bei 'Standard'" probiert.
Habe ich etwas übersehen?
Danke
MfG
Harald Schwab
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
7 Jahre 3 Monate her #3281
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 Parameter für Anzahl von Insert/Update
Hallo Herr Schwab,
das war ein Denkfehler von mir, ich wollte es etwas einfacher machen :dry: Das Problem ist, dass so die Parameter bei jedem Datensatz gesetzt werden noch bevor der Adapter der Write Seite das eigentlich Kommando ausgeführt hat und somit auch der Zähler noch nicht hochgesetzt werden konnte. Demnach ist immer bei der zuletzt ausgeführten Aktion (INSERT oder UPDATE) der Zähler um eins zu niedrig.
Ich habe das Beispiel angepasst (siehe Anhang) so dass die Parameter über den .NET Script Heater am Ende der Verarbeitung gesetzt werden, jetzt sollte es passen. Achtung: „Ausführen bei“ muss auf „Ende“ gesetzt werden!
Hier das neue C# Skript
PS: Evtl. wäre es auch eine Möglichkeit über das Batch Modul mit der Option /LogFile logfilename die Ausgaben zu loggen und um Anschluss eine zweite Definition zu starten die dann diese Ausgaben verarbeitet?
das war ein Denkfehler von mir, ich wollte es etwas einfacher machen :dry: Das Problem ist, dass so die Parameter bei jedem Datensatz gesetzt werden noch bevor der Adapter der Write Seite das eigentlich Kommando ausgeführt hat und somit auch der Zähler noch nicht hochgesetzt werden konnte. Demnach ist immer bei der zuletzt ausgeführten Aktion (INSERT oder UPDATE) der Zähler um eins zu niedrig.
Ich habe das Beispiel angepasst (siehe Anhang) so dass die Parameter über den .NET Script Heater am Ende der Verarbeitung gesetzt werden, jetzt sollte es passen. Achtung: „Ausführen bei“ muss auf „Ende“ gesetzt werden!
Hier das neue C# Skript
Code:
public object DoWork()
{
DatabaseAdapter adapter = (DatabaseAdapter)AdapterWrite;
// Parameter INSERTS setzen
Parameter["INSERTS"].Value = adapter.RowsInserted;
// Parameter UPDATES setzen
Parameter["UPDATES"].Value = adapter.RowsUpdated;
// Rückgabe wird bei ausführen am Ende nicht benötigt!
return null;
}
PS: Evtl. wäre es auch eine Möglichkeit über das Batch Modul mit der Option /LogFile logfilename die Ausgaben zu loggen und um Anschluss eine zweite Definition zu starten die dann diese Ausgaben verarbeitet?
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:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Harald Schwab
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 6
7 Jahre 3 Monate her #3282
von Harald Schwab
Harald Schwab antwortete auf Parameter für Anzahl von Insert/Update
Hallo, super vielen Dank. Diese Variante scheint Perfekt zu funktionieren.
Das Ganze über die Ausgabe des Batch-Moduls auszulesen hatte ich schon im Hinterkopf, aber so ist es doch um einiges einfacher und vor allem auch aus dem Designer heraus möglich.
Danke
MfG
Harald Schwab
Das Ganze über die Ausgabe des Batch-Moduls auszulesen hatte ich schon im Hinterkopf, aber so ist es doch um einiges einfacher und vor allem auch aus dem Designer heraus möglich.
Danke
MfG
Harald Schwab
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.288 Sekunden