- Beiträge: 45
Löschen von Daten in der Zieltabelle vor dem befüllen
- Sven
- Autor
- Offline
- Benutzer
Weniger
Mehr
13 Jahre 6 Monate her #408
von Sven
Löschen von Daten in der Zieltabelle vor dem befüllen wurde erstellt 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
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 oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
13 Jahre 6 Monate her #416
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 Aw: Löschen von Daten in der Zieltabelle vor dem befüllen
Das können Sie mit Hilfe des .NET Skript Heater und folgenden kleinen Skript durchführen.
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.
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 oder Registrieren um der Konversation beizutreten.
- Sven
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
13 Jahre 6 Monate her #418
von Sven
Sven antwortete auf Aw: Löschen von Daten in der Zieltabelle vor dem befüllen
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
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 oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
13 Jahre 6 Monate her #419
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 Aw: Löschen von Daten in der Zieltabelle vor dem befüllen
Hallo Sven,
wenn das Feld CompanyID ein Zahlenfeld ist muss das Skript leicht angepasst werden.
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 oder Registrieren um der Konversation beizutreten.
- Sven
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
13 Jahre 6 Monate her #420
von Sven
Sven antwortete auf Aw: Löschen von Daten in der Zieltabelle vor dem befüllen
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!
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 oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
13 Jahre 6 Monate her #423
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 Aw: Löschen von Daten in der Zieltabelle vor dem befüllen
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!
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 oder Registrieren um der Konversation beizutreten.
- Sven
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
13 Jahre 5 Monate her #425
von Sven
Sven antwortete auf Aw: Löschen von Daten in der Zieltabelle vor dem befüllen
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.
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 oder Registrieren um der Konversation beizutreten.
- Sven
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
13 Jahre 5 Monate her #426
von Sven
Sven antwortete auf Aw: Löschen von Daten in der Zieltabelle vor dem befüllen
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.
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 oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
13 Jahre 5 Monate her #427
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 Aw: Löschen von Daten in der Zieltabelle vor dem befüllen
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.
PS: Anlagen bitte vorher immer zippen!
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 oder Registrieren um der Konversation beizutreten.
- Sven
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
13 Jahre 5 Monate her #428
von Sven
Sven antwortete auf Aw: Löschen von Daten in der Zieltabelle vor dem befüllen
Immer noch folgender Fehler:
Conversion failed when converting the nvarchar value 'DDIEED' to data type int
Es wird nichts weggeschrieben!
Conversion failed when converting the nvarchar value 'DDIEED' to data type int
Es wird nichts weggeschrieben!
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Sven
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
13 Jahre 5 Monate her #430
von Sven
Sven antwortete auf Aw: Löschen von Daten in der Zieltabelle vor dem befüllen
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!!!!!!!!!!!!!
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 oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.309 Sekunden