1

我使用以下代码从数据库中检索值:

if( !rs.bof ){
     rs.MoveFirst();
     while ( !rs.eof ){
        output.innerHTML += rs.fields( "Name" ) + ","
        output.innerHTML += rs.fields( "Address" ) + "<br>"
        rs.MoveNext();
    }
}

但是如果地址为空,那么它会写:

Sherlock Holmes, 221B Baker Street
James Moriarty, null

我试过使用:

if( rs.fields( "Address" ) != null && rs.fields( "Address" ) != "" )

我应该怎么做才能使空值显示为空字符串?

4

5 回答 5

2

尝试这个:

if( !rs.bof ){
     rs.MoveFirst();
     while ( !rs.eof ){
        output.innerHTML += (rs.fields( "Name" ) || "") + ","
        output.innerHTML += (rs.fields( "Address" ) || "") + "<br>"
        rs.MoveNext();
    }
}

使用逻辑Or将其更改为空字符串

于 2012-06-30T12:04:55.470 回答
0

尝试这个:

if( !rs.bof ){
     rs.MoveFirst();
     while ( !rs.eof ){
        var name=  (rs.fields( "Name" ) === null)?"":rs.fields( "Name" );
        var address=  (rs.fields( "Address" ) === null)?"":rs.fields( "Address" );
        output.innerHTML += name + ","
        output.innerHTML += address + "<br>"
        rs.MoveNext();
    }
}
于 2012-06-30T12:33:48.683 回答
0

像这样修改代码

if( !rs.bof ){
     rs.MoveFirst();
     while ( !rs.eof ){
        var name = rs.fields( "Name" ) ;
        var address = rs.fields( "Address" ) ;
        output.innerHTML += (name == null ) ? "" : name  ;
        output.innerHTML += (address == null ) ? "" : address + "<br>" ;
        rs.MoveNext();
    }
}
于 2012-06-30T12:03:38.293 回答
0

编写一个辅助函数来保持整洁:

function field_maybe(rs, fname) {
    return rs.fields(fname) || "";
}

...

if( !rs.bof ){
     rs.MoveFirst();
     while ( !rs.eof ){
        output.innerHTML += field_maybe(rs, "Name") + ","
        output.innerHTML += field_maybe(rs, "Address") + "<br>"
        rs.MoveNext();
    }
}
于 2012-06-30T12:09:28.480 回答
0

这是一个相当古老的话题/问题,但我实际上遇到了同样的问题,并且非常确定我以前做过这个。这些答案似乎都不适合实际问题。

问题是 rs.fields( "Address" ) 永远不会评估为 null 或 false。

因此,如果我们采用 OPs 评估声明:

if( rs.fields( "Address" ) != null && rs.fields( "Address" ) != "" )

它确实总是会出现。相反,您需要检查值:

if(rs.fields( "Address" ).value){...}

如果没有,它将返回 false,不像其他解决方案都遇到相同的问题,它总是评估为 true。

希望它可以帮助其他遇到这个小问题的人。:)

于 2016-12-16T20:28:46.073 回答