ADODB.Stream 错误 '800a0bb9' 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。

时间:2022-02-15 14:40:50
出现错误如题,相关代码如下:
Function BytesToBstr(bodyStr,Cset) 
dim objstream 
set objstream=Server.CreateObject("adodb.stream") 
objstream.Type=1 
objstream.Mode=3 
objstream.Open 
objstream.Write bodyStr     '错误之处'
objstream.Position=0 
objstream.Type=2 
objstream.Charset=Cset 
BytesToBstr=objstream.ReadText 
objstream.Close 
set objstream=nothing 
End Function 
请各位高手帮忙,谢谢!

17 个解决方案

#1


各位多看哈嘛```````````急得很`

#2


bodyStr 是否为字符串?请检查

#3


同意2楼的说法


'objstream.Type=2'==========>这样才是文本类型的数据
objstream.Type=1'你这里指定了stream的类型为2进制数据,如果bodyStr不是字符串时错误

#4


objstream.Write   bodyStr         '错误之处' 
这个变量不是string类型的变量,所以无法直接输出
如果他的数据是2进制,你不妨写一个2进制显示函数,或者去搜索一个现成的函数用以对其显示

#5


objstream.Type=1   是二进制
objstream.Write Request.BinaryRead(Request.TotalBytes)
需要类似二进制写入

#6


我在本地运行是正确的,本地环境:XP+IIS6.0
放在服务器上就运行错误,出现以上所说的错误,环境:win2000+IIS6.0
请问一下怎么解决?

#7


首先说明哈: bodyStr 
是字符串

#8


再请高手帮忙`快刷下去了

#9


怎么办呢???

#10


连接数据库的代码?有问题吧
本地是2000,服务器2003的话可能不兼容,某些少数错误

#11


没连接数据库,是直接抓取别人网站的信息.
代码如下:
<%   
  htmstr=""   
  Function   bytes2BSTR(vIn)     
  dim   strReturn     
  dim   i1,ThisCharCode,NextCharCode     
  strReturn   =   ""     
  For   i1   =   1   To   LenB(vIn)     
  ThisCharCode   =   AscB(MidB(vIn,i1,1))     
  If   ThisCharCode   <   &H80   Then     
  strReturn   =   strReturn   &   Chr(ThisCharCode)     
  Else     
  NextCharCode   =   AscB(MidB(vIn,i1+1,1))     
  strReturn   =   strReturn   &   Chr(CLng(ThisCharCode)   *   &H100   +   CInt(NextCharCode))     
  i1   =   i1   +   1     
  End   If     
  Next     
  bytes2BSTR   =   strReturn     
  End   Function     
    
  Function   BytesToBstr(body,Cset)   
                  dim   objstream   
                  set   objstream   =   Server.CreateObject("adodb.stream")   
                  objstream.Type   =   1   
                  objstream.Mode   =3   
                  objstream.Open   
                  objstream.Write  body  
                  objstream.Position   =   0   
                  objstream.Type   =   2   
                  objstream.Charset   =   Cset   
                  BytesToBstr   =   objstream.ReadText     
                  objstream.Close   
                  set   objstream   =   nothing   
  End   Function   
    
  function   getHTTPPage(url)   
  on   error   resume   next   
  dim   http   
  set   http=server.createobject("MSXML2.XMLHTTP")   
  Http.open   "GET",url,false   
  Http.send()   
  if   Http.readystate<>4   then     
  exit   function   
  end   if   
  getHTTPPage=Http.responseBody     
    
  set   http=nothing   
  if   err.number<>0   then   err.Clear     
  end   function     
    
  url="http://news.163.com/weather/news/qx1/57516.html"   
    
 
  htmstr=getHTTPPage(url)   
  
  htmstr=BytesToBstr(htmstr,"GB2312")   
    
    
  
  pos1=instr(htmstr,"</a>")+4  

  pos2=instr(pos1,htmstr,"<")
 
  htmstr=mid(htmstr,pos1,pos2-pos1)   
  htmstr=replace(htmstr,"&nbsp;","")   
  htmstr=replace(htmstr,"<br>","   ")   

  %>

#12


你的代码 我这边可以运行的,没有提示出错.

    pos1=instr(htmstr," </a> ")+4     

    pos2=instr(pos1,htmstr," <") 
  
    htmstr=mid(htmstr,pos1,pos2-pos1)       
    htmstr=replace(htmstr,"&nbsp;","")       
    htmstr=replace(htmstr," <br> ","       ")     
这个代码觉得效率不高,其实也没什么的

#13


    pos1=instr(htmstr,"</a>")+4     

    pos2=instr(pos1,htmstr,"<img") 
  
    htmstr=mid(htmstr,pos1,pos2-pos1) 


呵呵

#14


1,try: 
sql   =   "select   *   from   [用户信息]   where   [用户名]   =   '"&   request.Form("name")   &"'   "  

另外,注意一下 request.form["name"]的值是什么。 
ADODB.Recordset (0x800A0BB9)参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。/test/db.asp 
这个错误提示,一般是指表名,或字段名有问题。 

2,rst.open "用户信息",conn,1,3 
肯定是有误的。 
try: 
rst.open "[用户信息]",conn,1,3 
如果不行建议 
rst.open "select * from [用户信息]",conn,1,3 

因为,odbc方式和oledb方式驱动连接access时,某一种方式支持直接 recordset.open的第一个参数为表名,另一种是不支持的,我记不太清了。 
你一试便知。

#15


牛头不对马嘴·楼上14

#16


bodyStr 必须为字符串类型.

#17


结贴老·最终还是没用上这个·

#1


各位多看哈嘛```````````急得很`

#2


bodyStr 是否为字符串?请检查

#3


同意2楼的说法


'objstream.Type=2'==========>这样才是文本类型的数据
objstream.Type=1'你这里指定了stream的类型为2进制数据,如果bodyStr不是字符串时错误

#4


objstream.Write   bodyStr         '错误之处' 
这个变量不是string类型的变量,所以无法直接输出
如果他的数据是2进制,你不妨写一个2进制显示函数,或者去搜索一个现成的函数用以对其显示

#5


objstream.Type=1   是二进制
objstream.Write Request.BinaryRead(Request.TotalBytes)
需要类似二进制写入

#6


我在本地运行是正确的,本地环境:XP+IIS6.0
放在服务器上就运行错误,出现以上所说的错误,环境:win2000+IIS6.0
请问一下怎么解决?

#7


首先说明哈: bodyStr 
是字符串

#8


再请高手帮忙`快刷下去了

