This was an Objo limitation rather than an error in your database code. A DateTimePicker defaults to today, but there was no way to replace that default with an empty selection.
This has been fixed for the next release: https://feedback.objo.dev/bug/1275
Assigning DateTime.Empty will now clear the picker, and reading an empty picker’s SelectedDate will return DateTime.Empty.
Update your code to handle both cases explicitly:
ElseIf a_controls[x] IsA DateTimePicker Then
Var dtp As DateTimePicker = DateTimePicker(a_controls[x])
If x_value.Length > 0 Then
dtp.SelectedDate = DateTime.Parse(x_value)
Else
dtp.SelectedDate = DateTime.Empty
End If
The default for a newly created DateTimePicker remains today; it only becomes blank when you explicitly assign DateTime.Empty.