VB.NET 调用以一个分页存储过程怎么得不到合计页数呢?请帮助。

蛋蛋の忧伤 2011-05-21 03:42:33

这是我调用存储过程的方法


'调用分页的存储过程
Public Function GetSQLDataTable_Proc_forFenYe2(ByVal sql, ByVal PageCurrent, ByVal PageSize, ByVal PageCount) As DataSet
Try
'定义命令对象,并使用储存过程
Dim myCommand As New SqlClient.SqlCommand
myCommand.CommandType = CommandType.StoredProcedure
myCommand.CommandText = "sp_PageView"
Dim conn As New SqlClient.SqlConnection
conn.ConnectionString = ModuleDB.getConnectSQL_forTransaction_module
myCommand.Connection = conn
'定义一个数据适配器,并设置参数
Dim myDapter As New SqlClient.SqlDataAdapter(myCommand)
myDapter.SelectCommand.Parameters.Add("@sql", SqlDbType.Text).Value = sql
myDapter.SelectCommand.Parameters.Add("@PageCurrent", SqlDbType.Int).Value = PageCurrent
myDapter.SelectCommand.Parameters.Add("@PageSize", SqlDbType.Int).Value = PageSize

myDapter.SelectCommand.Parameters.Add("@PageCount", SqlDbType.Int)
myDapter.SelectCommand.Parameters.Item("@PageCount").Direction = ParameterDirection.Output‘设置为返回值
Dim cc As Integer = myDapter.SelectCommand.Parameters.Item("@PageCount").Value
MsgBox("合计页数:" & cc) '这是怎么是0??

Dim ds As New DataSet
Try
myDapter.Fill(ds)
MsgBox(ds.Tables.Count)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Return ds
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function

请大家帮着看看我上面的方法为什么不行
--------------------

下面是我在查询分析器里的语句是可以查询到正确的内容的
下面的语句一共返回3个结果集 第一个是空的,第2个是第12页的数据第3个结果集合是移动多少页
declare @P_count int
exec sp_PageView
@sql='select * from buserinfo',@PageCurrent=12,@PageSize=10,@PageCount=@P_count out
SELECT @P_count

----------------------------






下面是我用的别人的一个存储过程
/*
--利用SQL未公开的存储过程实现分页
方法简单且效率高,已知的问题就是要多返回一个空的记录集
解决的方法是在前台调用时,用set recordset=recordset.nextrecordset
的方法跳过第一个记录集
此方法由J9988提供,改成了方便调用的存储过程
--邹建2004.05(引用请保留此信息)--*/


--缺点是返回2张表,第一张是空表,第二张才有数据

/*--调用示例
declare @PageCount int
exec sp_PageView
@sql='select * from sysobjects',
@PageCurrent=2,
@PageCount=@PageCount out
SELECT @PageCount
--*/
Create PROC [dbo].[sp_PageView]
@sql ntext, --要执行的sql语句
@PageCurrent int=1, --要显示的页码
@PageSize int=10, --每页的大小
@PageCount int OUTPUT --总页数
AS
SET NOCOUNT ON
DECLARE @p1 int
--初始化分页游标
EXEC sp_cursoropen
@cursor=@p1 OUTPUT,
@stmt=@sql,
@scrollopt=1,
@ccopt=1,
@rowcount=@PageCount OUTPUT

--计算总页数
IF ISNULL(@PageSize,0)<1
SET @PageSize=10
SET @PageCount=(@PageCount+@PageSize-1)/@PageSize
IF ISNULL(@PageCurrent,0)<1 OR ISNULL(@PageCurrent,0)>@PageCount
SET @PageCurrent=1
ELSE
SET @PageCurrent=(@PageCurrent-1)*@PageSize+1

--显示指定页的数据
EXEC sp_cursorfetch @p1,16,@PageCurrent,@PageSize

--关闭分页游标
EXEC sp_cursorclose @p1
...全文
65 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文档围绕“风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真”展开,系统介绍了采用虚拟同步发电机(VSG)控制策略的风电与储能联合并网系统的建模与仿真方法。通过Simulink平台构建完整的电力系统动态模型,重点实现VSG的关键控制逻辑,以提升新能源并网的稳定性、惯性响应与频率支撑能力。文档不仅涵盖核心仿真模型,还整合了大量相关前沿研究内容,如混合储能调频、微电网优化、电动汽车可调能力评估、智能算法在电力系统中的应用等,并提供丰富的Matlab/Simulink代码实例,具有较强的科研复现价值和技术参考意义。; 适合人群:具备电力系统基础理论知识和Matlab/Simulink仿真能力的研究生、科研人员及从事新能源发电、储能控制、智能电网等领域工作的工程技术人员;特别适用于正在开展风储协同控制、虚拟同步机、构网型变流器等相关课题研究的高校师生。; 使用场景及目标:① 深入理解虚拟同步发电机(VSG)在风储并网系统中的控制原理与技术优势;② 借助提供的仿真模型与代码完成科研论文复现、算法验证与系统性能测试;③ 探索新能源高渗透背景下提升电网稳定性的关键技术路径,包括惯量模拟、一次频率响应、储能协同控制等。; 阅读建议:建议读者按照文档结构循序渐进地学习,优先下载并运行配套的Simulink模型与Matlab代码,结合VSG控制策略的设计细节进行调试与分析,同时可关注公众号“荔枝科研社”获取完整资源包及持续的技术支持,以提升科研效率与创新能力。

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