Foxtable(狐表)用户栏目专家坐堂 → 【求助】如果从两个记录表中获取状态,当某个编号下的所有明细全部为归还状态时,方可更改状态为已办结,反之,不能更改为已办结


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

主题:【求助】如果从两个记录表中获取状态,当某个编号下的所有明细全部为归还状态时,方可更改状态为已办结,反之,不能更改为已办结

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【求助】如果从两个记录表中获取状态,当某个编号下的所有明细全部为归还状态时,方可更改状态为已办结,反之,不能更改为已办结  发帖心情 Post By:2017/10/30 19:59:00 [显示全部帖子]

【求助】

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


如图 四个表
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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)方法1、先查找卷宗编号的所有入库明细...  发帖心情 Post By:2017/10/30 21:23:00 [显示全部帖子]

有点蓝老师 不得要领哦 还得麻烦详细指导一下??


方法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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)类似卷宗入库,DataColChanging事件S...  发帖心情 Post By:2017/10/30 22:42:00 [显示全部帖子]

还是弄得一头雾水
楼上的代码  该在哪里使用呢?
我需要的是在状态登记窗体里面 按钮事件来更新状态登记  在更新之前就要做判断  当前所有分册卷宗必须都处于归还  否则不能更新 

卷宗入库

卷宗编号   卷宗数量  登记状态

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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)卷宗入库,DataColChanging事件Selec...  发帖心情 Post By:2017/10/31 14:49: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("分册编号") & "未归还")
        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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)Dim d  As Row=Tables("状态变更...  发帖心情 Post By:2017/10/31 16:49:00 [显示全部帖子]

问题还是一样的效果   存在未归还数据  同时也会新增数据

初步问题分析:
采用的是遍历所有  如果存在有归还的数据  那么就会新增一条数据  
代码是否有办法改进一下  直接实现只要有一条未归还的  就直接终止运行了呢
实现必须全部都归还了  才新增一条数据

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)Dim add As Boolean = TrueFor Each ...  发帖心情 Post By:2017/10/31 18:00:00 [显示全部帖子]

谢谢有点蓝老师的耐心指导  谢谢

 回到顶部