Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: ID Increment mit Sprüngen

ID Increment mit Sprüngen 5 Jahre 1 Monat her #656

  • Andreas Erdmann
  • Andreas Erdmanns Avatar
  • Offline
  • New Member
  • Beiträge: 2
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)?
Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: ID Increment mit Sprüngen 5 Jahre 1 Monat her #657

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
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.
// 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 nicht gefunden

Anhang:
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: ID Increment mit Sprüngen 5 Jahre 1 Monat her #658

  • Andreas Erdmann
  • Andreas Erdmanns Avatar
  • Offline
  • New Member
  • Beiträge: 2
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:
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.080 Sekunden