VB中我记得有个函数,能够判断一个值,如果为空可以赋一个默认值,
这个函数是什么啊,我怎么也想不起来了,请各位指点一下!
15 个解决方案
#1
dim Val as string
Val=iif(len(Val)=0,"dfvgsdf",Val)
#2
不是这个
我记得有一个函数来,用法是这样的:
函数名(表达式,默认值)
我记得有一个函数来,用法是这样的:
函数名(表达式,默认值)
#3
Format$函数
#4
使用Null 或者 Nothing 这两个关键字,可以完成你的愿望。还有以is打头的函数,都能判断什么东西是否为空。例如:IsEmpty
判断为空后,吧你的默认数值赋上去就行。
至于您说的判断完后自动赋值的函数,我一时还没找到。
判断为空后,吧你的默认数值赋上去就行。
至于您说的判断完后自动赋值的函数,我一时还没找到。
#5
真的没有么,我好象看到过啊
再等等看吧
谢谢各位!
再等等看吧
谢谢各位!
#6
就一楼的IIF函数就可以
#7
那四sql里的语句吧?IsNull(a,1) 如果a为空,则a=1
#8
"如果为空可以赋一个默认值"
VB里面有"默认值"参数的函数貌似只有GetSetting一个了,但语法不是你所说的那样.
我想来想去只想到了这个.
不知道楼主想干嘛?
是做题吗?
如果不是,不知道为什么放着其它实现方式不用而非得钻这个牛角尖.
VB里面有"默认值"参数的函数貌似只有GetSetting一个了,但语法不是你所说的那样.
我想来想去只想到了这个.
不知道楼主想干嘛?
是做题吗?
如果不是,不知道为什么放着其它实现方式不用而非得钻这个牛角尖.
#9
是不是 sql中的 nvl(,)哦
#10
查了一下有关资料,LZ可以参考下面的这个定义语句:
某个参数使用了“Optional”关键字之后,后续的所有参数都必须使用“Optional”关键字。
参数默认值可选的。任何常数或常数表达式。如果类型为 Object,则显式缺省值只能是 Nothing。
希望能够对你有帮助!
Sub MySub(iParam1 As Integer, Optional iParam2 As Integer = 3, Optional sParam As String = "AAA")
MsgBox "测试默认参数:" & sParam, 64
End Sub
某个参数使用了“Optional”关键字之后,后续的所有参数都必须使用“Optional”关键字。
参数默认值可选的。任何常数或常数表达式。如果类型为 Object,则显式缺省值只能是 Nothing。
希望能够对你有帮助!
#11
Trim()+if呵呵也应该可以吧..
#12
if都不用。直接在后面加个空字符串就可以了:
A=RECORDSET.FIELDS(0).VALUE & ""
A=RECORDSET.FIELDS(0).VALUE & ""
#13
为空?默认?没听说
#14
这个问题没有楼主说的那么简单,一个函数完成不了,需要先判断变量类型,然后根据不同类型再作不同的判断,比如:
Function MyIsEmpty(ByVal vSrc) As Boolean
MyIsEmpty = False
If IsObject(vSrc) Then
If vSrc Is Nothing Then
Debug.Print "Object类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If IsEmpty(vSrc) Then
Debug.Print "Variant类型变量未初始化"
MyIsEmpty = True
Exit Function
End If
If IsNull(vSrc) Then '此类型为特例,只在ADO查询中出现
Debug.Print "Fields变量未初始化"
MyIsEmpty = True
Exit Function
End If
'注意,在VB里所有变量(除Object和Variant外),都会自动进行初始化
'如数值型初始化为0,字符型初始化为"",日期型初始化为"0:00:00"
If IsNumeric(vSrc) Then '如果使用了Optional更改初始化值,则程序需作修改
If vSrc = 0 Then
Debug.Print "Numeric类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If IsDate(vSrc) Then
If vSrc = "0:00:00" Then
Debug.Print "Date类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If TypeName(vSrc) = "String" Then 'VB字符串有两种形式,一是不定长,二是定长(如 Dim s As String*100)
'先处理不定长字符串
If InStr(vSrc, Chr(0)) = 0 Then
If Len(vSrc) = 0 Then
Debug.Print "String类型变量未初始化"
MyIsEmpty = True
End If
Else '然后处理定长字符串,由于VB字符串实际为BSTR,所以只能遍历所有字符来判断是否为空
If vSrc = String(Len(vSrc), Chr(0)) Then
Debug.Print "String类型变量未初始化"
MyIsEmpty = True
End If
End If
Exit Function
End If
'其它类型未加考虑(如自定义类型和API结构)
End Function
Function MyIsEmpty(ByVal vSrc) As Boolean
MyIsEmpty = False
If IsObject(vSrc) Then
If vSrc Is Nothing Then
Debug.Print "Object类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If IsEmpty(vSrc) Then
Debug.Print "Variant类型变量未初始化"
MyIsEmpty = True
Exit Function
End If
If IsNull(vSrc) Then '此类型为特例,只在ADO查询中出现
Debug.Print "Fields变量未初始化"
MyIsEmpty = True
Exit Function
End If
'注意,在VB里所有变量(除Object和Variant外),都会自动进行初始化
'如数值型初始化为0,字符型初始化为"",日期型初始化为"0:00:00"
If IsNumeric(vSrc) Then '如果使用了Optional更改初始化值,则程序需作修改
If vSrc = 0 Then
Debug.Print "Numeric类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If IsDate(vSrc) Then
If vSrc = "0:00:00" Then
Debug.Print "Date类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If TypeName(vSrc) = "String" Then 'VB字符串有两种形式,一是不定长,二是定长(如 Dim s As String*100)
'先处理不定长字符串
If InStr(vSrc, Chr(0)) = 0 Then
If Len(vSrc) = 0 Then
Debug.Print "String类型变量未初始化"
MyIsEmpty = True
End If
Else '然后处理定长字符串,由于VB字符串实际为BSTR,所以只能遍历所有字符来判断是否为空
If vSrc = String(Len(vSrc), Chr(0)) Then
Debug.Print "String类型变量未初始化"
MyIsEmpty = True
End If
End If
Exit Function
End If
'其它类型未加考虑(如自定义类型和API结构)
End Function
#15
多谢各位!
结帐~~
结帐~~
#1
dim Val as string
Val=iif(len(Val)=0,"dfvgsdf",Val)
#2
不是这个
我记得有一个函数来,用法是这样的:
函数名(表达式,默认值)
我记得有一个函数来,用法是这样的:
函数名(表达式,默认值)
#3
Format$函数
#4
使用Null 或者 Nothing 这两个关键字,可以完成你的愿望。还有以is打头的函数,都能判断什么东西是否为空。例如:IsEmpty
判断为空后,吧你的默认数值赋上去就行。
至于您说的判断完后自动赋值的函数,我一时还没找到。
判断为空后,吧你的默认数值赋上去就行。
至于您说的判断完后自动赋值的函数,我一时还没找到。
#5
真的没有么,我好象看到过啊
再等等看吧
谢谢各位!
再等等看吧
谢谢各位!
#6
就一楼的IIF函数就可以
#7
那四sql里的语句吧?IsNull(a,1) 如果a为空,则a=1
#8
"如果为空可以赋一个默认值"
VB里面有"默认值"参数的函数貌似只有GetSetting一个了,但语法不是你所说的那样.
我想来想去只想到了这个.
不知道楼主想干嘛?
是做题吗?
如果不是,不知道为什么放着其它实现方式不用而非得钻这个牛角尖.
VB里面有"默认值"参数的函数貌似只有GetSetting一个了,但语法不是你所说的那样.
我想来想去只想到了这个.
不知道楼主想干嘛?
是做题吗?
如果不是,不知道为什么放着其它实现方式不用而非得钻这个牛角尖.
#9
是不是 sql中的 nvl(,)哦
#10
查了一下有关资料,LZ可以参考下面的这个定义语句:
某个参数使用了“Optional”关键字之后,后续的所有参数都必须使用“Optional”关键字。
参数默认值可选的。任何常数或常数表达式。如果类型为 Object,则显式缺省值只能是 Nothing。
希望能够对你有帮助!
Sub MySub(iParam1 As Integer, Optional iParam2 As Integer = 3, Optional sParam As String = "AAA")
MsgBox "测试默认参数:" & sParam, 64
End Sub
某个参数使用了“Optional”关键字之后,后续的所有参数都必须使用“Optional”关键字。
参数默认值可选的。任何常数或常数表达式。如果类型为 Object,则显式缺省值只能是 Nothing。
希望能够对你有帮助!
#11
Trim()+if呵呵也应该可以吧..
#12
if都不用。直接在后面加个空字符串就可以了:
A=RECORDSET.FIELDS(0).VALUE & ""
A=RECORDSET.FIELDS(0).VALUE & ""
#13
为空?默认?没听说
#14
这个问题没有楼主说的那么简单,一个函数完成不了,需要先判断变量类型,然后根据不同类型再作不同的判断,比如:
Function MyIsEmpty(ByVal vSrc) As Boolean
MyIsEmpty = False
If IsObject(vSrc) Then
If vSrc Is Nothing Then
Debug.Print "Object类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If IsEmpty(vSrc) Then
Debug.Print "Variant类型变量未初始化"
MyIsEmpty = True
Exit Function
End If
If IsNull(vSrc) Then '此类型为特例,只在ADO查询中出现
Debug.Print "Fields变量未初始化"
MyIsEmpty = True
Exit Function
End If
'注意,在VB里所有变量(除Object和Variant外),都会自动进行初始化
'如数值型初始化为0,字符型初始化为"",日期型初始化为"0:00:00"
If IsNumeric(vSrc) Then '如果使用了Optional更改初始化值,则程序需作修改
If vSrc = 0 Then
Debug.Print "Numeric类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If IsDate(vSrc) Then
If vSrc = "0:00:00" Then
Debug.Print "Date类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If TypeName(vSrc) = "String" Then 'VB字符串有两种形式,一是不定长,二是定长(如 Dim s As String*100)
'先处理不定长字符串
If InStr(vSrc, Chr(0)) = 0 Then
If Len(vSrc) = 0 Then
Debug.Print "String类型变量未初始化"
MyIsEmpty = True
End If
Else '然后处理定长字符串,由于VB字符串实际为BSTR,所以只能遍历所有字符来判断是否为空
If vSrc = String(Len(vSrc), Chr(0)) Then
Debug.Print "String类型变量未初始化"
MyIsEmpty = True
End If
End If
Exit Function
End If
'其它类型未加考虑(如自定义类型和API结构)
End Function
Function MyIsEmpty(ByVal vSrc) As Boolean
MyIsEmpty = False
If IsObject(vSrc) Then
If vSrc Is Nothing Then
Debug.Print "Object类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If IsEmpty(vSrc) Then
Debug.Print "Variant类型变量未初始化"
MyIsEmpty = True
Exit Function
End If
If IsNull(vSrc) Then '此类型为特例,只在ADO查询中出现
Debug.Print "Fields变量未初始化"
MyIsEmpty = True
Exit Function
End If
'注意,在VB里所有变量(除Object和Variant外),都会自动进行初始化
'如数值型初始化为0,字符型初始化为"",日期型初始化为"0:00:00"
If IsNumeric(vSrc) Then '如果使用了Optional更改初始化值,则程序需作修改
If vSrc = 0 Then
Debug.Print "Numeric类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If IsDate(vSrc) Then
If vSrc = "0:00:00" Then
Debug.Print "Date类型变量未初始化"
MyIsEmpty = True
End If
Exit Function
End If
If TypeName(vSrc) = "String" Then 'VB字符串有两种形式,一是不定长,二是定长(如 Dim s As String*100)
'先处理不定长字符串
If InStr(vSrc, Chr(0)) = 0 Then
If Len(vSrc) = 0 Then
Debug.Print "String类型变量未初始化"
MyIsEmpty = True
End If
Else '然后处理定长字符串,由于VB字符串实际为BSTR,所以只能遍历所有字符来判断是否为空
If vSrc = String(Len(vSrc), Chr(0)) Then
Debug.Print "String类型变量未初始化"
MyIsEmpty = True
End If
End If
Exit Function
End If
'其它类型未加考虑(如自定义类型和API结构)
End Function
#15
多谢各位!
结帐~~
结帐~~