以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 怎么实现根据作者+业务类型+序号三个组合条件,让目录初始与结束页码进行自动累加呢? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=188633) |
-- 作者:cnsjroom -- 发布时间:2023/10/7 18:41:00 -- 怎么实现根据作者+业务类型+序号三个组合条件,让目录初始与结束页码进行自动累加呢? 请教一下各位老师: [此贴子已经被作者于2023/10/7 18:41:52编辑过]
|
-- 作者:有点蓝 -- 发布时间:2023/10/7 20:23:00 -- 第2行的目录开始页码获取第1行的结束页码+1不就行了,第2行的目录截止页码=第2行的目录开始页码+第2行结束页码,第3行的目录开始页码获取第2行的目录截止页码+1,以此类推... |
-- 作者:cnsjroom -- 发布时间:2023/10/7 20:56:00 -- 回复:(有点蓝)第2行的目录开始页码获取第1行的结束... 老师 麻烦看看是否可以再优化一下不呢 再项目不加载数据表的情况下 动态进行更新
当前参照你论坛的列子 仿照如下: 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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2023/10/7 21:11:00 -- 数据已经全部加载,没有必要再使用sqlFind,sqlselect,直接Find,select就行了。 |
-- 作者:cnsjroom -- 发布时间:2023/10/7 22:42:00 -- 回复:(有点蓝)数据已经全部加载,没有必要再使用sq... 麻烦老师继续指导一下,黄底色中有[_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") 运行输出提示如下: [此贴子已经被作者于2023/10/7 23:04:44编辑过]
|
-- 作者:有点蓝 -- 发布时间:2023/10/7 23:05:00 -- dr这个变量还没有赋值,是个空对象。 这个如果是用的别人的框架,建议去咨询框架的作者
|
-- 作者:cnsjroom -- 发布时间:2023/10/7 23:10:00 -- 回复:(有点蓝)dr这个变量还没有赋值,是个空对象。... 老师 怎么赋值呢?[_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 |
-- 作者:有点蓝 -- 发布时间:2023/10/7 23:22:00 -- 我不知道这个东西的处理逻辑是什么,建议咨询框架的开发者 |