紧急求助个简单的问题:VB中我记得有个函数,能够判断一个值,如果为空可以赋一个默认值

时间:2021-07-06 05:20:54
紧急求助个简单的问题:VB中我记得有个函数,能够判断一个值,如果为空可以赋一个默认值
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一个了,但语法不是你所说的那样.

我想来想去只想到了这个.

不知道楼主想干嘛?

是做题吗?

如果不是,不知道为什么放着其它实现方式不用而非得钻这个牛角尖.

#9


是不是 sql中的  nvl(,)哦

#10


  查了一下有关资料,LZ可以参考下面的这个定义语句:
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 & ""

#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

#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一个了,但语法不是你所说的那样.

我想来想去只想到了这个.

不知道楼主想干嘛?

是做题吗?

如果不是,不知道为什么放着其它实现方式不用而非得钻这个牛角尖.

#9


是不是 sql中的  nvl(,)哦

#10


  查了一下有关资料,LZ可以参考下面的这个定义语句:
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 & ""

#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

#15


多谢各位!
结帐~~