以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何实现页数变化后,开始页码默认从1开始,计算出开始页码与结束页码。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189154) |
-- 作者:cnsjroom -- 发布时间:2023/11/14 12:52:00 -- 如何实现页数变化后,开始页码默认从1开始,计算出开始页码与结束页码。 有一材料表(数据参考如下:) 类别 名称 页数 开始页码 结束页码 A A1 2 1 2 A A2 3 3 5 A A3 4 6 9 B B1 5 1 5 如何实现页数变化后,开始页码默认从1开始,计算出开始页码与结束页码。 谢谢! 代码如何修正呢?以类别为主线,根据不同的类别生成不不同类别对应的开始页码与结束页码, Dim cmd As New SQ LCommand cmd.Conn ecti Dim dt As DataTable cmd.Com man dText = "SELE CT * From {目录表}" dt = cmd.ExecuteReader() Dim dr As DataRow Dim drs As List(Of DataRow) dr = dt.Find("类别 =‘“&values(“类别”)&”’ and [_SortKey] < " & e.DataRow("_SortKey"), "[SortKey] Desc") \'找出上一行 If dr Is Nothing Then \'如果没有找到上一行,说明本行就是第一行 dr("开始页码") = 1 dr = e.DataRow Else dr("开始页码") = dr("结束页码") + 1 End If drs = dt.S elect("类别 =‘“&values(“类别”)&”’ and [_SortKey] >= " & dr("_SortKey"), "[SortKey]") For i As Integer = 1 To drs.Count - 1 \' drs(i)("开始页码") = drs(i - 1)("结束页码") + 1 Next If e.DataRow.IsNull("开始页码") Then dr("结束页码") = Nothing Else dr("结束页码") = dr("开始页码") + dr("结束页码") - 1 End If dt.Save() [此贴子已经被作者于2023/11/14 13:08:40编辑过]
|
-- 作者:有点蓝 -- 发布时间:2023/11/14 13:43:00 -- If dr Is Nothing Then \'如果没有找到上一行,说明本行就是第一行 dr = e.DataRow dr("开始页码") = 1Else dr("开始页码") = dr("结束页码") + 1 End If
|
-- 作者:cnsjroom -- 发布时间:2023/11/14 15:32:00 -- 回复:(有点蓝)If dr Is Nothing Then '如果没有找到... 老师 红色部分会报错 这个有没有办法直接弄成狐表内部函数呢? 比如函数名yemajisuan 下面的代码要怎么修改使它能够直接在函数里面就更新完毕呢?默认以类别为分组,根据输入的页数直接计算出开始和结束页码 Dim cmd As New SQLCommand cmd.Co nne ctio nN ame = "主数据源" Dim dt As DataTable cmd.Comma ndText = "S ELE CT * From {目录表}" dt = cmd.ExecuteReader() Dim dr As DataRow Dim drs As List(Of DataRow) dr = dt.Find("类别 =\'" & values("类别") & "\' and [_SortKey] < " & e.DataRow("_SortKey"), "[SortKey] Desc") \'找出上一行 If dr Is Nothing Then \'如果没有找到上一行,说明本行就是第一行 dr = e.DataRow dr("开始页码") = 1 Else dr("开始页码") = dr("结束页码") + 1 End If drs = dt.Sel ect("类别 =\'" & values("类别") & "\' and [_SortKey] >= " & dr("_SortKey"), "[SortKey]") For i As Integer = 1 To drs.Count - 1 \' drs(i)("开始页码") = drs(i - 1)("结束页码") + 1 Next If e.DataRow.IsNull("开始页码") Then dr("结束页码") = Nothing Else dr("结束页码") = dr("开始页码") + dr("结束页码") - 1 End If dt.Save()
|
-- 作者:有点蓝 -- 发布时间:2023/11/14 15:37:00 -- 先看看:http://www.foxtable.com/webhelp/topics/0604.htm 代码放在哪里的?如果不是表事件,是不会有e.DataRow这种东西的
|
-- 作者:cnsjroom -- 发布时间:2023/11/14 18:03:00 -- 回复:(有点蓝)先看看:http://www.foxtable.com/we... 老师 是放在内部函数里面的 怎么修正呢?没有达到预期 是想直接在内部函数就定义好 然后通过直接调用函数Functions.Execute("mukuyema")就自动计算,仅传参类别值进来。 此主题相关图片如下:屏幕截图 2023-11-14 175829.png Dim dr As DataRow = Args(0) Dim e As RequestEventArgs = Args(1) Dim cmd As New SQLCommand cmd.Conn ection Name = "主数据源" Dim dt As DataTable cmd.CommandText = "SE LE CT * From {目录表}" dt = cmd.ExecuteReader() Dim drs As List(Of DataRow) dr = dt.Find("类别 =\'" & e.values("类别") & "\' and [_SortKey] < " & dr("_SortKey"), "[SortKey] Desc") \'找出上一行 If dr Is Nothing Then \'如果没有找到上一行,说明本行就是第一行 dr = dr dr("开始页码") = 1 Else dr("开始页码") = dr("结束页码") + 1 End If drs = dt.S el ect("类别 =\'" & e.values("类别") & "\' and [_SortKey] >= " & dr("_SortKey"), "[SortKey]") For i As Integer = 1 To drs.Count - 1 \' drs(i)("开始页码") = drs(i - 1)("结束页码") + 1 Next If dr.IsNull("开始页码") Then dr("结束页码") = Nothing Else dr("结束页码") = dr("开始页码") + dr("结束页码") - 1 End If dt.Save() |
-- 作者:有点蓝 -- 发布时间:2023/11/14 20:13:00 -- 在什么事件调用这个函数的? |
-- 作者:cnsjroom -- 发布时间:2023/11/15 10:26:00 -- 回复:(有点蓝)在什么事件调用这个函数的? 想在按钮事件中直接触发并调用这个函数 Functions.Execute("mukuyema",“A”) |
-- 作者:有点蓝 -- 发布时间:2023/11/15 10:43:00 -- 建议还是认真看看这个帮助:http://www.foxtable.com/webhelp/topics/0604.htm,按钮的e参数只有:http://www.foxtable.com/webhelp/topics/0732.htm。不要随便把a事件的参数用到b事件 另外函数的定义也要认真看看:http://www.foxtable.com/webhelp/topics/1486.htm 上面代码定义了2个参数: Dim dr As DataRow = Args(0) 第一个参数是一个DataRow Dim e As RequestEventArgs = Args(1) 第二个参数是RequestEventArgs ,RequestEventArgs 只有httprequest事件才有,其它事件表格表格按钮都不可能有的,所以如果这个函数是在按钮里使用,也算是乱用。 如果要在按钮里使用这个函数,必须去掉函数里的第二个参数,然后按钮大概可以这样调用 Functions.Execute("mukuyema",tables(xxx).current.datarow)
|