以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于外部数据源一个棘手的问题求教大师们 (http://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 -- 多谢大神,完美解决问题,结贴 |