Foxtable(狐表)用户栏目专家坐堂 → 怎么实现根据作者+业务类型+序号三个组合条件,让目录初始与结束页码进行自动累加呢?


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

主题:怎么实现根据作者+业务类型+序号三个组合条件,让目录初始与结束页码进行自动累加呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
怎么实现根据作者+业务类型+序号三个组合条件,让目录初始与结束页码进行自动累加呢?  发帖心情 Post By:2023/10/7 18:41:00 [只看该作者]

请教一下各位老师:
怎么实现根据作者+业务类型+序号(升序)三个组合条件,让目录初始与结束页码进行自动累加呢?
当前有数据表【一人一档】结构如下:怎么实现如图说明的页码计算呢?

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2023/10/7 18:41:52编辑过]

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


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

第2行的目录开始页码获取第1行的结束页码+1不就行了,第2行的目录截止页码=第2行的目录开始页码+第2行结束页码,第3行的目录开始页码获取第2行的目录截止页码+1,以此类推...

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)第2行的目录开始页码获取第1行的结束...  发帖心情 Post By:2023/10/7 20:56:00 [只看该作者]

老师  麻烦看看是否可以再优化一下不呢
再项目不加载数据表的情况下  动态进行更新

当前参照你论坛的列子  仿照如下:
Dim cmd As New S QLCommand
cmd.Connec tionN ame = "主数据源"
Dim dt As DataTable
cmd.Comma ndText = "SELE CT * From {一人一档}"
dt = cmd.ExecuteReader()
Dim dr As DataRow
Dim drs As List(Of DataRow)
dr = dt.sqlFind("业务类型 = '" & e.Values("业务类型") & "' and 作者 = '" & e.Values("作者") & "' and [_SortKey] < " & e.DataRow("_SortKey"), "[序号] Desc") '找出上一行
If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
    dr("目录开始页码") = 1
    dr = e.DataRow
Else
    dr("目录开始页码") = dr("目录结束页码") + 1
End If
drs = dt.s qlSe lect("业务类型 = '" & e.Values("业务类型") & "' and 作者 = '" & e.Values("作者") & "' and  [_SortKey] >= " & dr("_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/10/7 21:00:09编辑过]

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


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

数据已经全部加载,没有必要再使用sqlFind,sqlselect,直接Find,select就行了。

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)数据已经全部加载,没有必要再使用sq...  发帖心情 Post By:2023/10/7 22:42:00 [只看该作者]

麻烦老师继续指导一下,黄底色中有[_SortKey] < " & dr("_SortKey")提示报错!   怎么修正呢?

谢谢!

错误代码为:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 eWebSer.form792_yema_Ajax(Request rq)
   --- 内部异常堆栈跟踪的结尾 ---
   在 Microsoft.VisualBasic.CompilerServices.Symbols.Container.InvokeMethod(Method TargetProcedure, Object[] Arguments, Boolean[] CopyBack, BindingFlags Flags)
   在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.CallMethod(Container BaseReference, String MethodName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, BindingFlags InvocationFlags, Boolean ReportErrors, ResolutionFailure& Failure)
   在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.ObjectLateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
   在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
   在 eWebSer.Execute(String name, Object para1, Object para2, Object para3, Object para4, Object para5, Object para6, Object para7, Object para8, Object para9, Object para10, Object para11, Object para12, Object para13, Object para14, Object para15, Object para16, Object para17, Object para18, Object para19, Object para20)
   在 eWebSer.RequestConfig(RequestEventArgs e, String path, String functionsName, String html, DataRow userdr)

当前代码为:
Public Sub form792_yema_Ajax(rq As Request)
Dim e As RequestEventArgs = rq.e
Dim cmd As SQLC o m mand = rq.cmd
cmd.Conn ectio nNa me = "主数据源"
cmd.Com man dText = "S ele ct Count(*) From {一人一档} where 业务类型='" & e.Values("业务类型") & "' and 作者='" & e.Values("作者") & "' "
    msg(e.Values("业务类型"))
    msg(cmd.CommandText)
    Dim dt As DataTable
If cmd.ExecuteScalar > 0 Then
        msg("000")
        cmd.CommandText = "Se lect * From {一人一档} where 业务类型='" & e.Values("业务类型") & "' and 作者='" & e.Values("作者") & "' "
        dt = cmd.ExecuteReader()
        msg("1")
        Dim dr As DataRow
        msg("2") 
        Dim drs As List(Of DataRow)
        msg("3")
        msg("业务类型 = '" & e.Values("业务类型") & "' and 作者 = '" & e.Values("作者") & "'")
        dr = dt.Find("业务类型 = '" & e.Values("业务类型") & "' and 作者 = '" & e.Values("作者") & "' and [_SortKey] < " & dr("_SortKey"), "[序号] Desc") '找出上一行
        msg("4") 
        If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
            dr("目录开始页码") = 1
            'dr = e.DataRow
            msg("5") 
        Else
            dr("目录开始页码") = dr("目录截止页码") + 1
        End If
        msg("目录开始页码" & dr("目录开始页码")) 
        msg("6") 
        drs = dt.Se lect("业务类型 = '" & e.Values("业务类型") & "' and 作者 = '" & e.Values("作者") & "' and  [_SortKey] >= " & dr("_SortKey"), "[序号]")
        msg("7") 
        For i As Integer = 1 To drs.Count - 1 '
            drs(i)("目录开始页码") = drs(i - 1)("目录截止页码") + 1
            msg("9") 
        Next
        If dr.IsNull("目录开始页码") Then
            dr("目录截止页码") = Nothing
            msg("9") 
        Else
            dr("目录截止页码") = dr("目录开始页码") + dr("结束页码") - 1
            msg("10") 
        End If
        msg("目录截止页码" & dr("目录截止页码"))
        dr.save()
        dt.Save()
        msg("11")
Else
        msg("111111")
End If
End Sub



如果直接去掉:[_SortKey] < " & dr("_SortKey")
 
图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
 
运行输出提示如下:

错误的事件名称
System.InvalidOperationException: 当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。

图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2023/10/7 23:04:44编辑过]

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


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

dr这个变量还没有赋值,是个空对象。

这个如果是用的别人的框架,建议去咨询框架的作者

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)dr这个变量还没有赋值,是个空对象。...  发帖心情 Post By:2023/10/7 23:10:00 [只看该作者]

老师   怎么赋值呢?[_SortKey] < " & dr("_SortKey")  
这个条件又必须要有,不然后台没有办法对应更新

这个与框架没有多大关系  就是前端直接点击ajax,然后触发后端去更新页码,后端没有加载这个一人一档数据表,想直接实现再后台自动加载与页码更新
$.post("form792_yema.Ajax", {
作者: e.form.input2.value,
业务类型: e.form.input1.value,
                        },
                        function(res) {
                            form792.form.table1.load();
                            e.form.closeloading();
                        })
        }
后端写了一个:
Public Sub form792_yema_Ajax(rq As Request)
Dim e As RequestEventArgs = rq.e
……
End Sub

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


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

我不知道这个东西的处理逻辑是什么,建议咨询框架的开发者

 回到顶部