以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 根据卷宗id进行分组,当排序码发生变化时或材料页码发生变化时都要能够自动更新开始和结束页数据 然后按照排序码顺序,结合材料页码数据,开始页从1开始编号,并计算结束页。 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=189242) |
||||
-- 作者:cnsjroom -- 发布时间:2023/11/19 4:07:00 -- 根据卷宗id进行分组,当排序码发生变化时或材料页码发生变化时都要能够自动更新开始和结束页数据 然后按照排序码顺序,结合材料页码数据,开始页从1开始编号,并计算结束页。 根据卷宗id进行分组, 然后按照排序码顺序,结合材料页码数据,开始页从1开始编号,并计算结束页。 当排序码发生变化时或材料页码发生变化时都要能够自动更新开始和结束页数据 以下内容是专门发给有点蓝浏览 当前代码如下: 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/19 4:07:34编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2023/11/19 20:10:00 --
|
||||
-- 作者:cnsjroom -- 发布时间:2023/11/19 22:06:00 -- 回复:(有点蓝)[upload=zip,材料页数生成开始页码与... 老师 现在这个过程是加入了表事件代码中的 有没有办法直接弄在内部函数中呢?因为实际项目时,不会加载表,都是sql语句执行或内部函数直接运行呢 |
||||
-- 作者:有点蓝 -- 发布时间:2023/11/19 22:47:00 -- 实际项目是怎么用的,具体举例说明一下 |
||||
-- 作者:cnsjroom -- 发布时间:2023/11/20 3:39:00 -- 回复:(有点蓝)实际项目是怎么用的,具体举例说明一... 1、定义内部函数(根据卷宗id与排序码来实现页数变化后自动生成开始页与结束页): Dim juanzongid As string= Args(0) Dim cmd As New SQLCommand cmd.Co nne cti onN ame = "主数据源" Dim dt As DataTable cmd.CommandText = "SE L ECT * From {案件卷宗材料信息} " dt = cmd.ExecuteReader(True) Dim Products2 As List(Of String()) Products2 = dt.GetValues("卷宗id|排序码") For Each Product2 As String() In Products2 \'遍历卷宗id Dim idx As Integer = 1 Output.Show(Product2(0)) Output.Show(Product2(1)) Dim dr As DataRow = dt.Find("卷宗id=\'" & Product2(0) & "\' and 排序码<\'" & Product2(1) & "\'", "排序码 desc") If dr IsNot Nothing Then idx = dr("结束页") + 1 End If
For Each dr In dt.Sele ct("卷宗id = \'" & Product2(0) & "\' and 排序码>=\'" & Product2(1) & "\'", "排序码") dr("开始页") = idx dr("结束页") = idx + dr("材料页码") idx = dr("结束页") + 1 Next dr.save Next 2、后端函数:(接受前端传递的卷宗id,然后传递给内部函数,让内部函数计算当前卷宗id下的所有材料按照排序码的顺序结合文件页数计算开始页与结束页) Public Sub yemajisuan_Ajax(rq As
Request) Dim e As RequestEventArgs = rq.e Functions.Execute("根据卷宗id与排序码来实现页数变化后自动生成开始页与结束页", e.values("卷宗id")) End Sub 3、前端使用:(传递卷宗id值给后端函数) $.post("yemajisuan.Ajax", { 卷宗id:e.form.guid; }, function(res) { console.log(res) }) 当前用命令行执行如上内部函数代码:得到的结果值不对, 1,第一行开始页是1,结束页为2;第二行开始页就应该为3,结果显示2,结束页是7 是正确 2、第一行开始页是1,结束页为为6?不对,结束页应该为5,第二行开始页应该为6,结果显示为2,结束页应该为30,结果显示27 [此贴子已经被作者于2023/11/20 4:23:20编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2023/11/20 8:34:00 -- Dim juanzongid As String = Args(0) Dim cmd As New SQLCommand cmd.C Dim dt As DataTable cmd.CommandText = "SELECT * From {案件卷宗材料信息} where 卷宗id=\'" & juanzongid & "\'" dt = cmd.ExecuteReader(True) If dt.DataRows.Count > 0 Then Dim idx As Integer = 1 For Each dr As DataRow In dt.Select("", "排序码") \'遍历卷宗id dr("开始页") = idx dr("结束页") = idx + dr("材料页码") idx = dr("结束页") + 1 Next dt.save End If
|
||||
-- 作者:cnsjroom -- 发布时间:2023/11/20 20:43:00 -- 回复:(有点蓝)Dim juanzongid As String = Args(0)... 老师 运行结果还是和楼上的是一样的哦 还得继续麻烦老师 第二个只有5页 那么开始页就是2,结束页就是6啊 |
||||
-- 作者:有点蓝 -- 发布时间:2023/11/20 20:47:00 -- 哦,小学数学种树问题容易犯的错误,加之后再减1就行了 dr("结束页") = idx + dr("材料页码") - 1
|
||||
-- 作者:cnsjroom -- 发布时间:2023/11/21 4:40:00 -- 回复:(有点蓝)哦,小学数学种树问题容易犯的错误,... 谢谢老师 |