以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 外部数据源的连接问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=74519) |
-- 作者:zhangchi96 -- 发布时间:2015/9/13 11:14:00 -- 外部数据源的连接问题 我设计的项目中,用到了外部数据源,当网络不通的时候启动会出现下列窗口
问题: 1、项目使用时总有外部数据源链接不通的时候,能否在启动时如果发现连接不通就不再连接,而不出现上述图标,直接弹出一个窗口说明一下,免得使用者不懂什么意思,也不知道如何处理
2、外部数据连接不通后,能否返回一个结果,或者给自定义的全局变量赋值,这样在某个窗体中根据这个值给使用者一个提示:【外部数据暂时无法连接】或【外部数据连接正常】
3、启动项目时,若外部数据无法连接,然后在启动项目后,可否间隔一端时间自动连接一次,一边刷新上述第二条中提到的全局变量。
敬请高手指导! [此贴子已经被作者于2015/9/13 11:15:54编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/9/13 12:14:00 -- 1、你可以关闭
2、看看 http://www.foxtable.com/help/topics/0682.htm
|
-- 作者:zhangchi96 -- 发布时间:2015/11/15 18:55:00 -- 我在运行程序时,为了防止普通用户在 外部数据源无法连通时,系统就没法运行的情况,写了如下代码: \'--- 准备连接外部数据源的时候,先测试数据源是否连通 Dim s As String = " Provider=SQLOLEDB.1;Password=。。。。。。。。。。。。" If Connections.TryConnect(s) = False Then MessageBox.Show("数据源无法连通!") Connections.Delete("外部数据源名称") Else MessageBox.Show("数据源连通!") End If 我想,既然无法连通,就删除建立的外部数据源名称,但红色的命令是无效的,这是为什么呢? 说明书上可写的是: 语法: Delete(Name) Name: 要删除的数据源名称。 [此贴子已经被作者于2015/11/15 19:03:58编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/11/15 19:53:00 -- 不用删除数据源,无法连通的时候,转成连接另一个数据库吧。你可以连接一个空的access数据库,或者是结构和sqlserver一样的access数据库。 |
-- 作者:zhangchi96 -- 发布时间:2015/11/15 23:00:00 -- 1、网络数据源 外部数据源名称:网络教育 (文件名称:杏花教育.mdf) 连接字符串: Provider=SQLOLEDB.1;Password=******;Persist Security Info=True;User ID=sa;Initial Catalog=杏花教育;Data Source=118.123.**.** 2、本地数据源 本地数据源名称: 本地教育 (文件名称:杏花教育.mdb) 连接字符串: Provider=Microsoft.Jet.OLEDB.4.0;Data Source= E:\\狐表\\金微教育\\空外部数据\\杏花教育.mdb;Persist Security Info=False 每个数据源里的三个表名(网络职工、网络事业、网络信息)都一样,结构一样,就是文件类型不同 请问 大红袍老师 ,如何写啊?我在BeforeConnectOuterDataSource属性里写了好几种都没成功(只要网络数据源没有连接,即使本地数据源连接成功了,在普通用户登录时就是 无法继续运行) [此贴子已经被作者于2015/11/15 23:00:42编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/11/16 9:19:00 -- 1、备份一下sqlserver数据库(最好)
2、添加一个access数据源,然后重定向sqlserver的表到access里。
3、拷贝一份access数据库备份好。
4、把access数据库重定向回sqlserver。这样,两个数据库的结构就一致了。
5、在BeforeConnectOuterDataSource改变连接字符串即可。 |
-- 作者:zhangchi96 -- 发布时间:2015/11/16 11:05:00 -- 以下三点都做到了,而且开机时测试正常 一、两个数据源: 1、网络数据源 2、本地数据源 二、连接字符串分别为: Provider=SQLOLEDB.1;Password=******;Persist Security Info=True;User ID=sa;Initial Catalog=杏花教育;Data Source=118.123.**.** Provider=Microsoft.Jet.OLEDB.4.0;Data Source= E:\\狐表\\金微教育\\空外部数据\\杏花教育.mdb;Persist Security Info=False 三、每个数据源里的三个表名(网络职工、网络事业、网络信息)都一样,结构一样,就是文件类型不同 四、BeforeConnectOuterDataSource属性里写了如下代码: Dim s1 As String = " Provider=SQLOLEDB.1;Password=******;Persist Security Info=True;User ID=sa;Initial Catalog=杏花教育;Data Source=118.123.**.** " If Connections.TryConnect(s1) = False Then MessageBox.Show("网络SQL数据源无法连通!") Else MessageBox.Show("网络SQL数据源连通!") End If Dim s2 As String = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source= E:\\狐表\\金微教育\\空外部数据\\杏花教育.mdb;Persist Security Info=False " If Connections.TryConnect(s2) = False Then MessageBox.Show("本地acc数据源无法连通!") Else MessageBox.Show("本地acc数据源连通!") End If 运行结果都是【连通】 现在是如何写代码,在网络不通无法连接服务器的时候,转成本地数据源而不会提出出错信息后关闭呢?外部数据源里可是建好了两个外部数据源了啊! 能不能添加 : Dim s1 As String = " Provider=SQLOLEDB.1;Password=。。。。。。教育;Data Source=118.123.10.25 " If Connections.TryConnect(s1) = False Then MessageBox.Show("主数据源无法连通!改本地数据源") e.name = "本地杏花教育" e.Ccolor: rgb(128, 0, 128); font-family: calibri; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; line-height: 21px; list-style: none;" 0px"="" auto;="" padding:="" 0px;"="">Else MessageBox.Show("主数据源连通!") End If [此贴子已经被作者于2015/11/16 11:48:15编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/11/16 11:08:00 -- Dim s1 As String = " Provider=SQLOLEDB.1;Password=******;Persist Security Info=True;User ID=sa;Initial Catalog=杏花教育;Data Source=118.123.**.** "
[此贴子已经被作者于2015/11/16 11:08:24编辑过]
|
-- 作者:zhangchi96 -- 发布时间:2015/11/16 15:08:00 -- 谢谢啦!谢谢大红袍老师,还有两个 小问题: 1、E:\\狐表\\金微教育\\空外部数据\\杏花教育.mdb 因为就是单机使用,所以可不可以写成相对路径啊(我写成了ProjectPath
&"\\空外部数据\\杏花教育.mdb),因为这样如果不改的话,换个电脑后,数据文件一定限制在这个位置了。 2、我想设置一个全局变量【网络数据源连接】,根据数据库的连接情况得到一个数0,1,2。。。,为以后是否可以向网络数据源写入文件,但是BeforeConnectOuterDataSource属性中的代码运行时没有发现全局变量的,以后用个什么代码可以测试数据源的连接从而获得全局变量的值呢?
|
-- 作者:大红袍 -- 发布时间:2015/11/16 15:11:00 -- 1、e.ProjectPath & "空外部数据\\杏花教育.mdb"
2、可以public变量 http://www.foxtable.com/help/topics/1842.htm
|