#9


怎么办呢???

#10


连接数据库的代码?有问题吧
本地是2000,服务器2003的话可能不兼容,某些少数错误

#11


没连接数据库,是直接抓取别人网站的信息.
代码如下:
<%   
  htmstr=""   
  Function   bytes2BSTR(vIn)     
  dim   strReturn     
  dim   i1,ThisCharCode,NextCharCode     
  strReturn   =   ""     
  For   i1   =   1   To   LenB(vIn)     
  ThisCharCode   =   AscB(MidB(vIn,i1,1))     
  If   ThisCharCode   <   &H80   Then     
  strReturn   =   strReturn   &   Chr(ThisCharCode)     
  Else     
  NextCharCode   =   AscB(MidB(vIn,i1+1,1))     
  strReturn   =   strReturn   &   Chr(CLng(ThisCharCode)   *   &H100   +   CInt(NextCharCode))     
  i1   =   i1   +   1     
  End   If     
  Next     
  bytes2BSTR   =   strReturn     
  End   Function     
    
  Function   BytesToBstr(body,Cset)   
                  dim   objstream   
                  set   objstream   =   Server.CreateObject("adodb.stream")   
                  objstream.Type   =   1   
                  objstream.Mode   =3   
                  objstream.Open   
                  objstream.Write  body  
                  objstream.Position   =   0   
                  objstream.Type   =   2   
                  objstream.Charset   =   Cset   
                  BytesToBstr   =   objstream.ReadText     
                  objstream.Close   
                  set   objstream   =   nothing   
  End   Function   
    
  function   getHTTPPage(url)   
  on   error   resume   next   
  dim   http   
  set   http=server.createobject("MSXML2.XMLHTTP")   
  Http.open   "GET",url,false   
  Http.send()   
  if   Http.readystate<>4   then     
  exit   function   
  end   if   
  getHTTPPage=Http.responseBody     
    
  set   http=nothing   
  if   err.number<>0   then   err.Clear     
  end   function     
    
  url="http://news.163.com/weather/news/qx1/57516.html"   
    
 
  htmstr=getHTTPPage(url)   
  
  htmstr=BytesToBstr(htmstr,"GB2312")   
    
    
  
  pos1=instr(htmstr,"</a>")+4  

  pos2=instr(pos1,htmstr,"<")
 
  htmstr=mid(htmstr,pos1,pos2-pos1)   
  htmstr=replace(htmstr,"&nbsp;","")   
  htmstr=replace(htmstr,"<br>","   ")   

  %>

#12


你的代码 我这边可以运行的,没有提示出错.

    pos1=instr(htmstr," </a> ")+4     

    pos2=instr(pos1,htmstr," <") 
  
    htmstr=mid(htmstr,pos1,pos2-pos1)       
    htmstr=replace(htmstr,"&nbsp;","")       
    htmstr=replace(htmstr," <br> ","       ")     
这个代码觉得效率不高,其实也没什么的

#13


    pos1=instr(htmstr,"</a>")+4     

    pos2=instr(pos1,htmstr,"<img") 
  
    htmstr=mid(htmstr,pos1,pos2-pos1) 


呵呵

#14


1,try: 
sql   =   "select   *   from   [用户信息]   where   [用户名]   =   '"&   request.Form("name")   &"'   "  

另外,注意一下 request.form["name"]的值是什么。 
ADODB.Recordset (0x800A0BB9)参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。/test/db.asp 
这个错误提示,一般是指表名,或字段名有问题。 

2,rst.open "用户信息",conn,1,3 
肯定是有误的。 
try: 
rst.open "[用户信息]",conn,1,3 
如果不行建议 
rst.open "select * from [用户信息]",conn,1,3 

因为,odbc方式和oledb方式驱动连接access时,某一种方式支持直接 recordset.open的第一个参数为表名,另一种是不支持的,我记不太清了。 
你一试便知。

#15


牛头不对马嘴·楼上14

#16


bodyStr 必须为字符串类型.

#17


结贴老·最终还是没用上这个·

#18