以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于外部数据源一个棘手的问题求教大师们  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=116217)

--  作者:jacky7710
--  发布时间:2018/3/21 13:28:00
--  [求助]关于外部数据源一个棘手的问题求教大师们
项目是这样的,用sqlserver作为远程数据库,access数据库作为用户本地数据,用来保存用户个性化的数据。现在有个问题,通过升级来修改用户本地的数据库,例如在access表中添加一个表customer:在项目启动的时候做判断用户表是否已经创建,如果没有创建。但是在事件BeforeConnectOuterDataSource和BeforeLoadOuterTable事件中均无法获取connects对象(运行直接退出),项目加载后就会提示 加载表“customer”失败。请问这种情况,如何在foxtable加载外部数据表之前做判断呢?或者如何在BeforeConnectOuterDataSource或BeforeLoadOuterTable事件中创建外部数据库链接,并读取数据库中表是否存在呢?


--  作者:jacky7710
--  发布时间:2018/3/21 13:34:00
--  
暂时通过ChangeConnection方式更换外部数据源的方式能解决,但是这个方法有个缺点:必须另外一个外部数据源的数据库有(内部数据表不支持),而且数据表结构要一样才可以,这样就需要在slqserver上创建一样的表才行,就会产生冗余。
--  作者:有点甜
--  发布时间:2018/3/21 15:00:00
--  

带上一个升级文件 xxx.txt 用来记录升级信息(也可以用其余方式,比如 saveconfigvalue)

 

打开项目,如果存在 xxx.txt 文件,说明是新的程序,设置public变量 _IsNew = True

 

BeforeLoadOuterTable事件写代码

 

If _IsNew Then

    e.Cancel = true \'不加载任何表格

End If

 

然后,在在AfterOpenProject事件,写代码

 

If _IsNew Then

    \'创建新的表格

    \'重新load全部表格 http://www.foxtable.com/webhelp/scr/2755.htm

    \'删除xxx.txt文件

End If

[此贴子已经被作者于2018/3/21 15:01:26编辑过]

--  作者:jacky7710
--  发布时间:2018/3/21 16:16:00
--  
多谢大神,完美解决问题,结贴