以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关联表加载问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=50673) |
-- 作者:实话实说 -- 发布时间:2014/5/11 7:47:00 -- 关联表加载问题 我采用两种方法加载关联表 演示采用的是通过加载窗口加载关联表,出现错误。其中【线缆总帐】与【线缆明细】是关联表 菜单代码 If DataTables.Contains("线缆总帐") = True And DataTables.Contains("线缆明细") = True And DataTables.Contains("生产台帐") = True And DataTables.Contains("线缆报表") = True Then MainTable = Tables("线缆总帐") \'切换主表 Forms("线缆台帐").Open() Else Forms("线缆车间加载表").Open() \'DataTables.Load("线缆总帐|线缆明细|生产台帐|线缆报表") \'MainTable = Tables("线缆总帐") \'切换主表 \'Forms("线缆台帐").Open() End If 线缆车间加载表窗口TimerTick事件 For Each s As String In "线缆总帐|线缆明细|生产台帐|线缆报表".Split("|") If DataTables.Contains(s) = False Then e.Form.Controls("Label1").Text = "正在加载【" & s & "】表...请稍候" Application.DoEvents() If DataTables.Contains(s) = False Then DataTables.Load(s) End If End If Next e.Form.TimerEnabled=False e.Form.Close() MainTable = Tables("线缆总帐") \'切换主表 Forms("线缆台帐").Open() 第二种是通过菜单直接加载表,全部正常 If DataTables.Contains("线缆总帐") = True And DataTables.Contains("线缆明细") = True And DataTables.Contains("生产台帐") = True And DataTables.Contains("线缆报表") = True Then MainTable = Tables("线缆总帐") \'切换主表 Forms("线缆台帐").Open() Else \'Forms("线缆车间加载表").Open() DataTables.Load("线缆总帐|线缆明细|生产台帐|线缆报表") MainTable = Tables("线缆总帐") \'切换主表 Forms("线缆台帐").Open() End If 通过加载表窗口加载表问题在哪? [此贴子已经被作者于2014-5-11 15:08:04编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/5/11 14:30:00 -- 呃,问题一个一个排错吧。
第一个:提示是所有表者不存在,也就是你没有对应的表,就在这个表里打开一个窗口。窗口属性->所有表者
第二个问题:可能是第一个错误引发的。 |
-- 作者:实话实说 -- 发布时间:2014/5/11 14:44:00 -- 以下是引用有点甜在2014-5-11 14:30:00的发言:
呃,问题一个一个排错吧。
第一个:提示是所有表者不存在,也就是你没有对应的表,就在这个表里打开一个窗口。窗口属性->所有表者
第二个问题:可能是第一个错误引发的。 你可能没明白上面的例子。我不通过加载窗口加载表是一切正常,通过加载窗口加载表时出现示例错误(两个代码都在一楼)所有者表设置没有问题。 |
-- 作者:实话实说 -- 发布时间:2014/5/11 15:49:00 -- 麻烦有点甜老师再看一下 |
-- 作者:逛逛 -- 发布时间:2014/5/11 15:52:00 -- 以下是引用实话实说在2014-5-11 7:47:00的发言:
线缆车间加载表窗口TimerTick事件
For Each s As String In "线缆总帐|线缆明细|生产台帐|线缆报表".Split("|")
If DataTables.Contains(s) = False Then
e.Form.Controls("Label1").Text = "正在加载【" & s & "】表...请稍候"
Application.DoEvents()
If DataTables.Contains(s) = False Then
DataTables.Load(s)
End If
End If
Next
e.Form.TimerEnabled=False
e.Form.Close()
MainTable = Tables("线缆总帐") \'切换主表
Forms("线缆台帐").Open()
感觉是这段代码出错了
你的 线缆总帐|线缆明细 是关联表,必须在同一个Load中实现
http://www.foxtable.com/help/topics/2755.htm |
-- 作者:实话实说 -- 发布时间:2014/5/11 16:12:00 -- 错在哪呢? DataTables.Load(s)这句吗? |
-- 作者:逛逛 -- 发布时间:2014/5/11 16:21:00 -- 你得判断 如果 线缆总帐 不存在 就加载 线缆总帐|线缆明细
线缆明细就不要判断了
|
-- 作者:实话实说 -- 发布时间:2014/5/11 17:37:00 -- 这样改下就可以了,只是不能动态显示正在加载的表 TimerTick If DataTables.Contains("线缆总帐") = False And DataTables.Contains("线缆明细") = False And DataTables.Contains("生产台帐") = False And DataTables.Contains("线缆报表") = False Then e.Form.Controls("Label1").Text = "正在加载表...请稍候" Application.DoEvents() \'即刻暂停代码的执行,重新绘制控件后,继续执行代码 DataTables.Load("线缆总帐|线缆明细|生产台帐|线缆报表") Else e.Form.TimerEnabled=False e.Form.Close() End If MainTable = Tables("线缆总帐") \'切换主表 Forms("线缆台帐").Open()
|