请教分页储存过程中记录条数大于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
请教大大们这应如何解决啊!!!
'========================================================================
'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页记录,所以就报错了。
-----------------
那,你的逻辑是一页就一条记录吗?我怀疑根本就没有255页记录,所以就报错了。
作者: ybh37 发布时间: 2011-08-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28