变量中的缺失值

Posted

技术标签:

【中文标题】变量中的缺失值【英文标题】:Missing value from variable 【发布时间】:2013-05-23 19:52:41 【问题描述】:

我正在尝试在具有经典 ASP/VBScript 的站点上使用 <option> 填充 <select>。这些值是从 SQL Server 数据库读取和获取的,其代码类似于:

SET rows = dbc.execute(SQL)
    IF NOT rows.EOF THEN
        DO WHILE NOT rows.EOF
             %>  
                <option value="<%=rows("specialty")%>"><%=rows("specialty")%></option>
             <%    
             rows.moveNext
        LOOP
    ELSE    
END IF

rows.close
SET rows = NOTHING

我的问题是&lt;%=rows("specialty")%&gt; 似乎只有一侧在评估。

&lt;option value="&lt;%=rows("specialty")%&gt;"&gt;&lt;%=rows("specialty")%&gt;&lt;/option&gt; 我得到:

<option value="fromRow1"></option>
<option value="fromRow2"></option>
<option value="fromRow3"></option>

&lt;option value="test"&gt;&lt;%=rows("specialty")%&gt;&lt;/option&gt; 我得到:

<option value="test">fromRow1</option>
<option value="test">fromRow2</option>
<option value="test">fromRow3</option>

应该怎么做才能缓解这个问题?

【问题讨论】:

【参考方案1】:

试试这个:

Dim a
Do while not rows.Eof
    a = rows.Collect("specialty")
    Response.Write("<option value=""" & Replace(a, """", "&quot;") & """>" & a & "</option>")
    rows.MoveNext
Loop

【讨论】:

它是 ADODB.Recordset 中的隐藏方法。它类似于 Field.Value 属性,但总是返回字符串类型,并且比 Field.Value 快得多。您可以谷歌或查看链接devx.com/vb2themax/Tip/18501 从来不知道.Collect() 非常有趣,这似乎解决了问题!谢谢!【参考方案2】:

specialty 的数据类型是什么?

试试这个:

    DO WHILE NOT rows.EOF
    specialty = rows("specialty")
         %>  
            <option value="<%=specialty%>"><%=specialty%></option>
         <%    
         rows.moveNext
    LOOP

【讨论】:

这确实是最可能的原因,某些字段类型在第一次读取后会变为空白。【参考方案3】:

试试这个:

<option value='<%=rows("specialty")%>'><%=rows("specialty")%></option>

它可能会与双引号混淆。但是我已经有一段时间没有在 Classic ASP 中工作了

【讨论】:

以上是关于变量中的缺失值的主要内容,如果未能解决你的问题,请参考以下文章

R的randomForest包中的缺失值错误

dplyr 变异()。变异一个变量的问题,取决于匹配由matches()选择的特定名称的其他列中的非缺失值

数据分析缺失值处理(Missing Values)——删除法填充法插值法

用计算值替换缺失值

包含缺失值的分类、数字和“不需要”变量的混合的随机森林

R: 缺失值 & 查看变量类型