以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于一个文件中多个表动态加载数据问题请教  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3530)

--  作者:卟离卟弃
--  发布时间:2009/7/11 16:48:00
--  关于一个文件中多个表动态加载数据问题请教
表A中的窗口AfterLoad事件代码
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT 部门,生产任务单号 From 部门计划"
dt = cmd.ExecuteReader()
Dim t As WinForm.TreeView = e.Form.Controls("TreeView1")
t.BuildDataTree(dt, "","部门", "生产任务单号")

保存窗口后,无问题,可以动态加载

表B的窗口AfterLoad事件代码
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT 工段,生产任务单号 From 车间工段计划"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildDataTree(dt, "","工段", "生产任务单号")

保存后,打开窗口,提示


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

两个表的数据原文件名是 部门与工段计划.mdb

文件项目BeforeLoadOuterTable事件中代码是

If e.DataTableName = "车间工段计划" Then
  e.SelectString = "Select * From {车间工段计划} where 生产任务单号 = \'a\'"
End If

If e.DataTableName = "部门计划" Then
 e.SelectString = "Select * From {部门计划} where 生产任务单号 = \'a\'"
End If



所有代码都是依照狐爸的例子试用的,
为什么表A的窗口又可以,去表B中设置,同样的代码,数据原也一样,只是数据表不一样就提示错误呢?

谁知道?说说杂回事儿?


--  作者:yangming
--  发布时间:2009/7/11 16:56:00
--  
你有工段这一列吗?
--  作者:lxl
--  发布时间:2009/7/11 17:31:00
--  
以下是引用卟离卟弃在2009-7-11 16:48:00的发言:
表B的窗口AfterLoad事件代码
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT 工段,生产任务单号 From 车间工段计划"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildDataTree(dt, "","工段", "生产任务单号")


你试试这个代码:

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT 工段,生产任务单号 From 车间工段计划"
dt = cmd.ExecuteReader()
If dt Is Nothing Then Messagebox.show("111")
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildDataTree(dt, "","工段", "生产任务单号")

看看有没有提示“111”

[此贴子已经被作者于2009-7-11 17:31:36编辑过]

--  作者:卟离卟弃
--  发布时间:2009/7/13 8:10:00
--  
老兄,有111.............
--  作者:卟离卟弃
--  发布时间:2009/7/13 8:11:00
--  

杨姐
有那一列..


--  作者:狐狸爸爸
--  发布时间:2009/7/13 8:35:00
--  
检查一下目录树的名称正确否。
--  作者:卟离卟弃
--  发布时间:2009/7/13 10:23:00
--  
看过,目录树是正确的.
--  作者:狐狸爸爸
--  发布时间:2009/7/13 10:47:00
--  

口说无凭,上传示例


--  作者:lxl
--  发布时间:2009/7/13 10:51:00
--  
以下是引用卟离卟弃在2009-7-13 8:10:00的发言:
老兄,有111.............

提示111 说明没有生成 DataTable
你在杂项里面选择外部数据源,执行下面的SQL
SELECT DISTINCT 部门,生产任务单号 From 部门计划

看结果是不是正确的


--  作者:卟离卟弃
--  发布时间:2009/7/13 10:55:00
--  

解决了,是数据库连接名称问题的错误...
原数据库名称是"车间数据文件"
我连接数据库的时候取的名称"部门计划"

两个动态加载数据窗口中其实都是用同一个数据源,只是数据表不一样,所以代码应该是这样
表A中的窗口AfterLoad事件代码
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT 部门,生产任务单号 From 部门计划"
dt = cmd.ExecuteReader()
Dim t As WinForm.TreeView = e.Form.Controls("TreeView1")
t.BuildDataTree(dt, "","部门", "生产任务单号")

保存窗口后,无问题,可以动态加载

表B的窗口AfterLoad事件代码
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT 工段,生产任务单号 From 车间工段计划"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildDataTree(dt, "","工段", "生产任务单号")

这样就无问题了