如何在ASP中测试空SQL结果

时间:2008-11-25 13:59:42

标签: mysql asp-classic ado

我正在使用MySQL数据库从ASP运行查询,我想根据结果创建一个变量(ssResult)和一个人的姓名(fullname),如果记录不存在我想分配文本'N / A'变量,下面的代码,我目前使用函数getOther作为我的数据库连接,它传递列名“fullname”:

ssResult = getOtherElse("SELECT fullname FROM table WHERE id=" & inArr(j), "fullname")

以下是函数getOtherElse的代码,它仅在返回结果时有效,但在结果为空时不起作用:

Function getOtherElse(inSQL, getColumn)
    Dim conn, rstemp
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.open myDSN
    Set Session("lp_conn") = conn
    Set rstemp = Server.CreateObject("ADODB.Recordset")
    rstemp.Open inSQL, conn 
    if not rstemp.eof then
        rstemp.movefirst
        getOtherElse=rstemp.fields(getColumn)
    else
        getOtherElse="N/A"
    end if
    rstemp.close
    set rstemp=nothing
    conn.close
    set conn=nothing
End Function

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以尝试更改行

if not rstemp.eof then

if rstemp.RecordCount > 0 then

答案 1 :(得分:0)

为什么不将SQL更改为仅使用名字拉出结果,这样“N / A”将适用:

sResult = getOtherElse("SELECT fullname FROM table WHERE id=" & inArr(j), "fullname AND fullname<>''")

答案 2 :(得分:0)

替换此代码块:

if not rstemp.eof then
    rstemp.movefirst
    getOtherElse=rstemp.fields(getColumn)
else
    getOtherElse="N/A"
end if

使用此代码块:

Dim output
output = "N/A"

If Not rstemp.eof Then
    rstemp.movefirst
    value = rstemp.fields(getColumn)

    If trim(value) = "" Then
        value = "N/A"
    End If
End If

getOtherElse = value

上面的代码总是假设没有返回任何内容,直到连接实际将其设置为返回。然后检查该值是否为空字符串,并将该值也设置为“N / A”