Foxtable(狐表)用户栏目专家坐堂 → 关联表数据怎样调用


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

主题:关联表数据怎样调用

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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
关联表数据怎样调用  发帖心情 Post By:2013/12/13 22:00:00 [显示全部帖子]

请问:我需要通过编程获取关联表中的数据,怎样处理?

如:主表A(企业信息)与关联表B(产品信息)通过企业编号进行关联,而表B与表C(产品销售情况)也是关联关系,通过产品编号关联。
我要在A表中选择查看产品销售情况,但不知使用怎样的语句。

在查看B表信息,我一般采用Find和Select语句(企业代码是从表A中传递过来的):
If DataTables("表B").find("[企业代码] = 100001") IsNot Nothing Then
   drs = DataTables("表B").Select("[企业代码] = 100001l", "结算日期")
   。。。
End If 

由于关联字段不一样(表A和表B是企业代码,表B和表C是产品编号)那么,查看表C时,怎么写代码?

我不知道是否把我的问题描述清楚了

请指教。



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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
  发帖心情 Post By:2013/12/14 16:40:00 [显示全部帖子]

若采用方法二,我添加了绘图的一些代码,好像还有点问题,能否帮我看看:
Dim n as Integer = 0
If DataTables("表B").find("[企业代码] = 100001") IsNot Nothing Then 
   drs = DataTables("表B").Select("[企业代码] = 100001", "结算日期")         
   For Each dr As DataRow In drs
      For Each cdr As DataRow In DataTables("表C").Select("产品编号 = '" & dr("产品编号") & "'")
         Series.X(i) = i
         Series.Y(i) = cdr("A产品销售收入")
         Chart.AxisX.SetValueLabel(i, cdr("结算日期")) 
         i = i + 1
      Next
   Next 
End If

谢谢


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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
  发帖心情 Post By:2013/12/15 11:37:00 [显示全部帖子]

感谢

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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
  发帖心情 Post By:2013/12/15 16:58:00 [显示全部帖子]

我还是没有绕过来。
因为C表数据没有办法直接通过A表查询,它与A表没有直接关联,在设置Select方法时,不知道语句怎么写。
我的理解是:我首先要找到B表的信息,才能根据B表与C表的关系,找到C表的数据。但是写出的程序老说“未将对象引用设置到对象的实例”。程序如下:
Dim zh As DataRow
Dim drs As List(of DataRow)
If e.Form.controls("产品名称").text IsNot Nothing Then  ’从窗口组合框中选择产品名称
   If DataTables("表B").find("[企业代码] = '100001'") IsNot Nothing Then  ‘从表A传递过来企业编号100001
     zh = DataTables("表B").find("[产品名称] = '" & e.Form.controls("产品名称").text & "'")  ’找到表B中与窗口输入的产品相符的数据行
     cdcpbh = zh("产品编号") '传递产品编号     ‘将该数据行的与表C关联的产品编号字段传递
     If DataTables("表C").find("[产品编号] = '" & cdcpbh & "'") IsNot Nothing Then
        drs = DataTables("主营产品业绩").Select("[产品编号] = '" & cdcpbh & "'","结算日期")  ’找到所有符合的行
        Dim i As Integer = 0  ‘下面是绘图部分
        For Each dr As DataRow In drs
           Series.X(i) = i
           Series.Y(i) = dr("产品销售收入")
           Chart.AxisX.SetValueLabel(i, dr("结算日期")) '指定字符表示
           i = i + 1
        Next
     Else
        MessageBox.Show("没有这个企业信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error)
     End If
   End If
End If

帮我看一下,哪里错了。我感觉第四行好像不对,但也没有其他的方法传递数据。
另:是否可通过Table 的一些方法,将关联表的数据找到,而不需要通过DataTable。但我对Table 怎样找数据的语句不熟悉。
谢谢



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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
  发帖心情 Post By:2013/12/15 22:23:00 [显示全部帖子]

我试了上面给的程序,还是不行,我编了一个简单的例子,请把我上传的例子调出来。
先谢了。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.zip


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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
  发帖心情 Post By:2013/12/16 21:24:00 [显示全部帖子]

程序已试,非常好,解决了大问题。
感谢

 回到顶部