- Beiträge: 2
ID Increment mit Sprüngen
- Andreas Erdmann
- Autor
- Offline
- Benutzer
Weniger
Mehr
13 Jahre 1 Monat her #656
von Andreas Erdmann
ID Increment mit Sprüngen wurde erstellt von Andreas Erdmann
Ich habe folgendes Problem:
Es sollen Daten aus einer ODBC-Quelle (dBase) in eine SQL Tabelle geschrieben werden. Dabei wird eine größere Zahl an Sätzen durch eine Filterbedingung ausgeschlossen.
Auf der SQL-Seite ist ein PrimaryKey Feld definiert, dass einfach pro Satz hochzählt wird. Es soll später darauf referenziert werden können. Dieses Feld habe ich über ein ID Feld erzeugt, Startwert = 1, Increment = 1.
Als Ergebnis erhalte ich aber eine Liste mit Sprüngen. Und zwar mit genau den Sprüngen der gefilterten dbase Sätze.
Ziel ist es aber auf der WRITE Seite eine Erhöhung nur pro geschriebenen Satz.
Wie kann ich erreichen, dass der ID-Wert um 1 erhöht wird, wenn auf der Write-Seite eine Satz geschrieben wird (INSERT oder UPDATE)?
Es sollen Daten aus einer ODBC-Quelle (dBase) in eine SQL Tabelle geschrieben werden. Dabei wird eine größere Zahl an Sätzen durch eine Filterbedingung ausgeschlossen.
Auf der SQL-Seite ist ein PrimaryKey Feld definiert, dass einfach pro Satz hochzählt wird. Es soll später darauf referenziert werden können. Dieses Feld habe ich über ein ID Feld erzeugt, Startwert = 1, Increment = 1.
Als Ergebnis erhalte ich aber eine Liste mit Sprüngen. Und zwar mit genau den Sprüngen der gefilterten dbase Sätze.
Ziel ist es aber auf der WRITE Seite eine Erhöhung nur pro geschriebenen Satz.
Wie kann ich erreichen, dass der ID-Wert um 1 erhöht wird, wenn auf der Write-Seite eine Satz geschrieben wird (INSERT oder UPDATE)?
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
13 Jahre 1 Monat her #657
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: ID Increment mit Sprüngen
Hallo Herr Erdmann,
mit gefilterten Datensätzen hat der AutoID Heater momentan noch ein Problem. Demnächst wird es dafür erweiterte Einstellungen im AutoID Heater geben worüber sie das abbilden können.
Workaround
Ihre Anforderung können Sie aber über den .NET Script Heater und folgenden Skript lösen.
Vorgehensweise
Ziehen Sie einen .NET Script Heater auf den Designer. Öffnen Sie die Einstellungen über eine Doppelklick darauf und kopieren Sie oben stehendes Script hinein.
Jetzt brauchen Sie nur noch den Ausgang des IF-THEN-ELSE Heaters , den Sie für Ihre Filterbedingung verwenden, mit dem Eingang des .NET Script Heaters verbinden.
Hinweis: Den Filter Heater benötigen Sie weiterhin!
Den Ausgang brauchen Sie nur noch mit dem AutoID Feld Ihrer SQL Server Tabelle verbinden. Den AutoID Heater können Sie aus der Definition löschen.
Zur Veranschaulichung habe ich Ihnen ein kleines Beispiel erstellt, siehe Anhang.
mit gefilterten Datensätzen hat der AutoID Heater momentan noch ein Problem. Demnächst wird es dafür erweiterte Einstellungen im AutoID Heater geben worüber sie das abbilden können.
Workaround
Ihre Anforderung können Sie aber über den .NET Script Heater und folgenden Skript lösen.
Code:
// Varaibale zur Speicherung der selbst generierten laufenden Nummer
int id = 0;
public object DoWork()
{
// ersten Eingangsparameter abrufen = Auswertung der Filterbedingung
bool bFilterRow = (bool)InValues[0].GetBool();
// ID nur hochzählen wenn Zeile nicht gefiltert wird
if (bFilterRow == false)
id++;
// ID für die weitere Verarbeitung zurückliefern
return id;
}
Vorgehensweise
Ziehen Sie einen .NET Script Heater auf den Designer. Öffnen Sie die Einstellungen über eine Doppelklick darauf und kopieren Sie oben stehendes Script hinein.
Jetzt brauchen Sie nur noch den Ausgang des IF-THEN-ELSE Heaters , den Sie für Ihre Filterbedingung verwenden, mit dem Eingang des .NET Script Heaters verbinden.
Hinweis: Den Filter Heater benötigen Sie weiterhin!
Den Ausgang brauchen Sie nur noch mit dem AutoID Feld Ihrer SQL Server Tabelle verbinden. Den AutoID Heater können Sie aus der Definition löschen.
Zur Veranschaulichung habe ich Ihnen ein kleines Beispiel erstellt, siehe Anhang.
Anhang autoid_ueber_script.zip wurde nicht gefunden.
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.
- Andreas Erdmann
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 2
13 Jahre 1 Monat her #658
von Andreas Erdmann
Andreas Erdmann antwortete auf Aw: ID Increment mit Sprüngen
Hallo Herr Stark,
danke für die schnelle Hilfe.
Ich habe Dank Ihres und eines weiteren .NET Scripts als Beispiel das Problem lösen können.
Da ich mehrere Filterbedingungen benötige, habe ich mir einen Zähler selbst gebaut...
Mein Scipt:
Vielleicht hilft es jemanden, bis die Option kommt.
Grüße
Andreas Erdmann
danke für die schnelle Hilfe.
Ich habe Dank Ihres und eines weiteren .NET Scripts als Beispiel das Problem lösen können.
Da ich mehrere Filterbedingungen benötige, habe ich mir einen Zähler selbst gebaut...
Mein Scipt:
Code:
bool bFirstCall = true;
int nAutoID;
public object DoWork()
{
// nur für den 1. Datensatz ausführen
if (bFirstCall == true)
{
bFirstCall = false;
nAutoID = 0;
}
nAutoID = nAutoId + 1;
return nAutoID;
}
Vielleicht hilft es jemanden, bis die Option kommt.
Grüße
Andreas Erdmann
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.269 Sekunden