Foxtable(狐表)用户栏目专家坐堂 → 怎么从当前表中获取记录状态为借出,且没有归还的所有借出状态数据行呢?


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

主题:怎么从当前表中获取记录状态为借出,且没有归还的所有借出状态数据行呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
怎么从当前表中获取记录状态为借出,且没有归还的所有借出状态数据行呢?  发帖心情 Post By:2021/12/13 17:47:00 [只看该作者]

怎么从当前表中获取记录状态为借出,且没有归还的所有借出状态数据行呢?



当前表为
图片点击可在新窗口打开查看
当前代码如下: 
图片点击可在新窗口打开查看
Dim kh As WinForm.TextBox = Forms("一键归还").Controls("TextBox1")
kh.Select()
Tables("一键归还_table1").Filter="记录状态='借出' And 卡号='" & kh.text & "'"
Dim Products As List(Of String)
Products = DataTables("设备信息").SQLGetValues("uuid","设备状态='借出'")
For Each Product As String In Products
    Dim br As Table=Tables("使用记录")
    Dim dr As DataRow = DataTables("使用记录").Find("设备uuid='" & Product & "' and 卡号='" & kh.text & "' And _Identify <> " & br.Current("_identify"), "_Identify desc")
    If dr IsNot Nothing And dr("记录状态") = "借出" Then
        br.AddNew
        br.Current("卡号")= kh.text
        br.Current("设备uuid")= Product
        br.Current("记录时间")=Date.now
        br.Current("记录状态")="归还"
        br.Current("设备状态")="库存"
    End If
Next

代码怎么修正为直接从当前表【使用记录】中获取卡号等于kh.text值 设备uuid=Product 且记录状态为“借出”,又没有归还数据行的数据,然后将整个记录状态为“借出”数据行全部显示出来,并且全部新增使用记录数据为 记录状态为归还。
[此贴子已经被作者于2021/12/13 17:47:32编辑过]

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/13 20:14:00 [只看该作者]

建议把“记录状态”改为2个逻辑列,一个“借出”,一个“归还”,新增行默认勾选借出,归还的时候勾选归还。或者更简单一点,“记录状态”改为逻辑列,借的时候为空,还的时候勾选。

记录时间改为2个列,一个借出时间,一个归还时间,一借一还一行数据即可,既方便查询,又方便统计

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)建议把“记录状态”改为2个逻辑列,一...  发帖心情 Post By:2021/12/13 21:58:00 [只看该作者]

主要是想实现点一次就是借出 再点一次就是归还  系统自动第一次是借出  然后第二次就是归还  第三次就是借出 第四次就是归还  依次类推  
且从一个用户卡号和设备uuid只会同一时间只有一个借出或归还
当一个卡号有多个设备uuid处于借出的时候
实现一次性将该用户卡号下所有处于借出的设备uuid的数据 全部新增对应条数的归还记录
一楼的代码   老师有没有办法帮忙修正下呢?

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/13 22:07:00 [只看该作者]

表设计不合理,我也没有办法修正。增加一个辅助列,已经归还的,在借出行勾选。下次查询的时候就只查询没有勾选的借出行

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)表设计不合理,我也没有办法修正。增...  发帖心情 Post By:2021/12/13 23:18:00 [只看该作者]

有两张表
设备信息  表中有uuid  设备状态(库存或借出)  设备名称 三列
使用信息  表中有设备uuid  设备名称  记录状态  记录时间  卡号
listview采用大图标显示设备信息表中所有数据
点击图标后弹出使用登记菜单   获取listview当前行uuid  打开使用登记窗口
在登记窗口中  输入卡号  并将当前行uuid作为设备uuid进行数据查找  并进行判断 第一次时 记录状态为借出 第二次时为归还  第三次时为借出  第四次就是归还(判断有无借出 没有就为借出  有借出就为归还)如果为借出时  对应修改设备信息表中设备状态为借出  为归还是对应修改设备信息中设备状态为库存  
一楼的代码就是根据这个思路来的   但是总会新增多一行数据   还得麻烦老师们多多指导下  谢谢


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


加好友 发短信
等级:狐精 帖子:3205 积分:21299 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/14 1:10:00 [只看该作者]

两个表都有id,同一设备用相同的ID,id建议采用固定格式的不重复编号来处理,设备表中初始状态为:在档,记录表中借出后,设备表中找到相同id,把状态修改为借出,归还后一样通过id在设备表中更新状态为:在档。我目前证件管理是这样处理的,以后查看某一设备的记录,就筛选这一设备,所有记录也都出来了
[此贴子已经被作者于2021/12/14 1:12:52编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(cd_tdh)两个表都有id,同一设备用相同的ID,...  发帖心情 Post By:2021/12/14 8:41:00 [只看该作者]

目前思路大致和你的思路是一样的   且已经实现了单个设备的借出与归还
现在想实现同一个卡号也就是同一个用户,有多次借出的时候,然后对所有借出或者选择几个借出进行批量归还操作,老师有没有解决办法呢?
一楼的代码我遍历当前设备信息表中所有设备状态等于借出的uuid
然后根据输入的用户卡号 去查找使用记录表中 对应设备uuid=uuid的  且记录状态等于借出的数据  将它们所有的数据显示出来  然后进行归还操作
但是当前会多一条记录,需要修正一楼代码……

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/14 8:51:00 [只看该作者]

不要一根筋好不好。添加一个辅助列就能解决的问题,不然就得遍历所有借出行一行行判断

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


加好友 发短信
等级:狐精 帖子:3205 积分:21299 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/14 9:28:00 [只看该作者]

Select集合在循环吧,应该快点

 回到顶部