有没有简单的方法来检查或防止“空”呢?

ztyzrc3y  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(393)

我从mysql服务器中提取一个大记录集,并根据字段位置在excel vba例程中分配一组变量,例如:

x = MyRecordset.Fields(0).Value
y = MyRecordset.Fields(1).Value
' etc...

这只会在其中一个值为null时引发错误,因为vba不允许字符串为null。我有一个问题要问双方,vba和mysql方面,以防vba方面崩溃:
vba:我正在使用 On Error Resume Next 要跳过空错误-有没有更好/更正式的方法来实现这一点?是否跳过此错误以减慢代码速度?
mysql:有没有办法防止“null”被发送,例如在我的数据库中用空字符串快速替换null示例 SELECT 声明?

vmdwslir

vmdwslir1#

使用这样的函数

Option Explicit

Function rcdString(rcdField As Variant) As String

    If IsNull(rcdField) Then
        rcdString = ""
    Else
        rcdString = rcdField.Value
    End If

End Function

x = rcdString(MyRecordset.Fields(0))
kknvjkwl

kknvjkwl2#

如何做到这一点:
1-在vba侧
如果我没有错的话,已经有一个vba函数可以将空值转换为默认值。对你来说那就是

Nz(MyRecordset.Fields(1).Value,"")

如果字段值为空,则返回长度为零的字符串。
2-在mysql端
您可以使用coalesce函数,该函数返回其参数列表中的第一个非空值。您的选择将如下所示:

SELECT COALESCE(myFieldName,'')
aelbi1ox

aelbi1ox3#

如果我没记错的话,如果有一个变量可能为null,连接一个空字符串将把变量变成一个空字符串,而对任何其他值都没有影响。但这可能不适用于ado记录集

x = MyRecordset.Fields(0).Value & ""

相关问题