Foxtable(狐表)用户栏目专家坐堂 → 能把SQL数据源临时切换成本地mdb数据源吗?


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

主题:能把SQL数据源临时切换成本地mdb数据源吗?

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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
能把SQL数据源临时切换成本地mdb数据源吗?  发帖心情 Post By:2013/8/16 15:26:00 [只看该作者]

我的项目使用SQL数据源。我已经在beforeconnectouterdatasource事件中成功进行了局域网和互联网数据源的切换。但当网络不通时,远程数据源不能连接,希望能用mdb文件做数据源,应该怎样设置呢?
也就是说,把外部表的数据源由SQL改为mdb文件,可以这样做吗?

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/8/16 15:27:00 [只看该作者]

beforeconnectouterdatasource中更改一下连接字符串 改为这个MDB文件的连接字符串即可.

不过随之会有一些小问题,对应的SQL函数ACCESS不一定有,就会报错,  日期也会报错 一个是用单引号 一个是用#号

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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
  发帖心情 Post By:2013/8/16 16:34:00 [只看该作者]

不行啊,我就是改为mdb的字符串的,一样报错,代码如下:即使用手动,或断网后用自动都错。我觉得是否还有些步骤未做?因为外部表指向数据源为SQL,但是下面的代码好像无说明哪个外部表更改了数据源。
Dim ds As String = e.Name 'data source
Dim cs As String = "Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=tphfoxtable"
Dim ex As String = e.User.ExtendedValues("数据源")
Select Case ex
    Case "局域网"
        e.ConnectionString = cs & ";Data Source=rhlserver"
          Case "互联网"
        e.ConnectionString = cs & ";Data Source=rhlgz.vip.cc"
    Case "本地"
            If FileSys.DirectoryExists("J:\Tools\FoxTable\项目1_天平行数据库系统\Attachments\备用外数据源2.mdb") Then
e.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = J:\Tools\FoxTable\项目1_天平行数据库系统\Attachments\备用外数据源2.mdb;Persist Security Info=False"
            End If
    Case "手动"
        e.EditConnectionString()
    Case "自动"
        If Network.Ping("192.168.1.16") = True  Then '如果局域网接通
            e.ConnectionString = cs & ";Data Source=rhlserver"
        ElseIf Network.Ping("rhlgz.vicp.cc") = True  Then '采用互联网数据库
            e.ConnectionString = cs  & ";Data Source=rhlgz.vip.cc"
        Else '如果互联网无法接通,采用本地数据库
            If FileSys.DirectoryExists("J:\Tools\FoxTable\项目1_天平行数据库系统\Attachments\备用外数据源2.mdb") Then
If FileSys.DirectoryExists("J:\Tools\FoxTable\项目1_天平行数据库系统\Attachments\备用外数据源2.mdb") Then
e.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = J:\Tools\FoxTable\项目1_天平行数据库系统\Attachments\备用外数据源2.mdb;Persist Security Info=False"
            End If
        End If
End Select
报错如下:
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130816170605.png
图片点击可在新窗口打开查看
不是连接字符串的问题,已经正确连接到mdb了,但是似乎外部表有问题。mdb文件结构跟sql一样的,其实就是由SQL导出来的。

[此贴子已经被作者于2013-8-16 17:31:10编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/8/16 16:46:00 [只看该作者]

报什么错?  你的代码和谐了. 可能你设置的连接字符串不对.

 回到顶部