一、项目背景
在国土三调现状数据库中,地类图斑图层和城镇村范围是两个独立的图层,二者合并后会有字段名不统一的问题,如:合并后的三大类字段部分为空。为解决此问题,可采用如下办法(vb语法编写):
逻辑思路:如果三大类字段中不为空,新字段按三大类字段,如果三大类字段为空,说明此图斑为城镇村范围内,新字段按“建设用地”。
二、涉及VB语法(Null和Empty)
在VB(Visual Basic)中,是两个具有不同含义的特殊值,它们用于表示变量或表达式的不同状态。以下是它们的详细区别:
一、定义与用途
Null 定义:Null是一个特殊的值,表示一个变量或表达式不包含有效的数据。它通常用于数据库编程中,以表示未知或缺失的数据。 用途:当一个变量或表达式被赋值为Null时,它表示该变量或表达式没有被初始化或没有有效的值。在VB中,如果一个变量的值为Null,尝试对其调用方法或属性可能会导致错误,因为Null不是一个有效的数据类型,它没有任何方法或属性可用。 判断:可以使用IsNull函数来判断一个表达式是否为Null。例如:If IsNull(myVariable) Then ...。 Empty 定义:Empty也是一个特殊的值,但它用于表示一个还没有被初始化的变量。它通常用于Variant类型的变量中。 用途:Empty是Variant变量定义后的默认值,表示该变量尚未被赋予任何值。与Null不同,Empty并不表示数据缺失或未知,而只是表示变量尚未初始化。 运算行为:当Empty参与数值运算时,它被视为0;当参与字符串运算时,它被视为空字符串("");当参与布尔条件运算时,它被视为False。 判断:可以使用IsEmpty函数来判断一个变量是否为Empty。但请注意,IsEmpty函数只对Variant类型的变量返回有意义的信息。例如:If IsEmpty(myVariant) Then ...。
二、主要区别
数据类型: Null可以赋给任何变量类型(但通常用于Variant类型),表示该变量没有有效的数据。 Empty主要用于Variant类型的变量,表示该变量尚未被初始化。 运算行为: Null在参与运算时,通常会导致整个表达式的结果为Null(除非在特定的数据库查询或函数中有特殊处理)。 Empty在参与数值、字符串或布尔条件运算时,有明确的替代值(0、""、False)。 判断方法: 使用IsNull函数来判断一个表达式是否为Null。 使用IsEmpty函数来判断一个Variant类型的变量是否为Empty。
三、注意事项
在VB中,尝试对Null值调用方法或属性会导致错误,因为Null不是一个有效的数据类型。因此,在访问Null值之前,应该使用IsNull函数进行检查。 Empty值在参与运算时会自动转换为相应的替代值(0、""、False),这有助于避免在代码中处理未初始化变量时出现错误。 综上所述,Null和Empty在VB中具有不同的定义、用途和运算行为。了解它们的区别有助于在编程中正确处理这两种特殊值。
三、实例应用
三大类字段为空的情况(包含null和empty两种类型)语法为:case IsNullOrEmpty
代码如下:
Dim density
''三大类合并城镇村:by qq:443440204
''说明:此代码按土地报批要求,043 和0404 荒草地归类为农用地,如依据三调工作分类,需手工更正到未利用地
select case [三大类]
case IsNullOrEmpty
density ="建设用地"
case else
density=[三大类]
end select
结果如下:全部字段完成录入。
同理,一级类合并代码如下:
Dim density
''一级类合并城镇村:by qq:443440204
''说明:此代码按土地报批要求,043 和0404 荒草地归类为农用地,如依据三调工作分类,需手工更正到未利用地
select case [CZCLX]
case IsNullOrEmpty
density =[一级类]
case else
density=[CZCLX]
end select