Foxtable(狐表)用户栏目专家坐堂 → 怎样把互联网数据源随时切换为本机数据源


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

主题:怎样把互联网数据源随时切换为本机数据源

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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
怎样把互联网数据源随时切换为本机数据源  发帖心情 Post By:2013/11/9 10:12:00 [显示全部帖子]

平时我在公司用开发版进行设计,连接公司的SQL数据库(局域网方式),周六日在家里设计,因为有时公司会停电,不能通过互联网连接公司服务器的SQL,我尝试更改数据源为移动硬盘上的一个MDB文件,但是屡次尝试都不成功。——我的MDB文件已经设置了和SQL一模一样的几个表。这种情况该如何处理呢?请有这方面经验的高手指教!谢谢
BTW:主键列已经有_Identify列(自动增量型)和"_Locked"列。
[此贴子已经被作者于2013-11-9 10:14:57编辑过]

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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
  发帖心情 Post By:2013/11/9 11:34:00 [显示全部帖子]

这个是项目事件代码,请看是否有何问题(用户有一个“数据源”属性)

BeforeConnectOuterDataSource

'''选择数据源

Dim ds As String = e.Name 'data source

Dim cs As String = "Provider=SQLOLEDB.1;Password=****;Persist Security Info=True;User ID=foxtable"

Dim ex As String = e.User.ExtendedValues("数据源")

Select Case ex

    Case "局域网"

        e.ConnectionString = cs & ";Data Source=rhl-server"

    Case "互联网"

        e.ConnectionString = cs & ";Data Source=rhlgzedg.vicp.cc"

    Case "本地"

e.ConnectionString  = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = J:\Tools\FoxTable\项目1_天平行数据库系统\Attachments\备用外数据源2.mdb;Persist Security Info=False"

    Case "手动"

        e.EditConnectionString()

    Case "自动"

        If Network.Ping("192.168.1.16") = True  Then '如果局域网接通

            e.ConnectionString = cs & ";Data Source=rhl-server"

        ElseIf Network.Ping("rhlgz.vicp.cc") = True  Then '采用互联网数据库

            e.ConnectionString = cs  & ";Data Source=rhlgzdeg.vicp.cc"

        Else '如果互联网无法接通,采用本地数据库

e.ConnectionString  = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = J:\Tools\FoxTable\项目1_天平行数据库系统\Attachments\备用外数据源2.mdb;Persist Security Info=False"

        End If

End Select

[此贴子已经被作者于2013-11-10 20:24:57编辑过]

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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
  发帖心情 Post By:2013/11/10 20:28:00 [显示全部帖子]

被河蟹的代码补上去了。不知道是否这论坛的bug,它居然会象word的错误检查一样在我的某些单词下加个红色下划线,然后把后面的内容删除掉,尝试了很多次才能补上去。
SQL和ACCESS的连接代码当然是不同的,我都是从软件自己生成的代码复制过来的不会有错。
另,楼上的应该没明白我的意思。
[此贴子已经被作者于2013-11-10 20:29:30编辑过]

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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
  发帖心情 Post By:2013/11/10 22:41:00 [显示全部帖子]

先是这两个提示,我可以理解:
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看
然后下面这些提示,每个表都会出现:

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

图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看
再后这个发不出(超过三个附件,很晕啊),下一个贴贴出来:




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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
  发帖心情 Post By:2013/11/10 22:42:00 [显示全部帖子]

再后是这个:
图片点击可在新窗口打开查看此主题相关图片如下:32.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
  发帖心情 Post By:2013/11/18 11:31:00 [显示全部帖子]

我终于知道错误的原样了,是因为ACCESS文件里的表没有主键,所以错误,我给每个表加上主键,问题解决,但是还有两点疑问:
1.打开项目仍然显示不能连接SQL数据源的错误提示,
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20131118112613.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20131118112627.png
图片点击可在新窗口打开查看

虽然可以通过手工设置连接字符串更正,但始终不够友好,其实这种情形可以避免吗?
2.我的access文件是由项目通过高速导出的,就是说高速导出的mdb文件是不包含主键的,这造成了以上的错误。我们都需要手工添加主键还是有更好的方法呢?
[此贴子已经被作者于2013-11-18 11:34:12编辑过]

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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
  发帖心情 Post By:2013/11/18 14:42:00 [显示全部帖子]

ToAccess 是把内部表保存到access,但是我的表全部都是sql的外部表了,不能转为mdb文件。
难道要先转为内部表再转为mdb,这么曲折吗?

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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
  发帖心情 Post By:2013/11/18 15:57:00 [显示全部帖子]

仍然是显示那个挥之不去的错误提示:
此主题相关图片如下:360截图20131118153652375.jpg
按此在新窗口浏览图片
为了测试,我在BeforeConnectOuterDataSource事件的一头一尾分别放置了一个 messagebox.show("step1")和  messagebox.show("step2"),在afterOpenProject的一头一尾分别放置了一个 messagebox.show("step3")和  messagebox.show("step4")。运行时,依次显示了:"step1"、"step2" 、以上“创建外部连接失败”的错误提示信息、"step3"、"step4"。

我就奇怪了,这个错误不是产生在BeforeConnectOuterDataSource和afterOpenProject里面,而是在这两个事件之间。而这两个事件之间是没有代码的,
此主题相关图片如下:qq截图20131118155317.png
按此在新窗口浏览图片
究竟这个错误提示是怎么产生的呢?

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


加好友 发短信
等级:幼狐 帖子:106 积分:1002 威望:0 精华:0 注册:2012/9/6 14:13:00
  发帖心情 Post By:2013/11/21 11:23:00 [显示全部帖子]

回复19楼:当我连接网络的时候,一切正常不会出现错误提示,只有当我切断网络的时候才会在step3和step4之间出现错误提示,而连接字符串是FT里设置外数据源的时候复制过来的,这时候能正常连接,很显然不是连接字符串的问题。
至于代码,我在3楼就已经贴出来了。
[此贴子已经被作者于2013-11-21 11:23:34编辑过]

 回到顶部