Foxtable(狐表)用户栏目专家坐堂 → [求助]数据源连接字符串,已解决


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

主题:[求助]数据源连接字符串,已解决

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


加好友 发短信
等级:幼狐 帖子:182 积分:1968 威望:0 精华:0 注册:2012/7/2 9:35:00
[求助]数据源连接字符串,已解决  发帖心情 Post By:2013/12/25 20:58:00 [只看该作者]

原因:看小说后,自己查找,原来无意中,多加了一个“\”。自己的一个乌龙
在BeforeConnectOuterDataSource事件中
1、只有一个数据源,但有两个连接字符串c1、c2
2、当c1不能连通时,就转到用c2连通;
代码设想如下:
  dim c1 as string = "provider ...a"
  dim c2 as string = "provider ...b"
    Try
        If Connections.TryConnect(c1) Then
            e.ConnectionString = c1
        Else
            If Connections.TryConnect(c2) Then
                e.ConnectionString = c2
            End If
        End If
    Catch ex As Exception
        messagebox.show(ex.message)    
    End Try
结果:如果c1不能连通时,就直接弹出要以开发者或管理员重设连接字符串的对话框;
        点击后,就直接退出了。(备注: 因为是自定义的登陆窗口,内置登陆窗口已用默认用户登陆。)

那么,1、如何绕开出错的提示框?2、如何做到:当c1不能连通时,就转到用c2连接呢?;

建议狐爸,在所有连接字符串都不能连通时,才弹出那个重设字符串的窗口不是更好吗?

[此贴子已经被作者于2013-12-25 22:29:01编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/25 21:05:00 [只看该作者]

 不弹出提示框?去项目属性那里设置,可以不弹出的;

 看代码,应该是可以转到c2连接的。

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


加好友 发短信
等级:幼狐 帖子:182 积分:1968 威望:0 精华:0 注册:2012/7/2 9:35:00
  发帖心情 Post By:2013/12/25 21:13:00 [只看该作者]

1、因为系统都进不了,进入软件设置更无从谈起;
2、看代码没用,结果就是转不了;
3、看大神或狐爸哈;

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/25 21:34:00 [只看该作者]

 楼主是否有测试过?我测试可以灵活切换的哦。

Dim c1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\foxtable\商业版\Code.mdb;Persist Security Info=False"
Dim c2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\foxtable\商业版\Help.mdb;Persist Security Info=False"
If Connections.TryConnect(c1) Then
    e.ConnectionString = c1
Else If Connections.TryConnect(c2) Then
    e.ConnectionString = c2
Else
    msgbox("没有数据源")
End If

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/12/25 21:38:00 [只看该作者]

逻辑问题:只有一个数据源,但有两个连接字符串c1、c2

     从上面说法完全可以理解为:c1、c2都同时指向了这个数据源,也就是多域名,都绑定了一个链接地址,您用的不是IP链接,但是您忽略了,C1链接不通时,C2同样链接不通(后台服务器异常的情况下)
     所以,您应该这样:准确地说,确定只有一个数据源的时候,在这里不能链接数据源时,就退出系统,除非您用备用数据源(多数据源方案)。

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


加好友 发短信
等级:幼狐 帖子:182 积分:1968 威望:0 精华:0 注册:2012/7/2 9:35:00
  发帖心情 Post By:2013/12/25 21:47:00 [只看该作者]

说明一下:没有自定义登陆窗口时,是可以转换的。

有自定义登陆窗口时,测试是不行的。
可以这样测试:1、c1为最初数据库所在的位置(如D盘下);
                    2、将数据库移到桌面,c2为数据库新的位置(桌面),
                    3、这样有自定义登陆窗口,并已内置窗口默认用户登陆,测试就会出错的。
[此贴子已经被作者于2013-12-25 21:57:48编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/25 21:56:00 [只看该作者]

 只要路径正确,而且数据源存在于路径,就一定能连接上,这是基本的。

 我测试的方法:把两个数据源剪切出来,报错;拷贝任意一个进去,可以连接登陆。

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/12/25 22:07:00 [只看该作者]

msgbox.show("没有数据源") '您不会是依葫芦画瓢画错了吧。

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


加好友 发短信
等级:幼狐 帖子:182 积分:1968 威望:0 精华:0 注册:2012/7/2 9:35:00
  发帖心情 Post By:2013/12/25 22:27:00 [只看该作者]

自己狂晕,搞了半天,竟然是一个乌龙。
在新的连接字符串的数据库地址中,无意中多加了一个“\”。总怀疑是代码逻辑问题。没想到是这个。

感谢大家的回复,谢谢!不好意思,小心写代码,以此共勉!

 回到顶部