以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  动态加载数据的错误页面  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=2135)

--  作者:jgc1010
--  发布时间:2009/3/18 12:38:00
--  动态加载数据的错误页面

图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

--  作者:jgc1010
--  发布时间:2009/3/18 12:39:00
--  
动态加载SQL SERVER外部表的错误提示
--  作者:狐狸爸爸
--  发布时间:2009/3/18 12:46:00
--  
下面的代码,在SQL SERVER下通过测试的,逐行比对一下你原来的代码,就知道你的为什么不行了,因为你将筛选和动态加载搞混了:

Dim
Value() As String
Dim
Filter As String
Value = e.Node.FullPath.Split(
"\\")
Select
Case e.Node.Level
     Case
0
         Filter =
"[shipCountry] = \'" & Value(0) & "\'"
    
Case 1
         Filter =
"[shipCountry] = \'" & Value(0) & "\' And [customerID] = \'" & Value(1) & "\'"
    
Case 2
         Filter =
"[shipCountry] = \'" & Value(0) & "\' And [customerID] = \'" & Value(1) & "\' And [EmployeeID] = " & Value(2)
End
Select
DataTables
("Orders").LoadFilter = Filter
DataTables
("Orders").Load()

--  作者:jgc1010
--  发布时间:2009/3/18 13:58:00
--  

动态加载SQL SERVER 外部数据表的问题终于搞定了.谢谢你.

再问一下,如果一个项目中动态加载多个表,在BeforeLoadOuterTable中,每个表写一个IF...END IF ,代码效率高吗?如以下的代码是否可以精练?

If e.DataTableName = "tab_wjk"  Then
    e.SelectString = "Select * From [tab_wjk] Where id<0"
End If

If e.DataTableName = "tab_ajk"  Then
    e.SelectString = "Select * From [tab_ajk] Where id<0"
End If
有N个表,需要写N个if...end if 吗?


--  作者:狐狸爸爸
--  发布时间:2009/3/18 14:06:00
--  
如果所有的表,都不加载数据,BeforeLoadOuterTable的代码为:

e.SelectString = "Select * From "  & e.DataTableName  & "Where 1> 2"

如果是部分表:

select case e.DataTableName 
   case "表1","表2","表3"
      e.SelectString = "Select * From "   & e.DataTableName  & "Where 1> 2"
end select

呵呵,帮助中有很多宝藏,不起眼的一句话,可能能够解决你的大问题,老兄不可错过这些宝藏啊。
[此贴子已经被作者于2009-3-18 14:09:41编辑过]

--  作者:jgc1010
--  发布时间:2009/3/18 14:42:00
--  
谢谢!不过我测试了加载二张表,结果又报错了,代码如下:

select case e.DataTableName
   case "ORDERS","PRODUCTS"
      e.SelectString = "Select * From "   & e.DataTableName  & "Where 1> 2"
end select


图片点击可在新窗口打开查看此主题相关图片如下:11.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2009-3-18 15:23:10编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/3/18 14:50:00
--  
错误提示呢?
--  作者:jgc1010
--  发布时间:2009/3/18 15:24:00
--  

错误提示页面已加到上面的贴子中,请查看


--  作者:狐狸爸爸
--  发布时间:2009/3/18 16:41:00
--  
呵呵,错误提示告诉你有语法错误,而且就是字符1附近,你就修改SQL语句啊,你之前不是总结出来了,SQL SERVER不能这样用吗?

你修改一下即可:

select case e.DataTableName 
   Case "Orders"
      e.SelectString = "Select * From Orders Where OrderId < 0 "
   Case "Products"
      e.SelectString = "Select * From Products Where ProductId < 0 "
end select
--  作者:jgc1010
--  发布时间:2009/3/18 17:10:00
--  

可以了,谢谢.你知道我对编程基本没什么感觉,最多只能依样画葫芦.通过你的帮助,才对编程有一点兴趣.对不起,你给我的不加载任何表的代码,我测试了还是有错误,错误页面同上.以下是你给的代码,请帮助指正.

如果所有的表,都不加载数据,BeforeLoadOuterTable的代码为:

e.SelectString = "Select * From "  & e.DataTableName  & "Where 1> 2"