Skip to main content
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Download

Löschen von Daten in der Zieltabelle vor dem befüllen

Mehr
12 Jahre 10 Monate her #408 von Sven
Hallo,

ich möchte gezielte Einträge in der Zieltabelle vor dem Befüllen löschen.

Kriterium soll beispielsweise das erste Feld aus dem ersten Datensatz der Readtabelle sein.
Beispiel:

Readtabelle(erste Datensatz):

Feld1 Feld2
FR 2230


Zieltabelle:
Feld1 Feld2
FR 2230
ES 9888
IT 5544
FR 4544

Jetzt sollen alle Daten mit "FR" in der Zieltabelle gelöscht werden, bevor Sie neu befüllt wird.

Wie mache ich das?

Viele Grüße
Sven Majali

Bitte Anmelden um der Konversation beizutreten.

Mehr
12 Jahre 10 Monate her #416 von FlowHeater-Team
Das können Sie mit Hilfe des .NET Skript Heater und folgenden kleinen Skript durchführen.
Code:
public object DoWork() { // nicht im Testmodus ausführen if (AdapterWrite.OnlyTest == false) { string sTemp = (string)InValues[0].GetString(); if (sTemp != null) { // Hier den SQL Tabellen und Feldnamen anpassen AdapterWrite.Execute("delete from IHRE_TABELLE where IHR_FELD = '" + sTemp + "'"); } } // 1. Eingangsparameter für weitere Verarbeitung wieder zurückliefern return InValues[0].GetValue(); }

Ziehen Sie dazu einen .NET Script Heater in die Verbindung vom Feld1. Öffnen Sie den Konfigurationsdialog über einen Doppelklick und kopieren oben stehenden Code hinein. Jetzt müssen Sie noch den SQL Tabellen und Feldnamen im Skript an Ihre Umgebung anpassen, siehe Kommentar im Skript.

Achtung: Bitte das Skript mit Vorsicht genießen. Wenn Sie hier falsche Parameter angeben wird unter Umständen der komplette Inhalt gelöscht.

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.

Bitte Anmelden um der Konversation beizutreten.

Mehr
12 Jahre 10 Monate her #418 von Sven
Moin Robert,
leider funktioniert es nicht. Kannst du dir das bitte kurzfristig angucken? Ich benötige dringend diese Funktion:

// Diese Funktion ist zwingend erforderlich!
public object DoWork()
{
// nicht im Testmodus ausführen
if (AdapterWrite.OnlyTest = false)
{
string sTemp = (string)InValues[0].GetString();
if (sTemp != null)
{
// Hier den SQL Tabellen und Feldnamen anpassen
AdapterWrite.Execute("delete from ISALE where CompanyID = '" + sTemp + "'");
}
}

// 1. Eingangsparameter für weitere Verarbeitung wieder zurückliefern
return InValues[0].GetValue();
}

VG
Sven

Bitte Anmelden um der Konversation beizutreten.

Mehr
12 Jahre 10 Monate her #419 von FlowHeater-Team
Hallo Sven,

wenn das Feld CompanyID ein Zahlenfeld ist muss das Skript leicht angepasst werden.
Code:
public object DoWork() { // nicht im Testmodus ausführen if (AdapterWrite.OnlyTest == false) { string sTemp = (string)InValues[0].GetString(); if (sTemp != null) { // evtl. Tausendertrennzeichen entfernen sTemp = sTemp.Replace(".", "").Replace(",", ""); // Hier den SQL Tabellen und Feldnamen anpassen AdapterWrite.Execute("delete from IHRE_TABELLE where IHR_FELD = " + sTemp); } } // 1. Eingangsparameter für weitere Verarbeitung wieder zurückliefern return InValues[0].GetValue(); }

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.

Bitte Anmelden um der Konversation beizutreten.

Mehr
12 Jahre 10 Monate her #420 von Sven
Kann es sein, das der Prozess jetzt extrem langsam läuft.......vorher lief Alles erheblich schneller.....ob es funktioniert kann ich noch nicht sagen, da die Verarbeitung noch läuft...
Das Kriterium sollte nur aus dem ersten Satz und nur einmal aus der Sourcetabelle gelesen werden.....
Kann es sein, das er immer wieder liest? Es läuft einfach nur langsam!

Bitte Anmelden um der Konversation beizutreten.

Mehr
12 Jahre 10 Monate her #423 von FlowHeater-Team
Hallo Sven,

ja, das Skript löscht pro Datensatz die Einträge der Tabelle neu. Das ist natürlich ziemlich zeitaufwändig.
Ich hab das Skript etwas angepasst. Es merkt sich jetzt bereits gelöschte Werte und führt hierfür keinen SQL DELETE mehr auf der WRITE Seite aus. Das Ganze sollte jetzt erheblich schneller laufen!
Code:
// bereits gelöschte Werte merken string sWerte = String.Empty; public object DoWork() { // nicht im Testmodus ausführen if (AdapterWrite.OnlyTest == false) { string sTemp = (string)InValues[0].GetString(); if (sTemp != null) { bool bDelete = true; char [] c = { ';' }; foreach(string sWert in sWerte.Split(c)) { if (sWert == sTemp) { // bereits gelöscht, wird übersprungen bDelete = false; break; } } if (bDelete) { // Diesen Wert merken für nächsten Durchlauf if (sWerte.Length != 0) sWerte += ";"; sWerte += sTemp; // evtl. Tausendertrennzeichen entfernen sTemp = sTemp.Replace(".", "").Replace(",", ""); // Hier den SQL Tabellen und Feldnamen anpassen AdapterWrite.Execute("delete from IHRE_TABELLE where IHR_FELD = " + sTemp); } } } // 1. Eingangsparameter für weitere Verarbeitung wieder zurückliefern return InValues[0].GetValue(); }

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.

Bitte Anmelden um der Konversation beizutreten.

Mehr
12 Jahre 10 Monate her #425 von Sven
Moin Robert,
ich glaube es ist mine Schuld, ich hatte mich falsch ausgedrückt. Ich schrieb das Kriterium soll !beispielsweise! das erste Feld aus dem ersten Satz sein. Ich meinte damit , das !nur! der erste Satz und z.B. das erste Feld als Löschkriterium dienen sollen.
Ich teste jetzt dein neues Script und melde mich wieder.

Bitte Anmelden um der Konversation beizutreten.

Mehr
12 Jahre 10 Monate her #426 von Sven
Leider fällt das Script mit folgender Meldung auf die Nase:
Conversion failed when converting the nvarchar value 'DDIEED' to data type int.
Merkwürdigerweise kommt der Wert 'DDIEED' aus einem ganz anderen Feld.
Könntest du das Script in VB schreiben, C# beherrsche ich leider nicht.
Diese Fehlermeldung kommt immer wieder, auch bei anderen Files, wo es den Wert 'DDIEED' gar nicht gibt. Er behält es offenbar im Speicher......

Ich habe dir die Definition mal angehängt.

Also, ausschließlich der erste Satz und z.B. der Wert des ersten Feldes soll vor dem Befüllen der Zieltabelle als Löschkriterium dienen. Erst !einmal löschen(Kriterium : Feld1 aus dem ersten Satz der Sourcetabelle.), danach befüllen.

Bitte Anmelden um der Konversation beizutreten.

Mehr
12 Jahre 10 Monate her #427 von FlowHeater-Team
Hallo Sven,

Hier ein Skript, das nur beim 1. Datensatz die Tabelle leert. Leider auf die schnelle in C#. VB.NET dauert leider etwas länger, liefere ich noch nach.
Code:
bool bFirst = true; public object DoWork() { // nicht im Testmodus ausführen sowie nur einmalig if (AdapterWrite.OnlyTest == false && bFirst == true) { // Nur beim 1. Datensatz ausführen bFirst = false; string sTemp = (string)InValues[0].GetString(); if (sTemp != null) { // evtl. Tausendertrennzeichen entfernen sTemp = sTemp.Replace(".", "").Replace(",", ""); // Hier den SQL Tabellen und Feldnamen anpassen AdapterWrite.Execute("delete from IHRE_TABELLE where IHR_FELD = " + sTemp); } } // 1. Eingangsparameter für weitere Verarbeitung wieder zurückliefern return InValues[0].GetValue(); }

PS: Anlagen bitte vorher immer zippen!

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.

Bitte Anmelden um der Konversation beizutreten.

Mehr
12 Jahre 10 Monate her #428 von Sven
Immer noch folgender Fehler:
Conversion failed when converting the nvarchar value 'DDIEED' to data type int

Es wird nichts weggeschrieben!

Bitte Anmelden um der Konversation beizutreten.

Mehr
12 Jahre 10 Monate her #430 von Sven
Hi Robert,

suuuuuuuupppppper, jetzt funktioniert es!!!!!!!!!! Die Version 2 baue ich gleich morgen früh in meine Prozesse ein.

Vielen, vielen Dank!

Beste Grüße
Sven

p.s.: Das macht einen exzellenten Service aus!!!!!!!!!!!!!

Bitte Anmelden um der Konversation beizutreten.

Ladezeit der Seite: 0.313 Sekunden

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


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