+ -
当前位置:首页 → 问答吧 → 请教分页储存过程中记录条数大于255时报错的问题

请教分页储存过程中记录条数大于255时报错的问题

时间:2011-08-08

来源:互联网

我使用一个分页储存过程,用查询分析器可执行大于255条记录的操作,在VB中用以下过程调用,问题是在大于255条记录(Optional ByVal pageSize As Long = 256)时报"对于造型说明无效的字符值",具体函数如下:

'========================================================================
'DispGoods自定义传值函数
'用于SQL分页储存过程的输入参数传入
'tblName(表名称,支持多表传入,必须),fldName(列名称),fldSort(排序列,必须),strCondition(查询条件,不需要where),ID(主表主键列,必须)
'pageSize(每页记录条数),page(指定记录页数),Sort(排序方式,0为升序,1为降序),Dist(是否添加查询字段的 DISTINCT 默认0不添加/1添加)
'========================================================================
Public Function DispGoods(ByVal tblName As String, ByVal fldName As String, ByVal fldSort As String, _
ByVal strCondition As String, ByVal ID As String, Optional ByVal pageSize As Long = 30, _
Optional ByVal page As Long = 1, Optional ByVal Sort As Long = 1, Optional ByVal Dist As Long = 1) As ADODB.Recordset
   
  Dim HArs As New ADODB.Recordset
  Dim HAcmd As New ADODB.Command '创建Command对象cmd
  Dim HAprm As ADODB.Parameter 'Parameter 对象代表参数或与基于参数化查询或存储过程的Command 对象相关联的参数。
  DB_Connect '连接到数据库
  Set HAcmd.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接
  HAcmd.CommandText = "DY_TY_FY" '设置Command对象源。
  HAcmd.CommandType = adCmdStoredProc '通知提供者CommandText属性有什么,它可能包括Command对象的源类型。设置这个属性优化了该命令的执行。
  Set HAprm = HAcmd.CreateParameter("@tblName", adVarChar, adParamInput, 200, tblName)
  HAcmd.Parameters.Append HAprm
  Set HAprm = HAcmd.CreateParameter("@fldName", adVarChar, adParamInput, 500, fldName)
  HAcmd.Parameters.Append HAprm
  Set HAprm = HAcmd.CreateParameter("@pageSize", adTinyInt, adParamInput, 4, pageSize) '每页记录条数
  HAcmd.Parameters.Append HAprm
  Set HAprm = HAcmd.CreateParameter("@page", adTinyInt, adParamInput, 4, page) '打开指定页数
  HAcmd.Parameters.Append HAprm
  Set HAprm = HAcmd.CreateParameter("@fldSort", adVarChar, adParamInput, 200, fldSort)
  HAcmd.Parameters.Append HAprm
  Set HAprm = HAcmd.CreateParameter("@Sort", adBigInt, adParamInput, 1, Sort)
  HAcmd.Parameters.Append HAprm
  Set HAprm = HAcmd.CreateParameter("@strCondition", adVarChar, adParamInput, 1000, strCondition)
  HAcmd.Parameters.Append HAprm
  Set HAprm = HAcmd.CreateParameter("@ID", adVarChar, adParamInput, 150, ID)
  HAcmd.Parameters.Append HAprm
  Set HAprm = HAcmd.CreateParameter("@Dist", adTinyInt, adParamInput, 4, Dist)
  HAcmd.Parameters.Append HAprm
  Set HAprm = HAcmd.CreateParameter("@pageCount", adInteger, adParamOutput, 4)
  HAcmd.Parameters.Append HAprm
  Set HAprm = HAcmd.CreateParameter("@Counts", adInteger, adParamOutput, 4)
  HAcmd.Parameters.Append HAprm
  Set HArs = HAcmd.Execute '执行储存过程
  HArs.Close
  HAfhcsa = HAcmd.Parameters("@pageCount")
  HAfhcsb = HAcmd.Parameters("@Counts")
  Set HAcmd = Nothing
  HArs.Open
  Set DispGoods = HArs '返回记录集
End Function

请教大大们这应如何解决啊!!!

作者: huangjingfeng88   发布时间: 2011-08-08

我使用一个分页储存过程,用查询分析器可执行大于255条记录的操作,
-----------------
那,你的逻辑是一页就一条记录吗?我怀疑根本就没有255页记录,所以就报错了。

作者: ybh37   发布时间: 2011-08-09

热门下载

更多