Foxtable(狐表)用户栏目专家坐堂 → 使用外部数据源如何在窗口表中建立关联表


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

主题:使用外部数据源如何在窗口表中建立关联表

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


加好友 发短信
等级:幼狐 帖子:85 积分:753 威望:0 精华:0 注册:2015/8/31 11:01:00
使用外部数据源如何在窗口表中建立关联表  发帖心情 Post By:2018/5/17 7:50:00 [只看该作者]

以下代码能在窗口的两个表中加载表与明细表,但不能达到选定行后,筛选出对应的关联表:
窗口1的AfterLoaD代码为
Dim cmd As New SQLCommand
cmd.C

'生成表
Dim i As Integer
cmd.CommandText = "execute CX"
Dim dst1 As Table = Tables("窗口1_Table1")
dst1.DataSource  = cmd.ExecuteReader()

For i=1 To dst1.count
    Dim dr As Row = dst1.Rows(i-1)
    dr("序号") = "" & i
Next
'生成明细表
Dim dst2 As Table = Tables("窗口1_Table2")
If dst1.count>0 Then
    Dim dr1 As Row = dst1.Current '获得选定行
    Dim str As String = dr1("项目代码") 
    cmd.CommandText = "execute Cxa '" & str & "'"
End If
dst2.DataSource  = cmd.ExecuteReader()
For i=1 To dst2.count
    Dim dr As Row = dst2.Rows(i-1)
    dr("序号") = "" & i
Next
以上的步骤可以生成表与明细表
窗口1_Table1的CurrentChanged代码为:
'筛选出明细
Dim cmd As New SQLCommand
cmd.C
Dim dst1 As Table = Tables("窗口1_Table1")
Dim dst2 As Table = Tables("窗口1_Table2")

If dst1.count>0 Then
    Dim dr1 As Row = dst1.Current '获得选定行
    Dim str As String = dr1("项目代码") 
    Else
cmd.CommandText = "execute CXA "
    End If
dst2.DataSource  = cmd.ExecuteReader()

Dim i As Integer
For i=1 To dst2.count
    Dim dr As Row = dst2.Rows(i-1)
    dr("序号") = "" & i
Next
提示的错误就是选定表中的记录,不能筛选出明细表,并提示序号不在Table2表中



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


加好友 发短信
等级:版主 帖子:71002 积分:356108 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/17 8:56:00 [只看该作者]

1、选定后筛选为什么要执行sql语句?最开始的时候,你的数据没有全部加载出来?

 

2、提示table2没有需要,说明你表格就是没有序号。

 

3、筛选的代码,请参考

 

    Dim t As Table = Tables("窗口1_Table2")
    With Tables("窗口1_Table1")
        If .Current Is Nothing Then
            t.Filter = "False"
        Else
            t.Filter = "产品编号 = '" & .Current("产品编号") & "'"
        End IF
    End With


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


加好友 发短信
等级:幼狐 帖子:85 积分:753 威望:0 精华:0 注册:2015/8/31 11:01:00
  发帖心情 Post By:2018/5/22 14:47:00 [只看该作者]


 Dim t As Table = Tables("窗口1_Table2")
    With Tables("窗口1_Table1")
        If .Current Is Nothing Then
            t.Filter = "False"
        Else
            t.Filter = "项目代码 = '" & .Current("项目代码") & "'"
        End IF
    End With

能够筛选了,但提示错误:未发现列[项目代码],为何呢,如果窗口表是直接绑定数据表,不提示出错,因为是用的外部数据库的查询表,这个代码好象不适合这样的查询?

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20180522144841.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20180522144803.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/5/22 14:55:04编辑过]

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


加好友 发短信
等级:版主 帖子:71002 积分:356108 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/22 16:05:00 [只看该作者]

提示没有对应的列,就是没有对应的列

 

你试试查看表结构,看真正的列名是什么 http://www.foxtable.com/webhelp/scr/0193.htm

 


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


加好友 发短信
等级:幼狐 帖子:85 积分:753 威望:0 精华:0 注册:2015/8/31 11:01:00
  发帖心情 Post By:2018/5/22 18:15:00 [只看该作者]

明明有那一列,不然不会筛选成功的,只是提示出错,没有影响代码运行

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


加好友 发短信
等级:版主 帖子:71002 积分:356108 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/22 18:56:00 [只看该作者]

以下是引用SMXTB在2018/5/22 18:15:00的发言:
明明有那一列,不然不会筛选成功的,只是提示出错,没有影响代码运行

 

把多余代码删除(可能影响的代码都屏蔽,逐步打开)

 

如果不会做,做个例子发上来测试。


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


加好友 发短信
等级:幼狐 帖子:85 积分:753 威望:0 精华:0 注册:2015/8/31 11:01:00
好的,上传例子  发帖心情 Post By:2018/5/23 8:12:00 [只看该作者]

打开项目后,点开窗口1,提示错误,但能实际运行,
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.zip

不知代码何处有错?

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


加好友 发短信
等级:版主 帖子:71002 积分:356108 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/23 9:10:00 [只看该作者]

修改代码

 

Dim t As Table = Tables("窗口1_Table2")
If t.Cols.Contains("项目代码") Then
    With Tables("窗口1_Table1")
        If .Current Is Nothing Then
            t.Filter = "False"
        Else
            t.Filter = "项目代码 = '" & .Current("项目代码") & "'"
        End If
    End With
End If


 回到顶部