Foxtable(狐表)用户栏目专家坐堂 → 一表自动填充到其他多个表中


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

主题:一表自动填充到其他多个表中

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


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
一表自动填充到其他多个表中  发帖心情 Post By:2017/3/21 9:11:00 [只看该作者]

有个计划总表,想把这个表里面的计划按事先设好的比例,自动填充到手术室和外科中(可能会有多个其他科室的表)

下面是图示,请问老师改如何实现。

 


图片点击可在新窗口打开查看此主题相关图片如下:计划总表图.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:手术室数据图.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:外科数据图.jpg
图片点击可在新窗口打开查看


 


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


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2017/3/21 9:11:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:比例.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:数据分解列子.zip


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/21 9:24:00 [只看该作者]

DataColChanged事件

 

Dim dt1 As DataTable = DataTables("计划总表")
Dim dt2 As DataTable = DataTables("手术室")
Dim dt3 As DataTable = DataTables("外科")
Dim dt4 As DataTable = DataTables("比例")
Dim dr1 As DataRow = e.DataRow
Dim flt As String = "编码 = '" & dr1("编码") & "'"
Dim dr2 As DataRow = dt2.Find(flt)
If dr2 Is Nothing Then dr2 = dt1.addnew
For Each dc As DataCol In dt2.DataCols
    dr2(dc.Name) = dr1(dc.name)
Next
Dim fdr As DataRow = dt4.Find(flt)
dr2("数量") = fdr("手术室") * dr1("数量")
dr2 = dt3.Find(flt)
If dr2 Is Nothing Then dr2 = dt1.addnew
For Each dc As DataCol In dt3.DataCols
    dr2(dc.Name) = dr1(dc.name)
Next
fdr = dt4.Find(flt)
dr2("数量") = fdr("外科") * dr1("数量")


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


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2017/3/21 9:43:00 [只看该作者]

谢谢 完美解决 再次感谢!

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


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2017/3/23 23:33:00 [只看该作者]

请教老师一个问题为什么这条语句不用ENDIF If dr2 Is Nothing Then dr2 = dt1.addnew

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/23 23:57:00 [只看该作者]

那个是简写,只要一条语句的时候,可以那样写。

 

If dr2 Is Nothing Then

    dr2 = dt1.addnew

End If


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


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2017/3/24 8:09:00 [只看该作者]

明白了 谢谢,但问题又来了:
Dim dt4 As DataTable = DataTables("领用总表") '产品在各个科室的占用比例在这个DataTables("领用总表")表中
Dim dt2 As DataTable = DataTables("计划分派手术室")  
Dim dr1 As DataRow = e.DataRow
Dim flt As String = "字典编码 = '" & dr1("字典编码") & "'"
Dim dr2 As DataRow = dt2.Find(flt)   '【这条语句不太懂,刚开始的时候表DataTables("计划分派手术室")是空的,即没有数据,如果没有数据,这条语句应该有问题吧
If e.DataCol.Name = "逻辑列" AndAlso e.DataRow("逻辑列") = True Then  '【在这个代码的表中(采购计划表)加入逻辑列,只要选中,则把选中的数据按下面的条件复制到表DataTables("计划分派手术室")中】
      Dim fdr As DataRow = dt4.Find(flt) 
      If fdr("字典编码")<>"" Then '如果字典编码在占比表中找到
         Dim dr As DataRow = DataTables("计划分派手术室").AddNew
         For Each dc As DataCol In DataTables("计划分派手术室").DataCols
            dr(dc.Name) = e.DataRow(dc.Name)
        Next
         If fdr IsNot Nothing Then
           dr2("数量") = fdr("手术室") * dr1("数量")
        Else
           dr2("数量")=0
        End If
     End If
End If

但运行代码的时候提示:
.NET Framework 版本:2.0.50727.5466
Foxtable 版本:2016.7.29.1
错误所在事件:表,采购计划表,DataColChanged
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。

请老师有空帮指点一下,再次感谢!

[此贴子已经被作者于2017/3/24 8:11:43编辑过]

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


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

看代码要看前后的逻辑,3楼的代码,如果没有数据下面一句就会增加一行

Dim dr2 As DataRow = dt2.Find(flt)
If dr2 Is Nothing Then dr2 = dt1.addnew

运行3楼的代码,好好理解一下

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


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2017/3/26 19:07:00 [只看该作者]

多谢有点色和有点蓝老师的解答,谢谢。问题已经解决

 回到顶部