Zum Hauptinhalt springen
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 Chart

Mehrere DateTIme-Felder auf Wert prüfen

  • Hans-Peter Bruns
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
11 Jahre 7 Monate her #1311 von Hans-Peter Bruns
Mehrere DateTIme-Felder auf Wert prüfen wurde erstellt von Hans-Peter Bruns
Hallo Herr Stark

mal wieder eine (vielleicht) dumme Frage :unsure:

Ich habe eine db3 Tabelle mit 20 DateTime Feldern.
Diese beinhalten eigentlich Öffnungs- bzw. Pausenzeiten.

Beispiel:
Mo Offen 08:00
Mo Pause Von 12:00

usw.

Die Felder können aber auch leer sein.

Wenn ich mir die Daten auf der READ-Seite anzeigen lasse, bekomme ich sowas wie 30.12.1899 08:00:00, oder aber 01.01.0001 00:00:00.

Bein Anfügen an eine SQL-Server Tabelle für die 01.01.0001 allerdings zu einem Fehler.
Jetzt könnte ich für jeder Spalte einen IfThenElse-Heater verwenden. Das ist jedoch ziemlich aufwendig. Gibt es vielleicht eine einfachere Möglichkeit (z.B. .Net Script Heater)

Gruß
Hans-Peter Bruns

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
11 Jahre 6 Monate her #1313 von FlowHeater-Team
FlowHeater-Team antwortete auf Aw: Mehrere DateTIme-Felder auf Wert prüfen
Hallo Herr Bruns,

Sie müssen immer für jedes Feld einzeln angeben was damit gemacht werden soll. Wenn Sie z.B. 20 Felder haben die Sie prüfen möchten/müssen, benötigen Sie dafür jeweils separate Heater zum Prüfen der einzelnen Felder. Wenn Sie das über ein Script für den .NET Script Heater durchführen möchten, benötigen Sie dafür ebenfalls für jedes Feld einen separaten .NET Script Heater.

Evtl. würde es aber reichen, wenn Sie auf der READ Seite den Felder einen Standardwert zuweisen.

z.B. 01.01.1899 00:00:00

Dieser Wert wird dann vom FlowHeater verwendet wenn das Feld keinen Inhalt hat.

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.

  • Hans-Peter Bruns
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
11 Jahre 6 Monate her #1314 von Hans-Peter Bruns
Hans-Peter Bruns antwortete auf Aw: Mehrere DateTIme-Felder auf Wert prüfen
Hallo Herr Stark

es ist noch schlimmer :side:
Die Felder sind als DateTime in der DB3 deklariert.
Statt NULL schreibt die Software aber einen leeren String in die Felder ('').

Die Lösung die ich gerade im Kopf habe, ist ein Update auf die einzelnen Felder beim Start auf der READ-Seite.

Jetzt habe ich nur ein Problem. Wie kann ich mehrere UPDATE-Statements in einen SQL-Heater packen?????

Gruß

Hans-Peter Bruns

Nachtrag:

Ich habe das ganze mit .Net Code lösen wollen.
Code:
' Diese Funktion ist zwingend erforderlich! Public Function DoWork() As Object Dim SQLite as String Dim Gebiet as String Dim Unzip as String Dim ImportKey As String Dim StartParmeter as String Dim oAdapter as DatabaseAdapter ' Hier den Pfad zu den den SQLite Datenbanken anpassen $GEBIET$ wird dabei ersetzt! SQLite = "C:\inetpub\wwwroot\FileTransferService\Android\Hochland\inbox\Hochland$Gebiet$\$UnzipFolder$\hochland.db3" ' Zugriff SQLite Adapter der WRITE Seite oAdapter = AdapterRead StartParmeter = Parameter("StartParameter").GetString() Dim arrParameter() as String arrParameter = Parameter("StartParameter").GetString.Split(";") Gebiet = arrParameter(0) Unzip = arrParameter(1) ImportKey = arrParameter(2) Parameter("Gebiet").Value = Gebiet Parameter("UnzipFolder").Value = Unzip Parameter("ImportKey").Value = ImportKey ' Gebiet im SQLite Adapter ersetzen oAdapter.Database = SQLite.Replace("$GEBIET$", Gebiet) oAdapter.Database = SQLite.Replace("$UnzipFolder$", Unzip) UD End Function Public Function UD Dim adapter as DatabaseAdapter adapter = AdapterRead adapter.execute("UPDATE [bsstxt] SET [Datum_von] = NULL WHERE Datum_von = ''") adapter.execute("UPDATE [bsstxt] SET [Datum_bis] = NULL WHERE Datum_bis = ''") adapter.execute("UPDATE [bsstxt] SET [Zeit_von] = NULL WHERE Zeit_von = ''") adapter.execute("UPDATE [bsstxt] SET [Zeit_bis] = NULL WHERE Zeit_bis = ''") End Function

Allerdings funkioniert das nur, wenn ich das ganze im Testlauf ausführe.
Sobald ich den Haken Testlauf entferne wird der Code anscheinend nicht ausgeführt

???????

Gruß

