变量中的缺失值
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
我的问题是<%=rows("specialty")%>
似乎只有一侧在评估。
<option value="<%=rows("specialty")%>"><%=rows("specialty")%></option>
我得到:
<option value="fromRow1"></option>
<option value="fromRow2"></option>
<option value="fromRow3"></option>
<option value="test"><%=rows("specialty")%></option>
我得到:
<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, """", """) & """>" & 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 中工作了
【讨论】:
以上是关于变量中的缺失值的主要内容,如果未能解决你的问题,请参考以下文章
dplyr 变异()。变异一个变量的问题,取决于匹配由matches()选择的特定名称的其他列中的非缺失值