Der Daten Import / Export Spezialist

ID Increment mit Sprüngen

  • Andreas Erdmann
  • Autor
  • Offline
  • Neues Mitglied
  • Neues Mitglied
Mehr
11 Jahre 4 Monate 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össere 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.

Mehr
11 Jahre 4 Monate her #657 von FlowHeater-Team
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.
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
  • Neues Mitglied
  • Neues Mitglied
Mehr
11 Jahre 4 Monate 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:
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.232 Sekunden

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

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

Follow us on

twitter  facebook

YouTube

 de en