HaPe

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
11 Jahre 6 Monate her #1317 von FlowHeater-Team
FlowHeater-Team antwortete auf Aw: Mehrere DateTIme-Felder auf Wert prüfen
Hallo Herr Bruns,

ich kann das verhalten mit SQLite nachstellen. Allerdings werden die UPDATE Statements anscheinend immer erst nach dem abgreifen in die SQLite Datenbank geschrieben. Somit erhalten Sie das aktualisierte Ergebnis erst nach dem 2. Aufruf. Hier scheint das SQLite cacheing dafür verantwortlich zu sein, das muss ich etwas genauer prüfen.

Workaround 1) Verwenden zu Zugriff auf SQLite den FlowHeater SQLiteAdapter ? Wenn ja können Sie den Datentypen der betroffenen DATE, TIME bzw. DATETIME Felder auf String stellen und den oben erwähnten Trick mit dem Default Wert verwenden. Damit hier eingetragen Zeit bzw. Datumsangaben richtig erkannt werden müssen Sie auf der READ Seite lediglich das Format für Datumsangaben so anpassen wie Sie bei Ihnen in der SQLite Datenbank gespeichert werden.

Workaround 2) Sie können das Update über eine zweite vorgeschaltete Dummy Definition durchführen. So kann SQL den cache sauber in die Datenbank schreiben, beim eigentlichen Aufruf der zweiten Definition greifen Sie dann die richtigen Daten ab.

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.

  • Hans-Peter Bruns
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
11 Jahre 6 Monate her #1318 von Hans-Peter Bruns
Hans-Peter Bruns antwortete auf Aw: Mehrere DateTIme-Felder auf Wert prüfen
Hallo Herr Stark

vielen Dank für die Info. Ich teste das mal.
Aber eine Frage habe ich noch. Kann man die Reihenfolge der Heater irgendwie beeinflussen?

Gruß

HaPe

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
11 Jahre 6 Monate her #1323 von FlowHeater-Team
FlowHeater-Team antwortete auf Aw: Mehrere DateTIme-Felder auf Wert prüfen
Hallo Herr Bruns,

die Reihenfolge der normalen Heater / Funktionen können Sie nicht beeinflussen, die richtet sich nach unterschiedlichen Kriterien so dass die Ausführung anhand von Abhängigkeiten passt.

Wenn Sie mehrere Heater haben die beim Start bzw. am Ende ausgeführt werden sollen können Sie Einfluss auf die Ausführung nehmen anhand der Reihenfolge wie sie auf dem Designer gezogen werden. Im Nachhinein können Sie die Reihenfolge z.Zt. nicht mehr ändern sowie wird die Reichenfolge auch nicht weiter angezeigt. Den Punkt habe ich für eine zukünftige Version mit aufgenommen.

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.

  • Hans-Peter Bruns
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
11 Jahre 6 Monate her #1325 von Hans-Peter Bruns
Hans-Peter Bruns antwortete auf Aw: Mehrere DateTIme-Felder auf Wert prüfen
Hallo Herr Stark

Das hatte ich mir schon gedacht. Ich habe versucht, die Reihenfolge der Heater in der fhd-Datei zu ändern. Das "scheint" zu funktionieren. Habe es aber noch nicht ausführlich getestet

Gruß
HaPe

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
11 Jahre 6 Monate her #1335 von StefanN
Hallo,

wenn Sie einen SQl-Server ab Version 2008 einsetzen, können Sie den Datentyp "DateTime2(7)" verwenden.
siehe auch
DateTime2_01 (Link auf msdn von Microsoft)
DateTime2_02 (Tabelle in der Mitte ist interessant)

Den Code habe ich so verstanden, dass auf die Quelltabelle die Update-Statements gehen oder? (Gibt es da keine Funktion "flush" oder so?)
oder passen Sie doch in C#-Code die DataTable an nachdem die Daten gelsen wurden und prüfen die Datumsfelder, die an den Flowheater übergeben wird, wenn Sie es sowieso den Adapter programmieren.

mfg
Stefan Neubauer

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
11 Jahre 6 Monate her #1337 von FlowHeater-Team
FlowHeater-Team antwortete auf Aw: Mehrere DateTIme-Felder auf Wert prüfen
Hallo Herr Neubauer,

in dieser Anfrage ging es um den Export einer SQlite 3 Datenbank die dann in eine SQL Server Datenbank importiert werden sollte. Das eigentliche Problem mit dem Datum ist hier, dass SQlite die Datentypen DATE, TIME bzw. DATETIME nicht kennt. Diese werden hier als Text gespeichert. Einen eigenen Adapter über den .NET DataTable Adapter dafür zu schreiben halte ich in diesem Fall für etwas übertrieben :)

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.

Mehr
11 Jahre 6 Monate her #1338 von StefanN
Hallo Herr Stark,

auf den "eigenen" Adapter bin ich nur gekommen, da Herr Bruns im Kommentar #1342 etwas von .Net-Code sagte und dort im Quellcode von einem "adapter" die Rede ist.

Gruß Stefan

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.313 Sekunden
FlowHeater Logo

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.