asp基本查询问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 11:06:45
<%
dim rsBigClass,bclassidcs
bclassidcs=request.Form("bclassid")

set rsBigClass=server.CreateObject("adodb.recordset")
rsBigClass.open "Select * from Sale_bsort",conn,1,1
if rsBigClass.bof and rsBigClass.bof then
response.write "<option>请先添加地区大类</option>"
else
do while not rsBigClass.eof
if rsBigClass("bclassid")=bclassidcs then
response.write "<option value="& rsBigClass("bclassid") & " selected>" & rsBigClass("bclass") & "</option>"
else
response.write "<option value="& rsBigClass("bclassid") & ">" & rsBigClass("bclass") & "</option>"
end if
rsBigClass.movenext
loop
end if
rsBigClass.close
set rsBigClass=nothing
%>

请问有什么错误吗? 为什么 if rsBigClass("bclassid")=bcla

既是表Sale_bsort表中的列名是sclass,为什么在取值时出现:
rsBigClass("bclassid")而不是rsBigClass("sclass")呢?虽然bclass中的类型是int类型的,但经过request.from["bclass"](C#)接收时,统一接收为文本型的!也就是说request.form("bclass")是文本型的,这方便与数据的转化。
nvarchar是一种SQL数据类型,而非ACCESS类型,难道你表中的sclass表示这处ID不勉励用吗?还有使用nvarchar类型的?

在VBScript中,rs取出的数据类型不再是ACCESS或SQL中的类型,而是直接转化为ASP中的类型,严格说来是所使用语言VBscript的类型,在ASP中也是不存在nvarchar类型的,SQL向VB转化时直接转为文本,换句话来说,如果能正常地取出rsBigClass("sclass")的值时,两者是不需要转化而可以直接比较的!

所以我认为你取出的数据表中的数据两者本身就不相等!或者是不同的类型!建议你看一下SQL与ASP之间的数据类型对应关系!

老实说,你的bclassid又是什么东西呢?怎么关系没有一个是对应的?

bclassidcs=request.Form("bclassid")
改为
bclassidcs=Clng(request.Form("bclassid"))

if rsBigClass("bclassid")=bclassidcs then

改为

if cstr(rsBigClass("bclassid"))=bclassidcs then

bclassidcs=lcase(request.Form("bclassid"))

if lcase(rsBigClass("bclassid"))=bclass