Hello all; I have an issue with a web application where it crashes silently either compiled or in the IDE. I narrowed it down to retrieving one specific piece of data from the database. The content of the field is null. Here is my code. I would expect it to catch the NilObjectException:
Try
Me.GroupeDate = DateTime.FromString(rs1.Column("groupedate").stringvalue,Locale.Current, TimeZone.Current) // fails here. Program exit, no error or exception.
Catch e As NilObjectException
Me.GroupeDate = DateTime.FromString("1899-12-31",Locale.Current, TimeZone.Current)
End Try
There must be something obvious that I am overlooking, but right now I can’t figure it out.
So, here it is . Ready to be enlightened! Thanks in advance!
Edit: Xojo 2019 R3.1, developed on Windows 10 X64.
Edit 2: I tried replacing NilObjectException with RuntimeException. Same behavior.
Edit 3: the workaround is simple: define a default date in the database (1899-12-31 in this case). But I would prefer to not do that. This is a different discussion.
seems to be a windows only bug
both of these hit the break statement just fine in 2019r3.1 on 10.14.6 here
Var db As New SQLiteDatabase
Call db.Connect
db.ExecuteSQL("CREATE TABLE test (id INTEGER NOT NULL PRIMARY KEY, adate DATE);")
db.ExecuteSQL("INSERT INTO test (id) VALUES (1);")
Var rs As RowSet = db.SelectSQL("SELECT * FROM test;")
If False
Dim c As DatabaseColumn = rs.Column("adate")
Var myDate As DateTime = DateTime.FromString(c.stringvalue,Locale.Current, TimeZone.Current)
else
Var myDate As DateTime = DateTime.FromString(rs.Column("adate").stringvalue,Locale.Current, TimeZone.Current)
End If
Break
Wayne, I am not using the construct that you suggest because I am just too lazy.
Incidently, the line where I force 1899-12-31 is not the issue. And yes I believe that this is a DateTime bug. The documentation states that DateTime should raise a RuntimeException if a string with a wrong format is provided to the FromString shared method. I would expect that a null date is a wrong format… So, I created <https://xojo.com/issue/58956>
In the mean time, I can work around the bug by testing that the string is not null before trying to create a date with it.
This reminds me to a bug couple of years ago. In my case it was the local timezone and the fact that on the server there simply was no local one (UTC) even when the underlaying System has defined one. I solved the problem in using UTC in all my my database time fields, maybe you check this first?
This is very interesting. I made a bug report on a similar bug on the Mac side: <https://xojo.com/issue/58879> . Unfortunately, I wasn’t able to reproduce the bug yet.