Foxtable(狐表)用户栏目专家坐堂 → 根据卷宗id进行分组,当排序码发生变化时或材料页码发生变化时都要能够自动更新开始和结束页数据 然后按照排序码顺序,结合材料页码数据,开始页从1开始编号,并计算结束页。


  共有2559人关注过本帖树形打印复制链接

主题:根据卷宗id进行分组,当排序码发生变化时或材料页码发生变化时都要能够自动更新开始和结束页数据 然后按照排序码顺序,结合材料页码数据,开始页从1开始编号,并计算结束页。

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
根据卷宗id进行分组,当排序码发生变化时或材料页码发生变化时都要能够自动更新开始和结束页数据 然后按照排序码顺序,结合材料页码数据,开始页从1开始编号,并计算结束页。  发帖心情 Post By:2023/11/19 4:07:00 [只看该作者]

根据卷宗id进行分组, 然后按照排序码顺序,结合材料页码数据,开始页从1开始编号,并计算结束页。
当排序码发生变化时或材料页码发生变化时都要能够自动更新开始和结束页数据

此主题相关图片如下:1111.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/19 4:07:34编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/19 20:10:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:材料页数生成开始页码与结束页码.zip


 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)[upload=zip,材料页数生成开始页码与...  发帖心情 Post By:2023/11/19 22:06:00 [只看该作者]

老师  现在这个过程是加入了表事件代码中的  有没有办法直接弄在内部函数中呢?因为实际项目时,不会加载表,都是sql语句执行或内部函数直接运行呢

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/19 22:47:00 [只看该作者]

实际项目是怎么用的,具体举例说明一下

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)实际项目是怎么用的,具体举例说明一...  发帖心情 Post By: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


此主题相关图片如下:1111.png
按此在新窗口浏览图片


[此贴子已经被作者于2023/11/20 4:23:20编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Dim juanzongid As String = Args(0)...  发帖心情 Post By:2023/11/20 20:43:00 [只看该作者]

老师  运行结果还是和楼上的是一样的哦  还得继续麻烦老师

图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看
第一个只有1页  那么开始页就应该是1  结束页也是1啊
第二个只有5页  那么开始页就是2,结束页就是6啊


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/20 20:47:00 [只看该作者]

哦,小学数学种树问题容易犯的错误,加之后再减1就行了

dr("结束页") = idx + dr("材料页码") - 1

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)哦,小学数学种树问题容易犯的错误,...  发帖心情 Post By:2023/11/21 4:40:00 [只看该作者]

谢谢老师

 回到顶部