Foxtable(狐表)用户栏目专家坐堂 → [求助]类似记录窗口,新增项问题!


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

主题:[求助]类似记录窗口,新增项问题!

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
[求助]类似记录窗口,新增项问题!  发帖心情 Post By:2016/12/23 16:14:00 [只看该作者]

目的:“订单表”新增客户,按下按钮控件,弹出类似记录窗口的窗口,显示“信息表”中的对应客户的信息。
尝试过,使用关联表,“订单表”作为子表,“信息表”作为父表,
但是,子表新增客户名,父表不会同步出现,所以失败了。
求助:子表新增一个客户,判断父表中是否存在相同名称的客户,若不存在,则父表自动同步新增该客户,若存在,则不新增。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:求助.rar

[此贴子已经被作者于2016/12/23 16:22:05编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/23 16:24:00 [只看该作者]

如果已经建立关联:

子表的DataColCahnged事件:

if e.Col.name = "客户" andalso e.NewValue > "" then
    dim dr as datarow = e.DataRow.GetParentRow("父表")
    if dr is nothing then
        dr = datatables("父表").AddNew()
        dr("客户") = e.NewValue
    end if
end if 

如果没有建立关联,改用find查找判断:

http://www.foxtable.com/webhelp/scr/2490.htm
[此贴子已经被作者于2016/12/23 16:24:48编辑过]

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
不顶用啊  发帖心情 Post By:2016/12/23 16:49:00 [只看该作者]

这个例子是,同步新增、删除,并没有判断是否已存在

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/23 16:54:00 [只看该作者]

以下加粗的两行,就是判断是否已经存在:
Select Case e.DataCol.name
    Case "产品编号"
        Dim dr As DataRow = DataTables("库存").Find("产品编号 = '" & e.OldValue & "'")
        If dr Is Nothing Then 

            dr = DataTables("库存").AddNew()
            dr("产品编号") = e.DataRow("产品编号")
            dr("产品名称") = e.DataRow("产品名称")
            dr("产品规格") = e.DataRow("产品规格")
        Else
            dr("产品编号") = e.DataRow("产品编号")
        End If
    Case "产品名称","产品规格"
        Dim dr As DataRow = DataTables("库存").Find("产品编号 = '" & e.DataRow("产品编号") & "'")
        If dr IsNot Nothing Then

            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/23 16:56:00 [只看该作者]

换到你这里,更加简单:
if e.Col.name = "客户" andalso e.NewValue > "" then    
      dim dr as datarow = DataTables("父表").Find("客户=’" & e.NewBalue & "'")   
      if dr is nothing then
            dr = datatables("父表").AddNew()
           dr("客户") = e.NewValue
      end if
end if 

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
  发帖心情 Post By:2016/12/23 16:56:00 [只看该作者]

谢谢!

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
测试失败了,不知道原因,求教!  发帖心情 Post By:2016/12/24 9:08:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:求助.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/24 9:17:00 [只看该作者]

你看看DataColchanged事件的e参数:

关于e参数:


[此贴子已经被作者于2016/12/24 9:19:08编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/24 9:20:00 [只看该作者]

个人建议你,先看一遍置顶的视频教程:



 回到顶部