Foxtable(狐表)用户栏目专家坐堂 → 外部数据源的连接问题


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

主题:外部数据源的连接问题

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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
外部数据源的连接问题  发帖心情 Post By:2015/9/13 11:14:00 [只看该作者]

我设计的项目中,用到了外部数据源,当网络不通的时候启动会出现下列窗口

 


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

 



图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

问题:

1、项目使用时总有外部数据源链接不通的时候,能否在启动时如果发现连接不通就不再连接,而不出现上述图标,直接弹出一个窗口说明一下,免得使用者不懂什么意思,也不知道如何处理

 

2、外部数据连接不通后,能否返回一个结果,或者给自定义的全局变量赋值,这样在某个窗体中根据这个值给使用者一个提示:【外部数据暂时无法连接】或【外部数据连接正常】

 

3、启动项目时,若外部数据无法连接,然后在启动项目后,可否间隔一端时间自动连接一次,一边刷新上述第二条中提到的全局变量。

 

敬请高手指导!

[此贴子已经被作者于2015/9/13 11:15:54编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/13 12:14:00 [只看该作者]

1、你可以关闭

 

 
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150913121400.jpg
图片点击可在新窗口打开查看

 

2、看看 http://www.foxtable.com/help/topics/0682.htm

 



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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/15 19:53:00 [只看该作者]

不用删除数据源,无法连通的时候,转成连接另一个数据库吧。你可以连接一个空的access数据库,或者是结构和sqlserver一样的access数据库。

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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/16 9:19:00 [只看该作者]

1、备份一下sqlserver数据库(最好)

 

2、添加一个access数据源,然后重定向sqlserver的表到access里。

 

3、拷贝一份access数据库备份好。

 

4、把access数据库重定向回sqlserver。这样,两个数据库的结构就一致了。

 

5、在BeforeConnectOuterDataSource改变连接字符串即可。


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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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.**.** "
If Connections.TryConnect(s1) = False Then
    MessageBox.Show("网络SQL数据源无法连通!")
    Dim s2 As String = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\狐表\金微教育\空外部数据\杏花教育.mdb;Persist Security Info=False "
    e.ConnectionString = s2
Else
    MessageBox.Show("网络SQL数据源连通!")
End If

 

[此贴子已经被作者于2015/11/16 11:08:24编辑过]

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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2015/11/16 15:08:00 [只看该作者]

谢谢啦!谢谢大红袍老师,还有两个 小问题:

1、E:\狐表\金微教育\空外部数据\杏花教育.mdb   因为就是单机使用,所以可不可以写成相对路径啊(我写成了ProjectPath &"\空外部数据\杏花教育.mdb),因为这样如果不改的话,换个电脑后,数据文件一定限制在这个位置了。

2、我想设置一个全局变量【网络数据源连接】,根据数据库的连接情况得到一个数0,1,2。。。,为以后是否可以向网络数据源写入文件,但是BeforeConnectOuterDataSource属性中的代码运行时没有发现全局变量的,以后用个什么代码可以测试数据源的连接从而获得全局变量的值呢?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/16 15:11:00 [只看该作者]

1、e.ProjectPath & "空外部数据\杏花教育.mdb"

 

2、可以public变量 http://www.foxtable.com/help/topics/1842.htm

 


 回到顶部
总数 24 1 2 3 下一页