以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  使用外部数据源如何在窗口表中建立关联表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=119061)

--  作者:SMXTB
--  发布时间: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表中



--  作者:有点甜
--  发布时间: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
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间:2018/5/22 16:05:00
--  

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

 

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

 


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

 

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

 

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


--  作者:SMXTB
--  发布时间:2018/5/23 8:12:00
--  好的,上传例子
打开项目后,点开窗口1,提示错误,但能实际运行,
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.zip

不知代码何处有错?
--  作者:有点甜
--  发布时间: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