Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将日期变量设置为null_Sql_Vb.net - Fatal编程技术网

Sql 将日期变量设置为null

Sql 将日期变量设置为null,sql,vb.net,Sql,Vb.net,如果未选中chk,是否有任何方法将dtIzvrsenja的值设置为null 使用其他提到的方式进行编辑 {“可空对象必须有一个值。”} 使用可为空的: Dim dtIzvrsenja2 As DateTime? = Nothing dtIzvrsenja = dtIzvrsenja2 使用可为空的: Dim dtIzvrsenja2 As DateTime? = Nothing dtIzvrsenja = dtIzvrsenja2 您还

如果未选中chk,是否有任何方法将dtIzvrsenja的值设置为null

使用其他提到的方式进行编辑

{“可空对象必须有一个值。”}


使用可为空的

  Dim dtIzvrsenja2 As DateTime? = Nothing
            dtIzvrsenja = dtIzvrsenja2

使用可为空的

  Dim dtIzvrsenja2 As DateTime? = Nothing
            dtIzvrsenja = dtIzvrsenja2

您还可以使用问号(可为空)说明符,尽管这可能已经过时了

Dim nullableDateValue As New Nullable(Of Date) = Nothing

您还可以使用问号(可为空)说明符,尽管这可能已经过时了

Dim nullableDateValue As New Nullable(Of Date) = Nothing

为了支持这一点,您需要使用泛型的
null(Of Date)
类型,而不仅仅是
Date
DateTime
类型的VB别名)。通常,只有引用类型变量(
Class
type变量)支持空值。由于
Date
是一个值类型变量(
Structure
),因此它不支持null
Nullable(Of T)
允许您包装任何值类型,并向该类型添加对null值的支持

在VB中(顺便说一下,在C#中也是如此),任何类型名称后面的问号都是使类型可为空的缩写。因此,
Date?
相当于
null(日期)
。下面是使用nullables的示例代码:

Dim dtIzvrsenja作为日期?
私有子chkDate_CheckedChanged(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理chkDate.CheckedChanged
如果Me.chkDate.Checked那么
Me.dtpDate.CustomFormat=“dd.MM.yyyy”
Me.dtpDate.Enabled=True
dtIzvrsenja=dtpdate.value
其他的
Me.dtpDate.CustomFormat=“”
Me.dtpDate.Enabled=False
dtIzvrsenja=无
如果结束
端接头
然而,
Nullable(Of T)
令人困惑的是,它本身不是引用类型
Nullable(Of T)
是一种值类型。因此,即使是
null(日期)
变量在传统意义上也不能设置为null。
Nullable(Of T)
的作用是添加一个
HasValue As Boolean
属性,允许您检查值是否为null。因此,当您读取变量的值时,而不是首先检查变量
是否为空
,而是需要检查它的
HasValue
属性是否为真。例如:

如果dtIzvrsenja.HasValue那么
Dim dtIzvrsenja2 As Date=dtIzvrsenja.Value
' ...
如果结束
如果确实希望将
日期
类型视为实际引用类型,则可以通过将变量
声明为对象
来实现
Object
变量始终是引用变量,因此当设置为
Nothing
时,它们实际上被设置为null。当您将
对象
变量设置为值类型值(例如
日期
)时,它会将该值框起来。当您读取它的值并将其转换回日期时,它将经历一个称为取消装箱的过程。然而,这个装箱/拆箱过程确实增加了一些开销。另外,另一个缺点是编译时将跳过使用
对象
变量的代码的类型检查。这意味着,如果您不小心,如果变量引用的对象类型与您期望的不同,则在运行时可能会出现一些异常。您可以通过声明自己的类来避免类型检查问题:

公共类日期引用
截至日期的公共财产价值
末级
或:

公共类参考(共T个)
公共财产价值
末级
然而,这似乎很愚蠢
Nullable(Of T)
已经达到了这个目的,所以除非您真的需要将其作为一个引用类型,否则我建议您花点时间来熟悉使用它的标准方法


作为旁注,另一个在这方面进一步引起混淆的复杂因素是VB的
Nothing
关键字并不是严格意义上的null。它只是指任何类型的deafult值。因此,对于
整数
等于值零。对于
Date
,它意味着
Date.MinValue
,等等。

为了支持这一点,您需要使用泛型
Nullable(Of Date)
类型,而不仅仅是
Date
(用于
DateTime
类型的VB别名)。通常,只有引用类型变量(
Class
type变量)支持空值。由于
Date
是一个值类型变量(
Structure
),因此它不支持null
Nullable(Of T)
允许您包装任何值类型,并向该类型添加对null值的支持

在VB中(顺便说一下,在C#中也是如此),任何类型名称后面的问号都是使类型可为空的缩写。因此,
Date?
相当于
null(日期)
。下面是使用nullables的示例代码:

Dim dtIzvrsenja作为日期?
私有子chkDate_CheckedChanged(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理chkDate.CheckedChanged
如果Me.chkDate.Checked那么
Me.dtpDate.CustomFormat=“dd.MM.yyyy”
Me.dtpDate.Enabled=True
dtIzvrsenja=dtpdate.value
其他的
Me.dtpDate.CustomFormat=“”
Me.dtpDate.Enabled=False
dtIzvrsenja=无
如果结束
端接头
然而,
Nullable(Of T)
令人困惑的是,它本身不是引用类型
Nullable(Of T)
是一种值类型。因此,即使是
null(日期)
变量在传统意义上也不能设置为null。
Nullable(Of T)
的作用是添加一个
HasValue As Boolean
属性,允许您检查值是否为null。因此,当您读取变量的值时,而不是首先检查变量
是否为空
,而是需要检查它的
HasValue
属性是否为真。例如:

如果dtIzvrsenja.HasValue那么
作为Da的Dim dtIzvrsenja2