以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [已解决][求助]设置表关联后,动态同步卸载多个表会报错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177002)

--  作者:rightinfo2014
--  发布时间:2022/5/6 10:45:00
--  [已解决][求助]设置表关联后,动态同步卸载多个表会报错

请教,

问题一,数据表{客户}通过字段[代码]与数据表{客户其它联系}字段[客户代码]建立了表关联,且生成关联均已设置为“无”。执行以下操作:

1,点击主菜单【销售】-》【报价】,打开“主窗口-销售报价”,对应主表{销售报价单}。

2,点击窗口菜单之【修改】-》选中窗口控件“客户代码”并点击其命令按钮【...】,打开了查询并选定客户的“主窗口-客户”,相应主表切换到数据表{客户}。

3,“主窗口-客户”选定某一客户数据后,点击窗口菜单中的【选定】按钮,在返回查询来源“主窗口-销售报价”(切换回主表{销售报价单})过程中,系统执行该按钮事件中的这行代码“Datatables.Unload(客户|客户其它联系,就跳出错误提示“未将对象引用设置到对象的实例”。而当我把预先设置的{客户}与{客户其它联系}之间的关联删除后,就不会报错了,正常了。

请帮忙看一下,问题出在哪里了?


问题二,为什么我设置的messagebox.show("drp客户代码控件text变化:xxxx"),会被重复触发5呢?

 

谢谢!


[此贴子已经被作者于2022/5/7 0:09:20编辑过]

--  作者:rightinfo2014
--  发布时间:2022/5/6 10:47:00
--  
怎么添加不上例子附件呢?
--  作者:rightinfo2014
--  发布时间:2022/5/6 10:57:00
--  
好像不能大于2M,我重做一个例子吧
[此贴子已经被作者于2022/5/6 13:06:38编辑过]

--  作者:有点蓝
--  发布时间:2022/5/6 11:25:00
--  
http://www.foxtable.com/webhelp/topics/2756.htm

重要提示:

如果两个或多个表之间建立了关联,那么这些表必须在同一个Unload方法中同时卸载,不可以分别卸载。


--  作者:rightinfo2014
--  发布时间:2022/5/6 13:25:00
--  
例子上传如下,
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试1.foxdb
请指教,感谢!!!

@蓝大师,
我在”主窗口-客户“的ItemClick事件中有写如下代码:


If DataTables.Contains("客户") And DataTables.Contains("客户其它联系") Then
    messagebox.show(12)
    DataTables.Unload("客户|客户其它联系")  \'卸载表
    messagebox.show(13)
End If  
                    If Forms("主窗口-客户").Opened Then
                        Forms("主窗口-客户").Close()
                    End If
                    messagebox.show(14)
                    
                End If
            End If
            

可还是不行啊?图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:代码截图.png
图片点击可在新窗口打开查看

另,问题二,在例子中不再出现了,就算解决了。我自行对比例子与实际项目,就可对分找到差别就可解决了。




--  作者:有点蓝
--  发布时间:2022/5/6 13:41:00
--  
所有和"客户|客户其它联系"这2个表有直接或者间接关联的其它表也必须一起卸载,比如表A和客户有关联,表A也要一起卸载,同时如果表B和表A有关联,表B也要一起卸载,....

个人的建议是,如果关联比较复杂,加载的表就不用卸载了。

--  作者:rightinfo2014
--  发布时间:2022/5/6 16:40:00
--  
好的,明白了。

十分谢谢!