计划中应用程序的操作顺序是这样的:
1、用户进入项目文件
2、在内部表中选择备选的会计软件各类和版本,并按提示设置要连接的数据源,如SQL、.MDB、.DBF、.TXT等(后面两个好解决,不是问题)
3、根据这个会计软件名称、版本号和设置的数据源,开发者用if、QueryBuilder、SQLCommand取得查询表并计算它们,再用数据填充将它们引入到内部表中。
这样可以实现提取会计软件数据库中有用信息的任务。
可是现在,BeforeConnectOuterDataSource 在事件中设置的连接字符串只是在打开项目准备连接外部数据源时执行,这时内部表没有加载,无法知道用户设置的信息,开发者怎未卜先知用户想连接那种数据库呢?
我想了一个变通的方法:先让用户进入项目,设置数据源信息,这时系统会自动重新打开项目并连接外部数据源,可是在重新连接的过程中卸载了内部表中设置好了的会计软件各类和版本信息,开发者又如何能运用if、QueryBuilder、SQLCommand取得想要的查询表呢?要知道每一种软件的表名和字段不可能一样的,针对每一种会计软件都有不同的QueryBuilder、SQLCommand。----可见这是行不通的。
所以建议:
1、准许进入项目时,不连接任何的外部数据源(不论用户身份),当然也不加载外部数据表,这个只要在BeforeConnectOuterDataSource事件中加一个属性就可以了;
2、准许在项目打开的情况下按开发者设置的连接字符串重新加载外部数据源(只有内部数据表),当然如果已经连接了外部数据源的话,这个是不执行的(这样做的难度可能比较大),这个是与1配套的。
3、注意,2中的连接字符串不是在BeforeConnectOuterDataSource事件中设置的,而是将连接字符串写在某个控件的事件中(比如按键),因为:开发者不能未卜先知用户想要的数据库种类和地址,这些信息只有通过项目中的窗口信息取得。
不知还有没有其他的解决方法能达到本贴提出的“顺序”问题,请老大和版主大家来讨论一下这个。
[此贴子已经被作者于2008-12-11 16:26:04编辑过]