Foxtable(狐表)用户栏目专家坐堂 → 我想在连接外部数据源的时候动态输入IP地址和用户名!(已有进一步建议,参见贴子:应该增加管理“外部数据源”的功能!)


  共有27385人关注过本帖树形打印复制链接

主题:我想在连接外部数据源的时候动态输入IP地址和用户名!(已有进一步建议,参见贴子:应该增加管理“外部数据源”的功能!)

帅哥哟,离线,有人找我吗?
cpayinyuan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
我想在连接外部数据源的时候动态输入IP地址和用户名!(已有进一步建议,参见贴子:应该增加管理“外部数据源”的功能!)  发帖心情 Post By:2008/9/17 11:30:00 [显示全部帖子]

     帮助中和论坛上举了一个事例,可以连接外部数据源的时候,通过修改一个文本文件,并在BeforeConnectOuterDataSource事件中修改e参数ConnectionString来动态修改连接字符串,以实现连接动态IP地址的外部数据源,用这种办法,可以实现动态IP地址的外部数据源问题,但这个办法显得不够专业,不正规,有点傻,(有哪个正规的软件在每次登录时都要先修改一个文本文件呢,现在用ADSL作服务器的很多,这可都是动态IP啊)。其他软件的通用做法是,系统开始运行时,首先出现一个登录窗口,登录窗口中有若干个文本框,在登录窗口输入要连接的服务器的IP地址(可能还有用户名、密码等),然后,系统根据输入的文本框的内容(IP地址等),来连接相应的服务器上的外部数据源。但在狐表中,我在BeforeConnectOuterDataSource事件中进行类似设置,不能成功,提示“XX窗口不存在”!经过我的分析,估计是系统在打开项目的时候,先连接外部数据源,然后才打开数据表(包括内部数据表),最后在打开数据表之后才加载窗口(因为目前的软件中子窗口也属于某个表)。在这样的设计下,在连接外部数据源的时候,是不存在窗口的,所以会出错。为了实现这个功能,我有两个建议方案:
(1)在系统中提供一种独立于表的窗口(我们可以叫它“完全独立窗口”),这种窗口不从属于任何一个表,在打开项目的时候,能够在连接外部数据源、打开数据表之前先加载!(这种窗口可以不插入表格亦可,仅加入操作性的控件),这样,即可实现上述功能!
(2)如果第1个方案比较麻烦,不好实现,可以把打开项目时的加载顺序改一下,改为:先加载内部表(包括内部表的窗口),然后再连接外部数据源,如果这样改一下顺序,应该也能实现上述功能。
   另外还有一个问题,因为我没有测试成功,我不太清楚在运行BeforeConnectOuterDataSource事件时,系统变量是否已经生效,如果生效的话就没有其他问题了。
    前几天我提了关于多窗口的问题,主要是为了实现两项功能,一是多窗口录入;二是多窗口查询。昨天我给你发的关于列表框的事例如果设置得比较成功,多窗口录入的问题基本可以解决;多窗口查询的问题我准备用关联表的方法进行解决(虽然可以实现,但为了实现多窗口同时查询需要额外设置很多关联,估计会降低系统运行的效率)。这几天我又一直在认真测试外部数据源(主要是SQL server)的相关功能。我关注的这些功能虽然对于很多用户来说并不常用,但如果要设计一个规范、正式的系统,这些功能是很关键、必不可少的。或者说,有了这些功能,用狐表设计的系统才真正像一个系统!我们不想在实际设计系统时,用户要求一种功能(或操作方式),我们告诉他说这种方式狐表不支持,需要变通;用户再提要求,我们再说不支持,这样给人的印像很不好,我们希望在别的软件中有的功能,狐表中尽量都能支持!真正满足各种用户的需要!
[此贴子已经被作者于2008-9-18 13:13:04编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2008/9/17 11:44:00 [显示全部帖子]

以下是引用贺老六在2008-9-17 11:35:00的发言:
呵呵,用配置文件,一点没有不专业的感觉呢,相反很多专业的软件都是这么做的。
至于后半部分的多窗口查询,建议将你邮件的内容单独发帖,我帮你做一个例子,其实实现起来很简单,而且foxtable从公测的第一天开始,就能实现的。

    是的,当然用修改配置文件方式的软件也有很多,但是,直接用登录窗口的专业软件同样也非常多(我可以随便举出10几个在国内很有知名度的软件),我希望狐表能够给用户多一种选择,多一种实现方案。萝卜白菜各有所爱,我们不想让狐表因为某项功能先放弃一部分用户,不能因为有一种解决方案了,就不再增加其它的实现方案了!我的建议实现起来应该不算太复杂,还是建议您认真考虑,让用户多一种方式供选择吧!
    多窗口录入的事例昨晚我已经发到您邮箱里了,不知您看明白了没有?什么时间能做好?等做好了,我再发到论坛上让更多的人学习!
    关于多窗口查询的功能,上次的邮件中我已经给您发过了一个说明,我觉得应该等您把事例做好了,让我看一下是否是我想要的功能,然后再放到论坛上,这样才便于大家学习啊!(如果我只发要求没有事例,大家是学习不到的)

[此贴子已经被作者于2008-9-17 11:45:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2008/9/17 12:45:00 [显示全部帖子]

以下是引用eric803在2008-9-17 12:40:00的发言:

我的思路是在系统中先开个内部表, 用以记录所有配置的远程连接数据源(NAME,IP,数据,USER,PWD),同时加一个"默认连接"标识字段, 系统初始化中BeforeConnectOuterDataSource事件中 取此内部表中"默认连接"标识字段为真的记录值动态建立数据源, 之后再按需要加载或创建外部表了,再加载用户登录窗口....

1. 可以实现数据源的灵活配置
2. 也解决了1楼的问题.

肯定不行,这是因为系统打开项目的加载顺序问题,在执行BeforeConnectOuterDataSource事件的时候,还没有加载内部表(包括内部表的窗口),所以,内部表中的所有数据在连接外部数据源时都是无效的.所以,如果不太复杂的话,我还是强烈建议贺老师改一下项目加载的顺序,先加载内部表和内部表的窗口,然后再执行BeforeConnectOuterDataSource事件并连接外部数据源.这只是改变一下加载顺序,应该很容易实现,不知道实际上是不是这样?


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2008/9/17 13:56:00 [显示全部帖子]

以下是引用狐仙在2008-9-17 13:25:00的发言:

foxtable可否专门写个修改配置文件的小软件,作为独立的程序,用时只要放入程序文件夹,运行时自动打开一个修改的小窗口,修改的数据保存在当前文件夹中的配置文件中。

这也是个好办法啊!在此基础上可以改进如下,在狐表的项目的外部数据源的相关部分加一项属性,打开项目时是否自动加载配置程序,设为True时每次运行该项目时都自动运行小程序,弹出一个窗口,输入IP地址、用户名等,输入确认后系统自动修改连接字符串,然后再继续加载项目;设为False时不弹出该配置程序,直接运行项目;也就是把IP.txt变为系统自带的一个小文件(或者保存在其他文件中),不再需要用户配置,每次启动项目时可动态修改它的内容。建议贺老师可以考虑,这样的实现思路应该是非常简单的,建议贺老师考虑。

[此贴子已经被作者于2008-9-17 14:02:04编辑过]

 回到顶部