以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 【求助】如果从两个记录表中获取状态,当某个编号下的所有明细全部为归还状态时,方可更改状态为已办结,反之,不能更改为已办结 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=108841) |
-- 作者:李孝春 -- 发布时间:2017/10/30 19:59:00 -- 【求助】如果从两个记录表中获取状态,当某个编号下的所有明细全部为归还状态时,方可更改状态为已办结,反之,不能更改为已办结 【求助】 ![]() ![]() 如图 四个表 1 卷宗入库 2 入库明细 3 涉案财物 4 财物明细 入库明细 财物明细 两个表中的数据 在扫码录入和款物录入中都会有一个使用状态登记 比如 借出 归还 现在新增一个窗体 办理状态 想在新增办理状态之前 进行判断 也就是一个卷宗编号如JZ-201710-0001 案件编号=卷宗编号 下的所有记录 在入库明细中的所有记录在扫码录入表最后一条记录中 状态登记 必须是归还 在财物明细中的所有记录在款物录入表最后一条记录中 状态登记 必须是归还 否则不能吧这个编号的登记状态改为 已办结 流程思路是: 卷宗入库 卷宗编号 卷宗数量 登记状态 JZ201710001
2 办理中 假设为2对应会自动生成入库明细
入库明细 卷宗编号 分册编号 JZ201710001 2-1 JZ201710001 2-2
扫码录入(主要是根据上述表中的数据生成的二维码经过扫码枪识别录入数据) 卷宗编号 分册编号 登记状态 JZ201710001 2-1
借出 JZ201710001 2-1 归还 JZ201710001 2-2
借出 JZ201710001 2-2
归还
现在是想实现卷宗入库表中的卷宗编号为JZ201710001的登记状态更改为 已办结 前提是
扫码录入中的 所有卷宗编号都是JZ201710001的 两册卷宗 登记状态都必须是归还的前提下 才能更改卷宗入库表中的登记状态为已办结 [此贴子已经被作者于2017/10/31 15:21:59编辑过]
|
-- 作者:有点蓝 -- 发布时间:2017/10/30 21:16:00 -- 方法1、先查找卷宗编号的所有入库明细的记录:http://www.foxtable.com/webhelp/scr/0400.htm ,然后循环到扫码录入表中查找是否有为归还的状态:http://www.foxtable.com/webhelp/scr/0396.htm 同样的方法到款物录入表是否有为归还的记录,只要查找到有一条未归还的记录就可以。 方法2、四个表合并成一个查询表,直接到查询表中使用find进行查找:http://www.foxtable.com/webhelp/scr/2322.htm
|
-- 作者:李孝春 -- 发布时间:2017/10/30 21:23:00 -- 回复:(有点蓝)方法1、先查找卷宗编号的所有入库明细... 有点蓝老师 不得要领哦 还得麻烦详细指导一下?? 方法1 第一步 先查找卷宗编号的所有入库明细的记录 Dim d As Row=Tables("状态变更").Current Dim drs As List(Of DataRow) drs = DataTables("入库明细").Select("[卷宗编号] = \'" & d("编号") & "\'","录入时间 DESC") For Each dr As DataRow In drs MessageBox.show(dr("卷宗名称")) Next Dim drs1 As List(Of DataRow) drs1 = DataTables("款物明细").Select("[案件编号] = \'" & d("编号") & "\'","录入时间 DESC") For Each dr1 As DataRow In drs1 MessageBox.show(dr1("款物名称")) Next Dim drs2 As List(Of DataRow) drs2 = DataTables("扫码录入").Select("[卷宗编号] = \'" & d("编号") & "\'","录入时间 DESC") For Each dr2 As DataRow In drs2 MessageBox.show(dr2("卷宗名称")) Next 第二步 循环到扫码录入表中查找是否有为归还的状态 Dim d As Row=Tables("状态变更").Current Dim dr As DataRow dr = DataTables("入库明细").Find("[卷宗编号] = \'" & d("编号") & "\'","录入时间 DESC") If dr IsNot Nothing Then \'如果找到的话 MessageBox.show(dr("卷宗名称")) End If Dim dr1 As DataRow dr1 = DataTables("款物明细").Find("[案件编号] = \'" & d("编号") & "\'","录入时间 DESC") If dr1 IsNot Nothing Then \'如果找到的话 MessageBox.show(dr1("款物名称")) End If Dim dr2 As DataRow dr2 = DataTables("扫码录入").Find("[卷宗编号] = \'" & d("编号") & "\'","录入时间 DESC") If dr2 IsNot Nothing Then \'如果找到的话 MessageBox.show(dr2("卷宗名称")) End If Dim dr3 As DataRow dr3 = DataTables("款物录入").Find("[案件编号] = \'" & d("编号") & "\'","录入时间 DESC") If dr3 IsNot Nothing Then \'如果找到的话 MessageBox.show(dr3("卷宗名称")) End If 怎么实现上述代码融合在一起 达到我想要的效果呢? 还请有点蓝老师多多指导啊
[此贴子已经被作者于2017/10/30 21:53:31编辑过]
|
-- 作者:有点蓝 -- 发布时间:2017/10/30 22:05:00 -- 类似卷宗入库,DataColChanging事件 Select Case e.DataCol.Name Case "办理状态" For Each dr As DataRow In DataTables("入库明细").Select("卷宗编号=\'" & e.DataRow("卷宗编号") & "\'") Dim dr2 As DataRow = DataTables("扫码录入").Find("卷宗编号=\'" & e.DataRow("卷宗编号") & "\' and 分册编号=\'" & dr("分册编号") & "\'") If dr2 IsNot Nothing AndAlso dr2("登记状态") <> "归还" msgbox("未归还") e.Cancel = True End If Next End Select |
-- 作者:李孝春 -- 发布时间:2017/10/30 22:42:00 -- 回复:(有点蓝)类似卷宗入库,DataColChanging事件S... 还是弄得一头雾水 楼上的代码 该在哪里使用呢? 我需要的是在状态登记窗体里面 按钮事件来更新状态登记 在更新之前就要做判断 当前所有分册卷宗必须都处于归还 否则不能更新
卷宗入库 卷宗编号 卷宗数量 登记状态 JZ201710001
2 办理中 假设为2对应会自动生成入库明细
入库明细 卷宗编号 分册编号 JZ201710001 2-1 JZ201710001 2-2
扫码录入(主要是根据上述表中的数据生成的二维码经过扫码枪识别录入数据) 卷宗编号 分册编号 登记状态 JZ201710001 2-1
借出 JZ201710001 2-1 归还 JZ201710001 2-2
借出 JZ201710001 2-2
归还
现在是想实现卷宗入库表中的卷宗编号为JZ201710001的登记状态更改为 已办结 前提是
扫码录入中的 所有卷宗编号都是JZ201710001的 两册卷宗 登记状态都必须是归还的前提下 才能更改卷宗入库表中的登记状态为已办结 [此贴子已经被作者于2017/10/30 23:11:18编辑过]
|
-- 作者:有点蓝 -- 发布时间:2017/10/30 23:56:00 -- 卷宗入库,DataColChanging事件 Select Case e.DataCol.Name Case "办理状态" For Each dr As DataRow In DataTables("入库明细").Select("卷宗编号=\'" & e.DataRow("卷宗编号") & "\'") Dim dr2 As DataRow = DataTables("扫码录入").Find("卷宗编号=\'" & e.DataRow("卷宗编号") & "\' and 分册编号=\'" & dr("分册编号") & "\' and 登记状态=\'归还\'") If dr2 Is Nothing msgbox("未归还") e.Cancel = True End If Next End Select [此贴子已经被作者于2017/10/30 23:57:31编辑过]
|
-- 作者:李孝春 -- 发布时间:2017/10/31 14:49:00 -- 回复:(有点蓝)卷宗入库,DataColChanging事件Selec... 按照方法操作了 但是我更改办理状态并没有任何提示 ![]() 按钮事件代码弄成如下: Dim d As Row=Tables("状态变更").Current For Each dr As DataRow In DataTables("入库明细").Select("卷宗编号=\'" & d("编号") & "\'") Dim dr2 As DataRow = DataTables("扫码录入").Find("卷宗编号=\'" & d("编号") & "\' and 分册编号=\'" & dr("分册编号") & "\'","录入时间 DESC") If dr2 IsNot Nothing AndAlso dr2("登记状态") <> "归还" msgbox(dr2("分册编号") & "未归还") e.Cancel = True Else Tables("办理状态_状态变更").AddNew() Tables("办理状态_状态变更").Current("案件编号")=d("案件编号") Tables("办理状态_状态变更").Current("名称")=d("名称") Tables("办理状态_状态变更").Current("操作人")=d("操作人") Tables("办理状态_状态变更").Current("变更类别")=d("变更类别") Tables("办理状态_状态变更").Current("变更时间")=Date.Now End If Next 可以实现不等于归还时 提示那册没有归还 但是也会同时新增一行数据 怎么修正为提示未归还时,不要再新增一行数据了呢
[此贴子已经被作者于2017/10/31 15:40:31编辑过]
|
-- 作者:有点蓝 -- 发布时间:2017/10/31 16:29:00 -- Dim d As Row=Tables("状态变更").Current For Each dr As DataRow In DataTables("入库明细").Select("卷宗编号=\'" & d("编号") & "\'") Dim dr2 As DataRow = DataTables("扫码录入").Find("卷宗编号=\'" & d("编号") & "\' and 分册编号=\'" & dr("分册编号") & "\'","录入时间 DESC") If dr2 IsNot Nothing AndAlso dr2("登记状态") <> "归还" msgbox(dr2("分册编号") & "未归还") return Else Tables("办理状态_状态变更").AddNew() Tables("办理状态_状态变更").Current("案件编号")=d("案件编号") Tables("办理状态_状态变更").Current("名称")=d("名称") Tables("办理状态_状态变更").Current("操作人")=d("操作人") Tables("办理状态_状态变更").Current("变更类别")=d("变更类别") Tables("办理状态_状态变更").Current("变更时间")=Date.Now End If Next
|
-- 作者:李孝春 -- 发布时间:2017/10/31 16:49:00 -- 回复:(有点蓝)Dim d As Row=Tables("状态变更... 问题还是一样的效果 存在未归还数据 同时也会新增数据 初步问题分析: 采用的是遍历所有 如果存在有归还的数据 那么就会新增一条数据 代码是否有办法改进一下 直接实现只要有一条未归还的 就直接终止运行了呢 实现必须全部都归还了 才新增一条数据
|
-- 作者:有点蓝 -- 发布时间:2017/10/31 17:33:00 -- Dim add As Boolean = True For Each dr As DataRow In DataTables("入库明细").Select("卷宗编号=\'" & d("编号") & "\'") Dim dr2 As DataRow = DataTables("扫码录入").Find("卷宗编号=\'" & d("编号") & "\' and 分册编号=\'" & dr("分册编号") & "\'","录入时间 DESC") If dr2 IsNot Nothing AndAlso dr2("登记状态") <> "归还" msgbox(dr2("分册编号") & "未归还") add = False Exit For End If Next If add Then Tables("办理状态_状态变更").AddNew() Tables("办理状态_状态变更").Current("案件编号")=d("案件编号") Tables("办理状态_状态变更").Current("名称")=d("名称") Tables("办理状态_状态变更").Current("操作人")=d("操作人") Tables("办理状态_状态变更").Current("变更类别")=d("变更类别") Tables("办理状态_状态变更").Current("变更时间")=Date.Now End If
|