以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于后台数据表的调用问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=194612)

--  作者:刘效功天津
--  发布时间:2024/12/27 15:25:00
--  关于后台数据表的调用问题
老师好,我想设计一个输出  需要的表名  的窗口 ,在窗口的AfterLoad事件中写了如下代码’     <工程造价汇总表>后台数据表  
问题:当我把<工程造价汇总表>加载进来时,下面的代码就能正常起作用,在窗口中能正常显示所需要的表名,如果是不把<工程造价汇总表>加载进来就报错,说找不到<工程造价汇总表>,可是我明明用SQLfind语句在后台数据表中查找的,并且用LOAD加载了数据了  为啥还不起作用呢,还是说找不到表  ,请老师看看代码是哪儿出问题了   谢谢老师


Dim lb As WinForm.CheckedListBox = e.Form.Controls("lbk")
Dim bm As String
Dim strs() As String = {"全隐框玻璃幕墙单价分析表", "全明框玻璃幕墙单价分析表", "半明半隐框玻璃幕墙单价分析表"}
For Each str As String In strs
    
    Dim dr As DataRow
    If DataTables.Contains("工程造价汇总表") Then
        dr = DataTables("工程造价汇总表").FIND("工程量 > 0  and  项目内容辅助列=\'" & str & " \'")
    Else
        dr = DataTables("工程造价汇总表").SQLFIND("工程量 > 0  and  项目内容辅助列=\'" & str & " \'")
    End If
    If dr IsNot Nothing Then 
        \'按条件加载 < 工程造价汇总表 > 的数据
        DataTables("工程造价汇总表").LoadFilter = "工程量 > 0" 
        DataTables("工程造价汇总表").Load()
        bm = bm & "|" & str
    End If 
Next
lb.ComboList = bm

--  作者:有点蓝
--  发布时间:2024/12/27 15:37:00
--  
只有把<工程造价汇总表>加载进来,才能使用DataTables("工程造价汇总表")这种用法

DataTables只能用于已经加载的表

--  作者:刘效功天津
--  发布时间:2024/12/27 15:42:00
--  
老师好,我下面的代码不是已经加载了吗
        DataTables("工程造价汇总表").LoadFilter = "工程量 > 0" 
        DataTables("工程造价汇总表").Load()

--  作者:刘效功天津
--  发布时间:2024/12/27 15:46:00
--  
不明白啥意思,咱们得SQLfind  SQLSELECT  等方法不是都针对后台数据的吗,还有咱们得datadatble(表名).load 这不就是把后台数据表加载进来了吗,搞不清楚界限,请老师赐教
--  作者:刘效功天津
--  发布时间:2024/12/27 15:51:00
--  
DataTables("工程造价汇总表").LoadFilter = "工程量 > 0" 
        DataTables("工程造价汇总表").Load()
上面的代码数据都加载进来了,不就是表也加载了,如果表还没加载,数据就无法加载进来,不知我理解的对不对

--  作者:有点蓝
--  发布时间:2024/12/27 15:52:00
--  
加载表数据和加载表是两回事。

下面几种情况表示没有加载表:
1、如果是外部表,没有在外部表管理中添加
2、外部表在BeforeLoadOuterTable事件使用e.cancel=true取消加载
3、内部表在BeforeLoadInnerTable件使用e.cancel=true取消加载

--  作者:刘效功天津
--  发布时间:2024/12/27 15:58:00
--  
老师好,我搞得有点懵,后台数据表没加载,那加载后台数据表像
        DataTables("工程造价汇总表").LoadFilter = "工程量 > 0" 
        DataTables("工程造价汇总表").Load()
这样的加载后台数据代码有啥意义,加载进来的数据它存放到哪儿,它不得有个数据表做依托吗,数据表都没有,它加载进来放哪儿呀,搞不清理加载数据表  和加载数据二者之间的内在关系,请老师赐教,


--  作者:有点蓝
--  发布时间:2024/12/27 16:16:00
--  
对呀,7楼的代码是用来加载表数据的,如果表都没有加载,加载进来的数据它存放到哪儿呢。所以必须先加载表,然后才能加载表数据
--  作者:刘效功天津
--  发布时间:2024/12/27 16:20:00
--  
明白了,谢谢老师指点,解惑
--  作者:刘效功天津
--  发布时间:2024/12/27 16:28:00
--  
老师好,还有点问题请教您,如果我把后台数据表加载进来,DataTables.Load(" 表名") 这样一加载,就把该表名的表和其包含的数据都加载进来了,对吧,那加载后台数据的方法:                                                  datatables(" 表名").filer="*****"  和DataTables(" 表名").Load()不就没用了吗?