新手的简单ASP问题?在线等待.. (100分)

  • 主题发起人 主题发起人 dez_0609
  • 开始时间 开始时间
D

dez_0609

Unregistered / Unconfirmed
GUEST, unregistred user!
刚学ASP,请大家帮我看看这段代码错在哪里?
<td width="15%">
<% if rs("author")="" then
response.write "不祥"
else
response.write rs("author")
end if %>
</td>

整段代码如下:
<%
sub showContent
dim i
%>
<div align="center"><center><table border="1" cellspacing="0" width="94%" bgcolor="#F0F8FF" bordercolorlight="#4DA6FF" bordercolordark="#ECF5FF">
<tr>
<td width="26%" align="center" bgcolor="#0080C0"><font color="#FFFFFF"><strong>图书书名</strong></font></td>
<td width="12%" align="center" bgcolor="#0080C0"><font color="#FFFFFF"><strong>分类</strong></font></td>
<td width="15%" align="center" bgcolor="#0080C0"><font color="#FFFFFF"><strong>作者</strong></font></td>
<td width="25%" align="center" bgcolor="#0080C0"><font color="#FFFFFF"><strong>出版社</strong></font></td>
<td width="10%" align="center" bgcolor="#0080C0"><font color="#FFFFFF"><strong>出版年份</strong></font></td>
<td width="8%" align="center" bgcolor="#0080C0"><font color="#FFFFFF"><strong>状态</strong></font></td>
</tr>
<%for i=1 to currentcount%>
<tr>
<td width="26%" height="23"><p align="center"><%=rs("name")%></td>
<td width="12%"><%=rs("classname")%> </td>
<td width="15%">
<% if rs("author")="" then
response.write "不祥"
else
response.write rs("author")
end if %>
</td>
<td width="25%"><p align="center"><%=rs("concern")%></td>
<td width="10%"><p align="center"><%=rs("outdate")%></td>
<td width="8%"><p align="center"><%=rs("state")%></td>
</tr>
<% rs.movenext
if rs.EOF and rs.bof then
exit for
next
%>
</table>
</center></div>
<% end sub %>
 
原来是没有换行的原因,但所在的单元格如果rs("author")="" 或者rs("author")=null时怎么显示不出表格线呢?我所要求的“不祥”也显示不出来,为什么呢?各位前辈快帮帮忙啊
<% if rs("author")="" then

Response.Write "不祥"
else

Response.Write rs("author")
end if %>
 
从代码上看不出问题。
可以从二个方面找
一,这个问题可能是你的数据库字段的设置上,你检查一下是不是没有把字段设成"文本"。
二,也有可能你读的字段就不是你要读的那行,我的意思是可能是你其它代码上的指定条件有问题。
三,要不你就干脆在程序中做个值转换成文本,再检查它的字节长度,为0就写"不祥",不为0就写你的"author"的内容。不过这是个笨方法,一定管用,有时候我实在找不出毛病时就这样做。
 
VBScript的If写法如下
1
if...then
...
2
if...then
...else
...
3
if ...then
...
end if
4
if...then
...
else
...
end if
5
if...then
...
else
if...then
...
else
...
end if
 
你可以这样写
<% if trim(rs("author") &amp;
"") = "" then

Response.Write "不祥"
else

Response.Write rs("author")
end if %>
 
很感谢两位前辈,问题解决了,小弟不熟悉ASP,还有几个问题不明白?
to kifo
怎样转换成文本,是这样吗:trim(rs("author") &amp;
""),取长度用什么函数呀?length好象不行
to 东兰梦舞
if trim(rs("author") &amp;
"") = "",为什么要这样呢?这样if rs("author")= "",为什么又会出错呢?
 
取长度: len
把 if rs("author")= "",改成if rs("author")= "" then
...也行
 
请您将<td width="15%">
<% if rs("author")="" then
response.write "不祥"
else
response.write rs("author")
end if %>
</td>
改为:<td width="15%"><p align="center"><%=rs("concern")%>&amp;nbsp</td>
即可解决数据为空时显示不出表格线的问题.
 
问题已经解决,但哪位仁兄帮我解释一下:
<% if trim(rs("author") &amp;
"") = "" then

Response.Write "不祥"
else

Response.Write rs("author")
end if %>
为什么要这样呢?如果下面这样:
<% if rs("author") ="" then

Response.Write "不祥"
else

Response.Write rs("author")
end if %>
为什么又会出错呢?
还有就是如上面kifo兄所说,怎样在程序中做个值转换成文本呢?
 
'整数
i=123
'转文本,在VBScript中,所有基本类型变量 &amp;
"" 都会变成字串
s=i &amp;
""
'取长度
l=len(s)
因为你的rs("author")根据类型不同,可能是数字,字串,Empty或Null,你要做=""的比较,得强制将rs("author")转为字串,所以得 rs("autoor") &amp;
""
另外,在html的表格中,如果一个单元格内容为空格,那么表格线可能会不显示,所以还得
trim()去空格
 
感谢各位出手相助!
 
多人接受答案了。
 
后退
顶部