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


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

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

帅哥哟,离线,有人找我吗?
李孝春
  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


加好友 发短信
等级:超级版主 帖子:112419 积分:572369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:超级版主 帖子:112419 积分:572369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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



 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:超级版主 帖子:112419 积分:572369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:超级版主 帖子:112419 积分:572369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

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


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

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

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

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


加好友 发短信
等级:超级版主 帖子:112419 积分:572369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
总数 12 1 2 下一页