- Beiträge: 17
Mehrere DateTIme-Felder auf Wert prüfen
- Hans-Peter Bruns
- Autor
- Offline
- Benutzer
Weniger
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
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.
- FlowHeater-Team
- Offline
- Administrator
11 Jahre 6 Monate her #1313
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: 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.
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
Weniger
Mehr
- Beiträge: 17
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.
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
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.
- FlowHeater-Team
- Offline
- Administrator
11 Jahre 6 Monate her #1317
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: 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.
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
Weniger
Mehr
- Beiträge: 17
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
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.
- FlowHeater-Team
- Offline
- Administrator
11 Jahre 6 Monate her #1323
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: 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.
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
Weniger
Mehr
- Beiträge: 17
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
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.
- StefanN
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 7
11 Jahre 6 Monate her #1335
von StefanN
StefanN antwortete auf Aw: Mehrere DateTIme-Felder auf Wert prüfen
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
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.
- FlowHeater-Team
- Offline
- Administrator
11 Jahre 6 Monate her #1337
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: 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
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.
- StefanN
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 7
11 Jahre 6 Monate her #1338
von StefanN
StefanN antwortete auf Aw: Mehrere DateTIme-Felder auf Wert prüfen
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
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